sql数据库一些查找删除方法

sql数据库一些查找删除方法
sql数据库一些查找删除方法

查找数据库中重复数据T-SQL

========第一篇=========

在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:

select data_guid from adam_entity_datas a where a.rowid > (select min (b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid) 如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高效率select data_guid from adam_entity_datas where data_guid in (select da ta_guid from adam_entity_datas group by data_guid having count(*) > 1)

此方法查询出所有重复记录了,也就是说,只要是重复的就选出来,下面的语句也许更高效

select data_guid from adam_entity_datas where rowid in (select rid fr om (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m <> 1)

目前只知道这三种比较有效的方法。

第一种方法比较好理解,但是最慢,第二种方法最快,但是选出来的记录是所有重复的记录,而不是一个重复记录的列表,第三种方法,我认为最好。

========第二篇=========

select usercode,count(*) from ptype group by usercode h aving count(*) >1

========第三篇=========

找出重复记录的ID:

select ID from

( select ID ,count(*) as Cnt

from 要消除重复的表

group by ID

) T1

where https://www.360docs.net/doc/2116172891.html,t>1

删除数据库中重复数据的几个方法

数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……

方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from

表名 group by 主字段 having count(*) > 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

方法二

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select distinct * from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录,可以按以下方法删除

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

2、这类重复问题通常要求保留重复记录中的第一条记录,*作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from

#tmp2)

最后一个select即得到了Name,Address不重复的结果集

更改数据库中表的所属用户的两个方法

大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……

========第四篇=========

如何查询数据库中的重复记录?

比如说有个表中的数据是这样:

---------

a

a

a

b

b

c

---------

查询出的结果是:

记录数量

a 3

b 2

c 1

怎样写这个SQL语句?

-----------------------

select distinct(name),count(*) from tabname group by name;

-------------------------------------

想出来了,这样就可以排序了。

select a1,count(a1) as total from tablename group by a1 order by to tal desc

--------------------------------------

select distinct(a1),count(a1) as total from tablename group by a1 ord er by total desc

加个distinct更有效率

-------------------------------------------------------------- select p.*, m.* from table1 p left join table2 m on p.item1=m.item2 w here p.item3='#$#@%$@' order by p.item3 asc limit 10

就类似这么写

========第五篇=========

如何查找数据库中的重复记录? 能在Access中用的方法

----------------------------------------------------------------------

select *

from 表 A inner join (select 字段1,字段2 from 表 group by 字段1,字段2 having Count(*)>1) B on A.字段1=B.字段1 and A.字段2=B.字段2

--------------------------------------------------------

问题:

根据其中几个字段判断重复,只保留一条记录,但是要显示全部字段,怎么查询,谢谢!!

比如

字段1 字段2 字段3 字段4

a b c 1

a b c 1

a b d 2

a b d 3

b b d 2

想得到的结果为

a b c 1

a b d 2(或者3)

b b d 2

说明,根据字段1,2,3组合不重复,字段4 不考虑,得到了3个记录

但是也要显示字段4。

方法一:

可以用临时表的方法来解决:

CurrentProject.Connection.Execute "drop table temptable" CurrentProject.Connection.Execute "select * into temptable from 表2 where 1=2"

CurrentProject.Connection.Execute "insert into temptable(字段1,字段2,字段3) SELECT DISTINCT 表2.字段1, 表2.字段2, 表2.字段3 FROM 表2;" CurrentProject.Connection.Execute "UPDATE temptable INNER JOIN 表2 O N (表2.字段1 = temptable.字段1) AND (表2.字段2 = temptable.字段2)

AND (表2.字段3 = temptable.字段3) SET temptable.字段4 = [表2].[字段4];"

方法二:

可以直接使用一个SELECT查询筛选出需要的数据:

可以假定第四字段都选值最小的

SELECT [1],[2], [3], Min([4]) AS Min4

FROM 表1

GROUP BY 表1.[1], 表1.[2], 表1.[3];

问题:

表2

id NAME r1 r2

1 1 w ee

1 1 1 1232

1 2 123 123

1 2 12 434

1 2 123 123

2 1 12

3 123

ID 为数值,NAME 为字符。每条记录没有唯一标识。

要求取得 ID 和 NAME 合并后不重复的记录,如有重复保留其中一条即可,但要显示所有记录。

回答:

SELECT a.*, (select top 1 r1 from 表2 as a1 where a1.id=a.id and a1. name=https://www.360docs.net/doc/2116172891.html,) AS r1, (select top 1 r2 from 表2 as a2 where a2.id=a.id and https://www.360docs.net/doc/2116172891.html,=https://www.360docs.net/doc/2116172891.html,) AS r2

FROM [SELECT DISTINCT 表2.id, 表https://www.360docs.net/doc/2116172891.html,

FROM 表2]. AS a;

SELECT a.*, dlookup("r1","表2","id=" & a.id & " and name='"& a.nam e & "'") AS r1, dlookup("r2","表2","id=" & a.id & " and name='"& a. name & "'") AS r2

FROM [SELECT DISTINCT 表2.id, 表https://www.360docs.net/doc/2116172891.html,

FROM 表2]. AS a;

注意,上述代码中由于没有唯一标识列,因此显示的 R1 R2 的先后次序无从确定,一般是按输入的先后顺序,但是微软没有官方资料说明到底按哪个顺序,请网友注意。

请注意,上述表2为没有唯一标识字段,如果现在再建立一个自动编号字段“主键”则可以用以下代码

SELECT a.ID, https://www.360docs.net/doc/2116172891.html,, b.r1, b.r2, b.主键

FROM (SELECT 表2.id, 表https://www.360docs.net/doc/2116172891.html,, Min(表2.主键) AS 主键

FROM 表2

GROUP BY 表2.id, 表https://www.360docs.net/doc/2116172891.html,) AS a inner JOIN 表2 AS b ON a.主键=b.主键;

========第六篇=========

1.查询数据库中重复的记录:

select realname,count(*) from users group by realname having count (*)>1

========第七篇=========

SELECT T0.ItemCode, T0.ItemName FROM OITM T0 WHERE exists (select 1 f rom OITM A where A.CODEBARS = TO.CODEBARS And A.ItemCode < > TO.ItemC ode)

========第八篇=========

相信很多人在查询数据库时都会碰到检索某表中不重复记录的时候,提到检索不重复记录,马上想到的肯定是Distinct或者Group By分组,

小弟在初次使用的时候碰到了一些麻烦,这里拿出来与大家分享,希望对更多的朋友有所帮助!

先看看数据库表结构:

表名: TEST 字段: Id,A,B,C,D

其中B字段包含重复值;

Id

A B

C D

1

11 a

34 bvb

2

22 a

35 fgfg

3

33 d

ht sdf

4

44 a

345 de

5

55 c

sfsf sscv

6

66 b

rt fg

下面我们来看看用什么样的SQL语句检索出不含重复记录的数据:

使用Distinct关键字

Distinct关键字主要用来在SELECT查询记录中根据某指定字段的值去除重复记录

SELECT DISTINCT [字段名] FROM [表名] WHERE [检索条件字句] 所以用这样一句SQL就可以去掉重复项了:

[color=]SELECT DISTINCT (B) FROM TEST

但是:

这里有一个非常非常需要注意的地方:

SELECT DISTINCT [字段名]后面不能再跟其他的字段,否则检索出来的记录仍然会含有重复项;

错误写法:

SELECT DISTINCT [字段名] ,[其他字段名] FROM [表名] WHERE [检索条件字句]

实际上,我们上面SQL语句结果集里就只有B字段;(一般情况下,这种结果应该是很难满足需求的)

如果我们的记录集里还需要有其他字段值,那怎么办呢?

实际上,我们完全可以用另一种办法来解决问题;只是需要用到子查询而已!

使用GROUP BY 分组

有一点需要注意:

使用带有GROUP BY字句的查询语句时,在SELECT列表指定的列要么是G ROUP BY 指定的列,要么包含聚合组函数

所以用这样一句SQL就可以去掉重复项了:

[color=]SELECT * FROM TEST WHERE id in (SELECT MIN(id) FROM TEST GROU P BY B)

这样就得到我们想要的结果集了:

Id

A B

C D

1

11 a

34 bvb

3

33 d

ht sdf

5

55 c

sfsf sscv

6

66 b

rt fg

========第九篇======mysql===

----------------------------------------------------------------------

我的mysql表中的帐号是8位的随机数,我现在想查帐号有没有重复的,应该怎样操作,

----------------------------------------------------------------------

select count(*) as num,帐号 from TABLE GROUP BY 帐号

num > 1 就有重复!

========第十篇====(着急的人直接看红字)=====

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有d istinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct 只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用d istinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。

下面先来看看例子:

table

id name

1 a

2 b

3 c

4 c

5 b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct 去掉多余的重复记录。

select distinct name from table

得到的结果是:

name

a

b

c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

id name

1 a

2 b

3 c

4 c

5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把d istinct放到where条件里?能,照样报错。。。。。。。

很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。

拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。

试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(dist inct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。

报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。

再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。

终于搞定了,不过这样一来,又必须要求客户也升级了。

突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?

赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。

现在将完整语句放出:

select *, count(distinct name) from table group by name

结果:

id name count(distinct name)

1 a 1

2 b 1

3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧(对了,还有容容那家伙),现在拿出来希望大家不要被这问题折腾。

哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,发给容容放网站上去,我继续忙碌。。。。。。

-----------------------------------------------------------------------------------------

更郁闷的事情发生了,在准备提交时容容发现,有更简单的解决方法。。。。。。select id, name from table group by name

select * from table group by name

========第十一篇=========

查询及删除重复记录的方法

(一)

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from people

where peopleId in (select peopleId from people group by peopleId havi ng count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people

where peopleId in (select peopleId from people group by peopleId havi ng count(peopleId) > 1)

and rowid not in (select min(rowid) from people group by peopleId hav ing count(peopleId )>1)

3、查找表中多余的重复记录(多个字段)

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

(二)

比方说

在A表中存在一个字段“name”,

而且不同记录之间的“name”值有可能会相同,

现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同大则如下:

Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 (三)

方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 gr oup by 主字段 having count(*) >; 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

方法二

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select distinct * from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoI D

select * from #Tmp where autoID in(select autoID from #tmp2) 最后一个select即得到了Name,Address不重复的结果集(但多了一个au toID字段,实际写时可以写在select子句中省去此列)

(四)

查询重复

select * from tablename where id in (

select id from tablename

group by id

having count(id) > 1

)

SQL语句的添加、删除、修改

SQL语句的添加、删除、修改 SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来? {select * from 数据表 where 字段名 between 值1 and 值2 insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …) update 数据表 set 字段名=字段值 where 条件表达式 delete from 数据表 where 条件表达式} 添加、删除、修改使用db.Execute(Sql)命令执行操作 ╔--------------------╗ ☆数据记录筛选☆ ╚--------------------╝ 注意:单双引号的用法可能有误(没有测式) Sql = "Select Distinct 字段名 From 数据表" Distinct函数,查询数据库存表内不重复的记录 Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# " count函数,查询数库表内有多少条记录,“字段名1”是指同一字段 例: set rs=conn.execute("select count(id) as idnum from news") response.write rs("idnum") sql="select * from 数据表 where 字段名 between 值1 and 值2" Sql="select * from 数据表where 字段名between #2003-8-10# and #2003-8-12#" 在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。 select * from tb_name where datetime between #2003-8-10# and #2003-8-12# 字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。

数据库增删改查基本语句

数据库增删改查基本语句 adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写select * from master.dbo.sysobjects ,jm_https://www.360docs.net/doc/2116172891.html,ers 多库查询 adotable1.sort:='字段名称ASC' adotable排序 SQL常用语句一览 sp_password null,'新密码','sa' 修改数据库密码 (1)数据记录筛选: sql="select * from 数据表where 字段名=字段值orderby 字段名[desc] " sql="select * from 数据表where 字段名like '%字段值%' orderby 字段名[desc]" sql="select top10 * from 数据表where 字段名orderby 字段名[desc]" sql="select * from 数据表where 字段名in('值1','值2','值3')" sql="select * from 数据表where 字段名between 值1 and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值n where 条件表达式" (3)删除数据记录: sql="delete from 数据表where 条件表达式" sql="delete from 数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目标数据表select * from 源数据表"(把源数据表的记录添加到目标数据表)

SQL数据库中的增删改查总结1

一、增:有2种方法 1.使用insert插入单行数据: 语法:insert [into]<表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values ('邢金聪','男','1990/6/15') 注意:如果省略表名,将依次插入所有列 2.使用insert,select语句将现有表中的数据添加到已有的新表中 语法:insert into <已有的新表> <列名> select <原表列名> from <原表名> 例:insert into addressList ('姓名','地址','电子邮件')selectname,address,email from Strdents 注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致 二、删:有2中方法 1.使用delete删除数据某些数据 语法:delete from <表名> [where <删除条件>] 例:delete from awhere name='邢金聪'(删除表a中列值为邢金聪的行) 注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名 2.使用truncate table 删除整个表的数据

语法:truncate table<表名> 例:truncate table addressList 注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能 用于有外建约束引用的表 三、改 使用update更新修改数据 语法:update <表名> set <列名=更新值> [where <更新条件>] 例:truncate table addressList 注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能 用于有外建约束引用的表 四、查 1.普通查询 语法:select <列名> from <表名> [where <查询条件表达试>] [order by<排序的列 名>[asc或desc]] 1).查询所有数据行和列 例:select * from a 说明:查询a表中所有行和 2).查询部分行列--条件查询 例:select i,j,kfrom a where f=5 说明:查询表a中f=5的所有行,并显示i,j,k3列

关于数据库删除表的SQL语句的区别

数据库中的有关表删除的SQL关键字有drop,delete以及truncate三个。 它们的SQL语句格式如下:(假如表名为Table_name) drop table Table_name; --------------------完全删除表 delete Table_name;-----------------删除表内数据,保留表结构 truncate table Table_name;-----------------完全删除表内数据,保留表结构delete from Table_name where 条件;-------------------------------删除相关数据下面举例说明它们的区别: 首先,创建一个表Users create table Users( id int identity(1,1), name varchar(20) ) 执行;再往表内插入数据: insert into Users values('A'); insert into Users(name) values('B'); 执行;此时select*from Users; 结果如下: ①如果执行删除语句: delete Users; select*from Users; 结果是 此时再插入数据: insert into Users(name) values('CC'); select*from Users; 结果是: ②如果执行删除语句: truncate table Users; select*from Users; 结果是:

此时再插入数据: insert into Users(name) values('CC'); select*from Users; 结果是: ③如果执行删除语句: drop table Users; 则完全删除表,此时无论执行select*from Users;还是insert into Users(name) values('CC'); 都会提示表Users无效

SQL语句创建数据库及修改、删除数据库

使用SQL语句: CREATE DATABASE语句创建数据库 CREATE DATABASE database_name [ON [PRIMARY] [ [ ,...n] [ , [ ,...n ] ] [LOG ON { [ ,...n ] } ] ::= { ( NAME=logical_file_name , FILENAME = 'os_file_name' [ SIZE=size [KB|MB|GB|TB] ] [ MAXSIZE={max_size [KB|MB|GB|TB] | UNLIMITED } ] [FILEGROWTH=growth_increment[KB|MB|GB|TB|% ] ] ) [ ,...n ] } ::= { FILEGROUP filegroup_name [ ,...n ] } T-SQL语法说明: “[ ]”中的内容表示可以省略,省略时系统取默认值。 “{ }[ ,…n ]”表示花括号中的内容可以重复书写n次,必须用逗号隔开。“|”表示相邻前后两项只能任取一项。 一条语句可以分成多行书写,但多条语句不允许写在一行。 CREATE DATABASE 数据库名 [ ON [PRIMARY] { ( [NAME=数据文件的逻辑名称,] FILENAME=‘数据文件的物理名称’, [SIZE=数据文件的初始大小[ MB(默认) | KB | GB ] , ] [MAXSIZE={ 数据文件的最大容量[ MB | KB | GB] |UNLIMITED(不受限制) } ,] [FILEGROWTH=数据文件的增长量[ MB | KB | GB | % ] ] ) } [ , …n ]

SQL语句创建数据库及修改、删除数据库

1、使用SQL语句: CREATE DATABASE语句创建数据库 CREATE DATABASE database_name [ON [PRIMARY] [<> [ ,...n] [ , <> [ ,...n ] ] [LOG ON { <> [ ,...n ] } ] <>::= { ( NAME=logical_ , = 'os_' [ SIZE=size [KB|MB|GB|TB] ] [ MAXSIZE={max_size [KB|MB|GB|TB] | UNLIMITED } ] [[KB|MB|GB|TB|% ] ] ) [ ,...n ] } <> ::= { <> [ ,...n ] } T-SQL语法说明: ●“[ ]”中的内容表示可以省略,省略时系统取默认值。 ●“{ }[ ,…n ]”表示花括号中的内容可以重复书写n次,必须用逗号隔 开。 ●“|”表示相邻前后两项只能任取一项。 ●一条语句可以分成多行书写,但多条语句不允许写在一行。 CREATE DATABASE 数据库名 [ ON [PRIMARY] { ( [NAME=数据文件的逻辑名称,] ‘数据文件的物理名称’, [SIZE=数据文件的初始大小[ MB(默认) | KB | GB ] , ] [MAXSIZE={ 数据文件的最大容量[ MB | KB | GB] |UNLIMITED(不受限制) } ,] [数据文件的增长量[ MB | KB | GB | % ] ] )

} [ , …n ] [ 文件组名 { ( [NAME=数据文件的逻辑名称,] [‘数据文件的物理名称’, ] [SIZE=数据文件的初始大小[ MB | KB | GB ] ,] [MAXSIZE={ 数据文件的最大容量[ MB | KB | GB ] | UNLIMITED } ,] [数据文件的增长量[ MB | KB | GB | % ] ] ) } [ , …n ] ] LOG ON { ( [NAME=事务日志文件的逻辑名称,] [‘事务日志文件的物理名称’,] [SIZE=事务日志文件的初始大小[MB | KB | GB ] ,] [MAXSIZE={ 事务日志文件的最大容量[ MB | KB | GB ] | UNLIMITED } ,] [事务日志文件的增长量[ MB|KB|GB| % ]] ) } [ , …n ] ] 说明: ●ON 表示需根据后面的参数创建该数据库。 ●LOG ON 子句用于根据后面的参数创建该数据库的事务日志文件。 ●PRIMARY指定后面定义的数据文件属于主文件组PRIMARY,也可以加入 用户自己创建的文件组。 ●NAME=‘数据文件的逻辑名称’:是该文件在系统中使用的标识名称,相 当于别名。 ●‘数据文件的物理名称’:指定文件的实际名称,包括路径和后缀。 ●UNLIMITED 表示在磁盘容量允许情况下不受限制。 ●文件容量默认单位为MB字节,也可以使用KB单位。 例题一: 用T-SQL语句在C:\DATA\文件夹中创建一个教师信息数据库teacher,该数据库包含: 1、一个主数据文件逻辑名‘teacherdata1 ’, 物理名‘C:\DATA\tdata1.mdf ’, 初始容量1MB,最大容量10MB,每次增长量为15%。 2、一个辅助数据文件逻辑名‘teacherdata2 ’ 物理名‘C:\DATA\tdata2.ndf ’, 初始容量2MB,最大容量15MB,每次增长量为2MB。

sql删除表中某一指定数据的方法

sql删除表中某一指定数据的方法 如果您需要删除SQL数据库所有表的所有字段中含有的某一指定数据,应该如何做呢?下面就将为您介绍如何使用SQL语句解决这个问题(指定删除的数据为XX),供您参考。 1 an 12345 aXX 2 XXb 56789 cXX . ... ... ... .. ... .... .... 执行后 1 an 12345 a 2 B 56789 c . ... ... ... .. ... .... .... 声明下所有表所有字段中包含XX 的—————————————————————————————— 程序代码:

DECLARE @tabName VARCHAR(40),@colName VARCHAR(40) DECLARE @sql VARCHAR(2000) DECLARE tabCursor CURSOR FOR Select name From sysobjects Where xtype = 'u' AND name <> 'dtproperties' OPEN tabCursor FETCH NEXT FROM tabCursor INTO @tabName WHILE @@fetch_status = 0 BEGIN SET @sql = 'Update ' + @tabName + ' SET ' DECLARE colCursor CURSOR FOR Select Name FROM SysColumns Where id=Object_Id(@tabName) OPEN colCursor FETCH NEXT FROM colCursor INTO @colName WHILE @@fetch_status = 0 BEGIN SET @sql = @sql + @colName + '=REPLACE(' +@colName+ ',''XX'',''''),' FETCH NEXT FROM colCursor INTO @colName

数据库SQL语句大全

SQL语句大全--语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 -数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征 --程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标

删除数据的sql语句

truncate table --删除单个站点的相关数据【只删除数据,不删除基本信息】 --总表 DELETE FROM [In_Port_Log] where Hardware_Id='' DELETE FROM [In_Port_LogError] where Hardware_Id='' --降雨 DELETE FROM [HY_OBP_G] where STCD = '' --降雨记录表 DELETE FROM [ST_PPTN_R] where STCD = '' --降雨处理表 DELETE FROM [HY_DP_C] where STCD = '' --降雨日记录 DELETE FROM [HY_MTP_E] where STCD = '' --降雨月纪录 DELETE FROM [HY_YRP_F] where STCD = '' --降雨年纪录 DELETE FROM [Ep_YQ_JC] where STCD = '' --预警 DELETE FROM [LH_P_R] where STCD = '' --实时表 DELETE FROM [LH_P_DAY] where STCD = '' --降雨统计表:日表 DELETE FROM [LH_P_MONTH] where STCD = '' --降雨统计表:月表 --流量 DELETE FROM [ST_RIVER_R] where STCD = '' --河道处理表 DELETE FROM [HY_DQ_C] where STCD = '' --流量日记录 DELETE FROM [HY_MTQ_E] where STCD = '' --流量月纪录 DELETE FROM [HY_YRQ_F] where STCD = '' --流量年纪录 DELETE FROM [LH_Q_DAY] where STCD = '' --河道统计表:日表 DELETE FROM [LH_Q_MONTH] where STCD = '' --河道统计表:月表 DELETE FROM [LH_Q_DAY_MinMaxAvg] where STCD = '' --河道统计表:最大最小值表 --库容 DELETE FROM [ST_RSVR_R] where STCD = '' --库容处理表 DELETE FROM [HY_DV_C] where STCD = '' --库容日记录 DELETE FROM [HY_MTV_E] where STCD = '' --库容月纪录 DELETE FROM [HY_YRV_F] where STCD = '' --库容年纪录 DELETE FROM [LH_V_DAY] where STCD = '' --库容统计表:日表 DELETE FROM [LH_V_MONTH] where STCD = '' --库容统计表:月表 DELETE FROM [LH_V_DAY_MinMaxAvg] where STCD = '' --库容统计表:最大最小值表 --水位 DELETE FROM [HY_DZ_C] where STCD = '' --水位日记录 DELETE FROM [HY_MTZ_E] where STCD = '' --水位月纪录 DELETE FROM [HY_YRZ_F] where STCD = '' --水位年纪录 DELETE FROM [HY_OBZ_G] where STCD = '' --水位记录表 DELETE FROM [LH_Z_DAY_JD] where STCD = '' --水位统计表:日表 DELETE FROM [LH_Z_MONTH_JD] where STCD = '' --水位统计表:月表 DELETE FROM [LH_Z_DAY_JD_MinMaxAvg] where STCD = '' --水位统计表:最大最小值表 DELETE FROM [LH_Z_DAY_XD] where STCD = '' --水位统计表:日表 DELETE FROM [LH_Z_MONTH_XD] where STCD = '' --水位统计表:月表

SQL删除语句怎么写

分享高性能批量插入和批量删除sql语句写法 一,技术水平总能在扯皮和吹毛求疵中得到提高。如果从来不“求疵”,可能就不会知道if(str != )不如if(str != string.empty)高效、批量插入和删除的sql语句是要那样写才执行最快、接口和抽象类的区别不仅是语言层面、原来权限管理是要这样设计的、某个类那样设计职责才更单一更易于扩展…… 本来前两篇文章是学习cnblogs编辑控件用的,看到跟贴的朋友询问批量插入和批量删除的问题,决定整理成文和大家分享。 我们这里讨论的只是普通sql语句如何写更高效,不考虑特殊的用文件中转等导入方式,毕竟在代码中调用sql语句或存储过程才更方便。 批量删除很简单,大家可能都用过: delete from testtable where id in (1, 3, 54, 68) --sql2005下运行通过当用户在界面上不连续的选择多项进行删除时,该语句比循环调用多次删除或多条delete语句中间加分号一次调用等方法都高效的多。 本文重点讲述的是批量插入的写法: sql写法: insert into testtable select 1, abc union select 2, bcd union select 3, cde--testtable表没有主键,id不是主键 oracle写法: insert into testtable select 1, abc from daul union select 2, bcd from daul --testtable表没有主键,id不是主键 曾经测试过,这种写法插入1000条数据比循环调用1000次insert或1000条insert 语句简单叠加一次调用要高效得多,大概快20多倍(调试状态不是太准)。其实很简单,就用了个union(union all 也可以),但当时得出测试结果时还是很惊喜的。 要得出这个结果需要两个条件: 1、表不能有主键或者主键是数据库默认的(sql用自动递增列,oracle用序列) 1 以上两条任意一条不满足,效率的提高都不明显。 另外,sql语句的最大长度有限制,组合几千条数据写成一条insert语句,可能会超过上限,所以如果有5000条数据,可以一次insert 1000条,分5次写完(不一定一次1000条最合适,有兴趣的朋友可以研究)。 声明:看了几位朋友的评论后发现自己没有叙述清楚 上面的两个条件并不是说这样做就好,而是说当应用场景满足这两个条件时才适合用union的写法 当时用这种写法时,是为了解决一个winform程序批量导入手机号码的问题,程序给自己人用,excel文件也是可靠的,不需要考虑sql攻击。还有一些场景是大量数据来源于通过gprs网络连接的专用终端,总之数据来源是可靠的,还有就是数据量很大但不可能巨大。 ps:常常遇到一些小技巧或者值得注意的小细节,没有记下来,要等下次再遇到时才想起来。现在下决心要养成好的工作习惯,留此文为证。 能够整理成文的要写在项目组开发规范中,其它的至少要记录下来。 2 二,使用mybatis将数据批量插入到oracle中,在映射文件中怎么写啊? 1.mybaits版本,3.1.0 2. 1. 2.

SQL删除数据库中所有表的数据

CREATE PROCEDURE DeleteAllData AS BEGIN DECLARE @SQL nvarchar(2000), @CurrentTable sysname, @CurrentSchema sysname --Grab the server version for any statements which need to be modified based upon the server version DECLARE @ServerVersion int SET @ServerVersion = (SELECT CAST(LEFT(CAST(SERVERPROPERTY('ProductVersion') AS varchar(50)), CHARINDEX('.',CAST(SERVERPROPERTY('ProductVersion') AS varchar(50))) - 1) A S int)) --This solution entails a cursor. Alternatively, it could be done with --the undocumented stored procedure sp_msforeachtable, or with loop logic. DECLARE TableCursor SCROLL CURSOR FOR SELECT QUOTENAME(TA BLE_SCHEMA) AS schemaname, QUOTENAME(TA BLE_NAME) AS name FROM INFORMATION_SCHEMA.TABLES W HERE TA BLE_TYPE = 'BASE TA BLE' OPEN TableCursor FETCH NEXT FROM TableCursor INTO @CurrentSchema, @CurrentTable --Disable all triggers first WHILE @@FETCH_STATUS = 0 BEGIN --Create a TSQL string to disable triggers on the current table SET @SQL = (SELECT 'ALTER TABLE '+ @CurrentSchema + '.' + @CurrentTable + ' DISABLE TRIGGER A LL') EXECUTE sp_ExecuteSQL @SQL; --Print a success or failure message, depending upon whether or not an error was raised. IF @@ERROR = 0 BEGIN PRINT 'Triggers successfully disabled on ' + @CurrentSchema + '.' + @CurrentTable END ELSE BEGIN PRINT 'An error has occured while disabling triggers on ' + @CurrentSchema + '.' + @CurrentTable END --Create a TSQL string to disable constraints on the current table SET @SQL = (SELECT 'ALTER TABLE '+ @CurrentSchema + '.' + @CurrentTable + ' NOCHECK CONSTRAINT A LL') EXECUTE sp_ExecuteSQL @SQL; --Print a success or failure message, depending upon whether or not an error was raised. IF @@ERROR = 0 BEGIN PRINT 'Constraints successfully disabled on ' + @CurrentSchema + '.' + @CurrentTable END ELSE BEGIN

SQL语句创建数据库及修改删除数据库

SQL语句创建数据库及修改删除数据库 1、使用SQL语句: CREATE DATABASE语句创建数据库 例题一: 用T-SQL语句在C:\DATA\文件夹中创建一个教师信息数据库teacher,该数据库包含: 1、一个主数据文件逻辑名‘teacherdata1 ’, 物理名‘C:\DATA\tdata1.mdf ’, 初始容量1MB,最大容量10MB,每次增长量为15%。 2、一个辅助数据文件逻辑名‘teacherdata2 ’ 物理名‘C:\DATA\tdata2.ndf ’, 初始容量2MB,最大容量15MB,每次增长量为2MB。 3、两个数据文件不单独创建文件组,即使用默认的PRIMARY组; 4、一个事务日志文件逻辑名 ‘teacherlog’ 物理名‘C:\DATA\teacherlog.ldf ’,初始容量500KB,最大容量不受限制,每次增长量为500KB。先确认C:\DATA\文件夹已创建,在查询分析器中输入代码: CREATE DATABASE teacher ON PRIMARY ( NAME = teacherdata1 , FILENAME = 'C:\DATA\tdata1.mdf' , SIZE =5MB , -- 默认字节单位MB可以省略 MAXSIZE= 10 , -- 文件最大容量 10 MB FILEGROWTH = 15% -- 增长量为文件容量15%

) , ( NAME = teacherdata2 , FILENAME = 'C:\DATA\tdata2.ndf' , SIZE = 2 , MAXSIZE= 15 , FILEGROWTH = 2MB -- 增长量为2 MB ) LOG ON /* 创建事务日志文件*/ ( NAME = teacherlog , FILENAME = 'C:\DATA\teacherlog.LDF', SIZE = 500 KB ,/* 初始容量,KB单位不能省略 */ MAXSIZE = UNLIMITED ,/* 日志文件最大容量不受限制 */ FILEGROWTH = 500 KB/* 增长量 KB 不能省略 */ ) 例题2:课本P61 例题3:在C:\DATA1\文件夹中创建一个名为: 仓库库存管理数据库,要求它有3个数据文件, 其中主数据文件逻辑名为epdata1,大小为10MB,最大大小为50MB,每次增长5MB; 辅助数据文件属于FGroup文件组,文件逻辑名为epdata2,文件大小为 20MB,最大大小不受限制,每次增长10%; 事物日志文件eplog,大小为20MB,最大大小为100MB,每次增长10MB。 CREATE DATABASE 仓库库存管理 ON PRIMARY ( NAME = epdata1,

sql删除表数据

1.删除表中的行:TRUNCATE TABLE 2.删除表中的行:DELETE 语句 3.删除表:DROP TABLE TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作。 语法 TRUNCATE TABLE table_name 参数 table_name是要截断的表的名称或要删除其全部行的表的名称。 注释 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。 如果想保留标识计数值,请改用 DELETE。 如果要删除表定义及其数据,请使用 DROP TABLE 语句。对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。TRUNCATE TABLE 不能用于参与了索引视图的表。 示例下例删除 authors 表中的所有数据。 TRUNCATE TABLE authors 用DROP TABLE 命令删除 DROP TABLE 命令可以删除一个表和表中的数据及其与表有关的所有索引、触发器、约束、字段等许可对象,即把与表有关的一切从数据库中删除。 DROP TABLE 命令的语法如下: DROP TABLE table_name

删除表中重复数据sql语句

查询和删除表中重复数据sql语句 (一) 1、查询表中重复数据。select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid 最小的记录 delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 3、查找表中多余的重复记录(多个字段) elect * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) (二) 比方说 在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1 如果还查性别也相同大则如下: Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old defini tion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

数据库基本SQL语句大全(20200521130415)

数据库基本_SQL语句大全 学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高 有见都没见过的...好全...收藏下... 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好 事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要 一个来回通讯就可以搞定所有数据的操作.... 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:‘ --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列

Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一 能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 ---like的语法很精 查找:select * from table1 where field1 like ’%value1%’  妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1

相关文档
最新文档