50个常用sql语句

时间:2023-01-04 07:54:20 其他范文 收藏本文 下载本文

50个常用sql语句(锦集10篇)由网友“迷你莓莓”投稿提供,下面是小编帮大家整理后的50个常用sql语句,希望对大家有所帮助。

50个常用sql语句

篇1:50个常用sql语句

要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列

select C# as 课程号,count(*) as 人数

from sc

group by C#

order by count(*) desc,c#

45、检索至少选修两门课程的学生学号

select S#

from sc

group by s#

having count(*) > = 2

46、查询全部学生都选修的课程的课程号和课程名

select C#,Cname

from Course

where C# in (select c# from sc group by c#)

47、查询没学过“叶平”老师讲授的任一门课程的学生姓名

select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');

48、查询两门以上不及格课程的同学的学号及其平均成绩

select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;

49、检索“004”课程分数小于60,按分数降序排列的同学学号

select S# from SC where C#='004'and score <60 order by score desc;

50、删除“002”同学的“001”课程的成绩

delete from Sc where S#='001'and C#='001';

作者 不常在

篇2:经典sql语句

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select * into b from a where 11(仅用于SQlServer)

法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

例子:..from b in “&Server.MapPath(”.“)&”data.mdb“ &” where..

4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a >1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate)>5

13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

具体实现:

关于数据库分页:

declare @start int,@end int

@sql nvar600)

set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’

exec sp_executesql @sql

注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

14、说明:前10条记录

select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA中但不在 TableB和TableC中的行并消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据

select top 10 * from tablename order by newid()

18、说明:随机选择记录

select newid()

19、说明:删除重复记录

1), from tablename where id not in (select max(id) from tablename group by col1,col2,...)

2),select distinct * into temp from tablename

from tablename

into tablename select * from temp

评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作

3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段

alter table tablename

--添加一个自增列

add column_b int identity(1,1)

from tablename where column_b not in(

select max(column_b) from tablename group by column1,column2,...)

alter table tablename drop column column_b

20、说明:列出数据库里所有的表名

select name from sysobjects where type=U // U代表用户

21、说明:列出表里的所有的列名

select name from syscolumns where id=object_id(TableName)

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

select type,sum(case vender when A then pcs else 0 end),sum(case vender when C then pcs else 0 end),sum(case vender when B then pcs else 0 end) FROM tablename group by type

显示结果:

type vender pcs

电脑 A 1

电脑 A 1

光盘 B 2

光盘 A 2

手机 B 3

手机 C 3

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择从10到15的记录

select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

篇3:sql语句经典

1、说明:复制表(只复制结构,源表名:a 新表名:b)(Access可用)

法一:select * into b from a where 11(仅用于SQlServer)

法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b)(Access可用)

insert into b(a, b, c)select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

insert into b(a, b, c)select d,e,f from b in ‘具体数据库’where 条件

例子:..from b in'“&Server.MapPath(”.“)&”\data.mdb“&”' where..

4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a wherea IN (select d from b ) 或者:select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间

selecta.title,a.username,b.adddate from table a,(select max(adddate) adddate fromtable where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c,b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )

select * from (SELECTa,b,c FROM a) T where t.a >1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select * from table1where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select * from table1where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 wherenot exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:

select * from a leftinner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.dwhere .....

12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

具体实现:

关于数据库分页:

declare @start int,@end int

@sql nvarchar(600)

set @sql=’select top’+str(@end-@start+1)+’+from T where ridnot in(select top’+str(@str-1)+’Rid from T where Rid>-1)’

exec sp_executesql @sql

注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

14、说明:前10条记录

select top 10 * form table1where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

select a,b,cfrom tablename ta where a=(select max(a) from tablename tb wheretb.b=ta.b)

16、说明:包括所有在 TableA中但不在 TableB和TableC中的`行并消除所有重复行而派生出一个结果表

(select a from tableA )except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据

select top 10 * from tablename order by newid()

18、说明:随机选择记录

select newid()

19、说明:删除重复记录

1),delete from tablenamewhere id not in (select max(id) from tablename group by col1,col2,...)

2),selectdistinct * into temp from tablename

delete from tablename

insert into tablename select *from temp

评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作

3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段

alter table tablename

--添加一个自增列

add column_b int identity(1,1)

delete from tablename wherecolumn_b not in(

select max(column_b) from tablename group by column1,column2,...)

alter table tablename drop column column_b

20、说明:列出数据库里所有的表名

select name fromsysobjects where type='U' // U代表用户

21、说明:列出表里的所有的列名

select name fromsyscolumns where id=object_id('TableName')

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

select type,sum(casevender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type

显示结果:

type vender pcs

电脑 A 1

电脑 A 1

光盘 B 2

光盘 A 2

手机 B 3

手机 C 3

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择从10到15的记录

select top 5 * from(select top 15 * from table order by id asc) table_别名 order by id desc

篇4:50个经典人生哲理语句

50个经典人生哲理语句

1、要想人前显贵,必得人后受罪。

2、人的一生,总是失意的时候多,得意的时候少,无论失意还是得意,都要淡定。失意的时候要坦然,得意的时候要淡然。如果说挫折是生命的财富,那么创伤就是前进的动力。胜败乃兵家常事,悲喜乃人之常情。谁的人生也不会一帆风顺,如能以淡然的心态去面对暂时的失败,成功也只是个时间问题。

3、对待生命要认真,对待生活要活泼。

4、有人能让你痛苦,说明你的修行还不够。

5、我决定喜欢你一辈子,不是你的一辈子,是我的一辈子,只要我还活着,就会一直喜欢下去。

6、在生命里寻觅快乐的方法,就是了解你被赋予生命是为了享受生命。

7、时间不一定能证明很多东西,但是一定能看透很多东西。

8、你把所有的都看透了,别人就看不透你了

9、航海者虽比观望者要冒更大的风险,但却有希望到达彼岸。

10、有两种人是忘不了的,一种是你爱的人,再就是你恨的人,不过往往他们是同一个人。

11、你犯错误时,等别人都来了再骂你的是敌人,等别人都走了骂你的是朋友。

12、我流浪了那么久,还不想回家。因为你不在家,我便永远没有家。

13、不管是身处上坡还是下坡,适当的时候一定要懂得让自己停下来,驻足回望是为了更好地迈进。

14、假如可以选择时光,我想回到过去。那里有我的怀念,和爱我的你。

15、知道看人背后的是君子;知道背后看人的是小人。

16、千金何足惜,一士固难求。

17、在人之上,要把人当人;在人之下,要把自己当人。

18、人要靠本事和本分起家。

19、生活中没有参照物的'人,可怜;选错参照物的人,可悲。

20、岂能尽如人意,但求无愧我心。

21、不求事事公平,但求出以公心。

22、做好第一次并不难,难的是做好每一次。

23、思念折腾人,也锻炼人,更锻造人的性格的沉稳和感情的深沉。思念别人是一种温馨,被人思念是一种幸福。

24、爱情之酒,两个人喝是甘露,三个人喝是酸醋,随便喝便会中毒。

25、背对太阳,阴影一片;迎着太阳,霞光万丈。

26、勇者,脚下都是路;智者,知道走哪一条路最好。

27、无过是一种假想,思过是一种成熟,改过是一种美德。

28、沟通心灵的桥是理解,连接心灵的路是信任。

29、酸甜苦辣是生命的富有,赤橙黄绿是人生的斑斓。

30、要想工作不走样,先得头脑不走神。

31、偏爱难免,偏见不可。

32、心脏不好心眼好,气色不行气质行。

33、与天下之忧同忧,该忧则忧,莫杞人忧天;共天下之乐同乐,该乐则乐,乐而忘返。

34、谬论不足以解惑,真言却可以解忧。

35、贪心是最大的危房,良心是最好的住所。

36、精神操守方,思想方法圆;目标志向方,行动决策圆;严以律己方,宽以待人圆。

37、维纳斯在乐观主义者眼里是美丽的,在悲观主义者眼里是残疾的,在现实主义者眼里是美丽且残疾的。

38、敬君子方显有德,怕小人不算无能。

39、退一步天高地阔,让三分心平气和。

40、欲进步需思退步,若着手先虑放手。

41、如得意不宜重往,凡做事应有余步。

42、持黄金为珍贵,知安乐方值千金。

43、事临头三思为妙,怒上心忍让最高。

44、切勿贪意外之财,知足者人心常乐。

45、结婚,只是一个开始,而不是终点,有可能是烦恼的开始,也有可能是幸福的开始。

46、在冬天的餐桌上谈论春天的花朵,是奢侈;在春天的花园里幻想秋的落叶,是无情。

47、宽容是送给他人的最好礼物,如果把它留给自己,那就是堕落的开始。

48、钱象水一样,没有一点会渴死,多了会被淹死。

49、亲情浓于血,友情淡如水,爱情甜如蜜。

50、如果把摄像头对准一个人,摄录下他的所有言行,然后再按照自己的意愿进行剪辑,任何一个人都可以成为好人或坏人。

篇5:精妙SQL语句

说明:复制表(只复制结构,源表名:a 新表名:b)

select * into b from a where 11

说明:拷贝表(拷贝数据,源表名:a 目标表名:b)

insert into b(a, b, c) select d,e,f from b;

说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

说明:日程安排提前五分钟提醒

select * from 日程安排 where datediff('minute',f开始时间,getdate)>5

说明:两张关联表,删除主表中已经在副表中没有的信息

delete from info where not exists ( select * from infobz where info.infid=infobz.infid )

说明:--

SQL:

SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE

FROM TABLE1,

(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE

FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND

FROM TABLE2

WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,

(SELECT NUM, UPD_DATE, STOCK_ONHAND

FROM TABLE2

WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =

TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y,

WHERE X.NUM = Y.NUM (+)

AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) X.STOCK_ONHAND ) B

WHERE A.NUM = B.NUM

说明:--

select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='“&strdepartmentname&”' and 专业名称='“&strprofessionname&”' order by 性别,生源地,高考总成绩

从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)

SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC

FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration

FROM TELFEESTAND a, TELFEE b

WHERE a.tel = b.telfax) a

GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')

说明:四表联查问题

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

说明:得到表中最小的未使用的ID号

SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID FROM Handle WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)

一个SQL语句的问题:行列转换

select * from v_temp

上面的视图结果如下:

user_name role_name

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

系统管理员 管理员

feng 管理员

feng 一般用户

test 一般用户

想把结果变成这样:

user_name role_name

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

系统管理员 管理员

feng 管理员,一般用户

test 一般用户

===================

create table a_test(name varchar(20),role2 varchar(20))

insert into a_test values('李','管理员')

insert into a_test values('张','管理员')

insert into a_test values('张','一般用户')

insert into a_test values('常','一般用户')

create function join_str(@content varchar(100))

returns varchar()

as

begin

declare @str varchar(2000)

set @str=''

select @str=@str+','+rtrim(role2) from a_test where [name]=@content

select @str=right(@str,len(@str)-1)

return @str

end

go

--调用:

select [name],dbo.join_str([name]) role2 from a_test group by [name]

--select distinct name,dbo.uf_test(name) from a_test

快速比较结构相同的两表

结构相同的两表,一表有记录3万条左右,一表有记录2万条左右,我怎样快速查找两表的不同记录?

============================

给你一个测试方法,从northwind中的orders表取数据,

select * into n1 from orders

select * into n2 from orders

select * from n1

select * from n2

--添加主键,然后修改n1中若干字段的若干条

alter table n1 add constraint pk_n1_id primary key (OrderID)

alter table n2 add constraint pk_n2_id primary key (OrderID)

select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) >1

应该可以,而且将不同的记录的ID显示出来。

下面的适用于双方记录一样的情况,

select * from n1 where orderid in (select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) >1)

至于双方互不存在的记录是比较好处理的

--删除n1,n2中若干条记录

delete from n1 where orderID in ('10728','10730')

delete from n2 where orderID in ('11000','11001')

--*************************************************************

-- 双方都有该记录却不完全相同

select * from n1 where orderid in(select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) >1)

union

--n2中存在但在n1中不存的在10728,10730

select * from n1 where OrderID not in (select OrderID from n2)

union

--n1中存在但在n2中不存的在11000,11001

select * from n2 where OrderID not in (select OrderID from n1)

四种方法取表里n到m条纪录:

1.

select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入

set rowcount n

select * from 表变量 order by columnname desc

2.

select top n * from (select top m * from tablename order by columnname) a order by columnname desc

3.如果tablename里没有其他identity列,那么:

select identity(int) id0,* into #temp from tablename

取n到m条的语句为:

select * from #temp where id0 >=n and id0 <= m

如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:

exec sp_dboption 你的DB名字,'select into/bulkcopy',true

4.如果表里有identity属性,那么简单:

select * from tablename where identitycol between n and m

如何删除一个表中重复的记录?

create table a_dist(id int,name varchar(20))

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

exec up_distinct 'a_dist','id'

select * from a_dist

create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))

--f_key表示是分组字段o即主键字段

as

begin

declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer

select @sql = 'declare cur_rows cursor for select '+@f_key+' ,count(*) from ' +@t_name +' group by ' +@f_key +' having count(*) >1'

exec(@sql)

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

select @type = xtype from syscolumns where id=object_id(@t_name) and name=@f_key

if @type=56

select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+ @id

if @type=167

select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+''''+ @id +''''

exec(@sql)

fetch cur_rows into @id,@max

end

close cur_rows

deallocate cur_rows

set rowcount 0

end

select * from systypes

select * from syscolumns where id = object_id('a_dist')

查询数据的最大排序问题(只能用一条语句写)

CREATE TABLE hard (qu char (11) ,co char (11) ,je numeric(3, 0))

insert into hard values ('A','1',3)

insert into hard values ('A','2',4)

insert into hard values ('A','4',2)

insert into hard values ('A','6',9)

insert into hard values ('B','1',4)

insert into hard values ('B','2',5)

insert into hard values ('B','3',6)

insert into hard values ('C','3',4)

insert into hard values ('C','6',7)

insert into hard values ('C','2',3)

要求查询出来的结果如下:

qu co je

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

A 6 9

A 2 4

B 3 6

B 2 5

C 6 7

C 3 4

就是要按qu分组,每组中取je最大的前2位!!

而且只能用一句sql语句!!!

select * from hard a where je in (select top 2 je from hard b where a.qu=b.qu order by je)

求删除重复记录的sql语句?

怎样把具有相同字段的纪录删除,只留下一条。

例如,表test里有id,name字段

如果有name相同的记录 只留下一条,其余的删除。

name的内容不定,相同的记录数不定,

有没有这样的sql语句?

==============================

A:一个完整的解决方案:

将重复的记录记入temp1表:

select [标志字段id],count(*) into temp1 from [表名]

group by [标志字段id]

having count(*)>1

2、将不重复的记录记入temp1表:

insert temp1 select [标志字段id],count(*) from [表名] group by [标志字段id] having count(*)=1

3、作一个包含所有不重复记录的表:

select * into temp2 from [表名] where 标志字段id in(select 标志字段id from temp1)

4、删除重复表:

delete [表名]

5、恢复表:

insert [表名] select * from temp2

6、删除临时表:

drop table temp1

drop table temp2

================================

B:

create table a_dist(id int,name varchar(20))

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

insert into a_dist values(1,'abc')

exec up_distinct 'a_dist','id'

select * from a_dist

create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))

--f_key表示是分组字段o即主键字段

as

begin

declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer

select @sql = 'declare cur_rows cursor for select '+@f_key+' ,count(*) from ' +@t_name +' group by ' +@f_key +' having count(*) >1'

exec(@sql)

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

select @type = xtype from syscolumns where id=object_id(@t_name) and name=@f_key

if @type=56

select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+ @id

if @type=167

select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+''''+ @id +''''

exec(@sql)

fetch cur_rows into @id,@max

end

close cur_rows

deallocate cur_rows

set rowcount 0

end

select * from systypes

select * from syscolumns where id = object_id('a_dist')

行列转换--普通

假设有张学生成绩表(CJ)如下

Name Subject Result

张三 语文 80

张三 数学 90

张三 物理 85

李四 语文 85

李四 数学 92

李四 物理 82

想变成

姓名 语文 数学 物理

张三 80 90 85

李四 85 92 82

declare @sql varchar(4000)

set @sql = 'select Name'

select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'

from (select distinct Subject from CJ) as a

select @sql = @sql+' from test group by name'

exec(@sql)

行列转换--合并

有表A,

id pid

1 1

1 2

1 3

2 1

2 2

3 1

如何化成表B:

id pid

1 1,2,3

2 1,2

3 1

创建一个合并的函数

create function fmerg(@id int)

returns varchar(8000)

as

begin

declare @str varchar(8000)

set @str=''

select @str=@str+','+cast(pid as varchar) from 表A where id=@id

set @str=right(@str,len(@str)-1)

return(@str)

End

go

--调用自定义函数得到结果

select distinct id,dbo.fmerg(id) from 表A

如何取得一个数据表的所有列名

方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。

SQL语句如下:

declare @objid int,@objname char(40)

set @objname = 'tablename'

select @objid = id from sysobjects where id = object_id(@objname)

select 'Column_name' = name from syscolumns where id = @objid order by colid

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='users'

通过SQL语句来更改用户的密码

修改别人的,需要sysadmin role

EXEC sp_password NULL, 'newpassword', 'User'

如果帐号为SA执行EXEC sp_password NULL, 'newpassword', sa

怎么判断出一个表的哪些字段不允许为空?

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE='NO' and TABLE_NAME=tablename

如何在数据库里找到含有相同字段的表?

a. 查已知列名的情况

SELECT b.name as TableName,a.name as columnname

From syscolumns a INNER JOIN sysobjects b

ON a.id=b.id

AND b.type='U'

AND a.name='你的字段名字'

未知列名查所有在不同表出现过的列名

Select o.name As tablename,s1.name As columnname

From syscolumns s1, sysobjects o

Where s1.id = o.id

And o.type = 'U'

And Exists (

Select 1 From syscolumns s2

Where s1.name = s2.name

And s1.id s2.id

)

查询第xxx行数据

假设id是主键:

select * from (select top xxx * from yourtable) aa where not exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.id=bb.id)

如果使用游标也是可以的

fetch absolute [number] from [cursor_name]

行数为绝对行数

SQL Server日期计算

a. 一个月的第一天

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

b. 本周的星期一

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

c. 一年的第一天

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

d. 季度的第一天

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

e. 上个月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

f. 去年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

g. 本月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

h. 本月的第一个星期一

select DATEADD(wk, DATEDIFF(wk,0,

dateadd(dd,6-datepart(day,getdate()),getdate())

), 0)

i. 本年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。

获取表结构[把 'sysobjects' 替换 成 'tablename' 即可]

SELECT CASE IsNull(I.name, '')

When '' Then ''

Else '*'

End as IsPK,

Object_Name(A.id) as t_name,

A.name as c_name,

IsNull(SubString(M.text, 1, 254), '') as pbc_init,

T.name as F_DataType,

CASE IsNull(TYPEPROPERTY(T.name, 'Scale'), '')

WHEN '' Then Cast(A.prec as varchar)

ELSE Cast(A.prec as varchar) + ',' + Cast(A.scale as varchar)

END as F_Scale,

A.isnullable as F_isNullAble

FROM Syscolumns as A

JOIN Systypes as T

ON (A.xType = T.xUserType AND A.Id = Object_id('sysobjects') )

LEFT JOIN ( SysIndexes as I

JOIN Syscolumns as A1

ON ( I.id = A1.id and A1.id = object_id('sysobjects') and (I.status & 0x800) = 0x800 AND A1.colid <= I.keycnt) )

ON ( A.id = I.id AND A.name = index_col('sysobjects', I.indid, A1.colid) )

LEFT JOIN SysComments as M

ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, 'IsConstraint') = 1 )

ORDER BY A.Colid ASC

提取数据库内所有表的字段详细说明的SQL语句

SELECT

(case when a.colorder=1 then d.name else '' end) N'表名',

a.colorder N'字段序号',

a.name N'字段名',

(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else ''

end) N'标识',

(case when (SELECT count(*)

FROM sysobjects

WHERE (name in

(SELECT name

FROM sysindexes

WHERE (id = a.id) AND (indid in

(SELECT indid

FROM sysindexkeys

WHERE (id = a.id) AND (colid in

(SELECT colid

FROM syscolumns

WHERE (id = a.id) AND (name = a.name))))))) AND

(xtype = 'PK'))>0 then '√' else '' end) N'主键',

b.name N'类型',

a.length N'占用字节数',

COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',

isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',

(case when a.isnullable=1 then '√'else '' end) N'允许空',

isnull(e.text,'') N'默认值',

isnull(g.[value],'') AS N'字段说明'

FROM syscolumns a

left join systypes b

on a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id and d.xtype='U' and d.name'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sysproperties g

on a.id=g.id AND a.colid = g.smallid

order by object_name(a.id),a.colorder

快速获取表test的记录总数[对大容量表非常有效]

快速获取表test的记录总数:

select rows from sysindexes where id = object_id('test') and indid in (0,1)

update 2 set KHXH=(ID+1)\2 2行递增编号

update [23] set id1 = 'No.'+right('00000000'+id,6) where id not like 'No%' //递增

update [23] set id1= 'No.'+right('00000000'+replace(id1,'No.',''),6) //补位递增

delete from [1] where (id%2)=1

奇数

替换表名字段

update [1] set domurl = replace(domurl,'Upload/Imgswf/','Upload/Photo/') where domurl like '%Upload/Imgswf/%'

截位

SELECT LEFT(表名, 5)

篇6:简单SQL语句小结

为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述,

1.在查询结果中显示列名:

a.用as关键字:select name as '姓名' from students order by age

b.直接表示:select name '姓名' from students order by age

2.精确查找:

a.用in限定范围:select * from students where native in ('湖南', '四川')

b.between...and:select * from students where age between 20 and 30

c.“=”:select * from students where name = '李山'

d.like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。)

e.[]匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与“in(...)”类似,而且“[]”可以表示范围,如:select * from courses where cno like '[A-C]%')

3.对于时间类型变量的处理

a.smalldatetime:直接按照字符串处理的方式进行处理,例如:

select * from students where birth >= '1980-1-1' and birth <= '1980-12-31'

4.集函数

a.count()求和,如:select count(*) from students (求学生总人数)

b.avg(列)求平均,如:select avg(mark) from grades where cno=’B2’

c.max(列)和min(列),求最大与最小

5.分组group

常用于统计时,如分组查总数:

select gender,count(sno)

from students

group by gender

(查看男女学生各有多少)

注意:从哪种角度分组就从哪列“group by”

对于多重分组,只需将分组规则罗列,

比如查询各届各专业的男女同学人数 ,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有“group by grade, mno, gender”

select grade, mno, gender, count(*)

from students

group by grade, mno, gender

通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:

篇7:WordPress SQL语句

过去来,MySQL数据库以令人难以置信的速度在网络上流行起来,每一个WordPress博客都由MySQL数据库驱动,存储博客日志、设置、评论等内容。

面对WordPress,虽然插件或编码技巧可以解决一些问题、完成某些任务,但是有时除了通过phpMyAdmin或SSH执行SQL语句外,你别无选择。下面让我们来看看WordPress实用SQL语句集锦。本系列文章的每个篇章都严格按照提出问题、解决问题、解释说明的思路撰写,以使读者真正了解掌握解决问题的方法,达到举一反三的效果。

1、创建数据库备份

问题。尽管本文论及的所有语句已经过测试,我们仍然应当先备份MySQL数据库,再尝试执行这些语句。

方案。要手工创建一个WordPress数据库备份,请按照下列步骤进行:

1、登录phpMyAdmin,选择WordPress数据库。

2、接着在横向列示的菜单上点击“导出”按钮。

3、选择压缩方法(我个人习惯使用gzip),然后点击“执行”按钮。

4、浏览器会提示是否需要下载备份文件。选择“是”,然后将该文件储存在硬盘驱动器上。

解释。需要注意的是,创建WordPress数据库备份的任务,可以通过插件更容易地实现。每一个WordPress用户都应该安装此插件,并定期进行数据备份。(译注:此提示虽显絮叨却是博客作者都应遵循的准则。因为主题或插件没了都可以再安装,但数据没了那么所有过往的努力都将付诸东流。)

2、批量删除日志修订记录

问题。修订版本是WordPress 2.6引入的功能,该功能虽然在某些场景下比较有用,但也增加了MySQL数据库的大小。尽管我们可以手动删除文章修订版本,但这是非常漫长而枯燥的工作。

方案。这个问题的解决方法很简单:我们通过执行简单的SQL查询来批量删除日志修订记录。如果你有很多的日志,其结果可能令人难以置信:数据库的大小将减少一半!

登录phpMyAdmin,选择WordPress数据库,

点击“SQL”按钮。将以下代码粘贴到SQL命令窗口:

DELETE FROM wp_posts WHERE post_type = “revision”;

大功告成。最终节省的数据库空间大小取决于博客文章数的多少。

解释。wp_posts表有一个名为post_type的字段。此字段有几个取值,如“post”、“page”或“revision”。想要去除文章修订版本,只需运行一个命令以删除wp_posts表中,post_type字段等于“revision”的记录。

接下来我们分析关于批量删除待审核评论和变更日志归属的SQL命令。

3、瞬间删除5000条垃圾评论

问题。真人真事:我的一个朋友最近搭建了自己的博客,并开始在网上四处推广。经过几个星期的紧张工作,他休了几天假没有上网。

回到家里他看了看博客,结果看到...超过5000条待审核评论!当然,其中大多数是垃圾评论,本来他打算逐一检验,以确保不会删掉一般读者的有效评论。

方案。令人高兴的是,友人把他的垃圾留言问题告诉了我。在我向他展示下面这条有用的SQL语句前,他已经花了45分钟手工删除垃圾评论。

登录phpMyAdmin,选择WordPress数据库。

点击“SQL”按钮。将以下代码粘贴到SQL命令窗口:

DELETE from wp_comments WHERE comment_approved = '0';

向垃圾评论说再见!享受未受垃圾评论侵扰的数据库吧!

解释。wp_comments表包含一个名为comment_approved的字段,取布尔值(1或0)。通过审核的评论该值为1,待审核的评论取0值。通过运行上面的命令,我们删除了全部待审核评论。

谨慎行事。如果你有一大堆垃圾留言需要删除,这种解决方案是非常有用的,但也可能删掉未经审核的有效评论。因此,如果你还没用上,马上安装它以阻止垃圾评论的骚扰。

篇8:sql查询语句

用SELECT语句实现数据库的查询操作,同时,它还可以使用各种子句对查询结果进行分组统计、合计、排序等操作。SELECT语句还可将查询结果生成另一个表(临时表或永久表)。

SELECT语句的语法格式为:

在SELECT语句中,子句可以省略,但在列出时必须按照以上顺序。

简单查询:

简单的SQL查询只包括SELECT列表、FROM子句和WHERE子句,它们分别说明所查询列、查询操作的表或视图以及搜索条件等。

例:查询title表中1991年出版的“business”类图书及其价格。

SELECT title,price

FROM titles

WHERE DATEPART(YEAR,pubdate)=1991 AND type='business'

1.Select列表语句

SELECT列表语句(select_list)指定所选择的列,它可以为一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

(1)选择所有列

用星号表示选择指定表或视图中的选择所有列

SELECT * FROM discounts

选择指定列并指定它们的显示次序

在SELECT列表语句中指定列名来选择不同的列,各列之间用逗号分隔,显示结果中数据的排列顺序为列名的列表顺序。

SELECT discount,discounttype FROM discounts

在SELECT列表中,还可以对数值进行算术运算(包括加、减、乘、除、取模等)。

其中,加、减、乘、除操作适用于任何数值型列(如int,smallint,tinyint,decimal,numeric,float,real,money,smallmoney等),而取模操作不能用于money和smallmoneyu数据类型列。

对数值进行运算时,如果列值为空(null),则所执行的所有算术操作的结果仍为空:

SELECT discounttype,'lowqty+50'=lowqty+50

FROM discounts

在SELECT列表中,还可以指定字符串常量或变量输出结果的显示格式:

DECLARE @var char(12)

SELECT @VAR='折扣幅度'

SELECT '折扣名称:',discounttype,@var,discount

SELECT discounts

(2)删除重复行

SELECT语句可以使用ALL|DISTINCT选项来显示所有行(ALL)或删除重复的行(DISTINCT),缺省时为ALL。使用DISTINCT选项时,对于所有数据重复的SELECT列表值只显示一次。

SELECT DISTINCT country FROM publishers

2.FROM子句

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定16个表或视图,它们相互之间用逗号分隔,如果这些表或视图属于不同的数据库,可用“数据库.所有者名称.对象”格式限定表或视图对象,

SELECT au_id,titles.title_id

//由于在两个表中都存在“title_id”列,加入“titles.”避免二义性

FROM titles,titleauthor

WHERE titles.title_id=titleauthor.title_id

在FROM子句中,可为每个表或视图指定一个别名,别名紧跟在对象名称之后,之间用空格分隔,然后可以使用别名引用表中各列。

SELECT au_id,t.title_id

FROM titles t,titleauthor ta

WHERE t.title_id=ta.title_id

用WHERE子句限定搜索条件,SELECT语句中使用WHERE子句指定查询条件。

WHERE语句中可包含的运算符,如下表:

例1:范围运算符:相交书价为$10~$30之内的图书

SELECT title,price

FROM titles

WHERE price BETWEEN $10 AND $30

例2:列表运算符:列出publishers表中社址在德国和法国的出版社

SELECT pub_name

FROM publishers

WHERE country IN('germany','france')

3.模式匹配符

模式匹配符[NOT] LIKE常用于模糊条件查询,它判断列值是否与指定的字符串格式相匹配,可用于char,varchar,datetime和smalldatetime数据类型。可使用的通配字符有以下几种:

●百分号%:可匹配任意类型长度的字符;

●下划线_:匹配单个字符,它常用来限制表达式的字符长度;

●方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个字符;

●[^]:其取值与[]相同,但它要求所匹配对象为指定字符以外的任一个字符。

例6:列出名称长度为5个字符,且以'GG'开头的出版社

SELECT pub_name

FROM publishers

WHERE pub_name LIKE 'GG_'

例7:空值判断符:查找目前仍未定价的图书

SELECT title,price

FROM titles

WHRER price IS NULL

例8:逻辑运算符:列出收价低于$5或高于$15且当年销量小于5000的图书

SELECT price,ytd_sales,title

FROM titles

WHERE(price<$5 OR price>$15) AND ytd_sales<5000

查询结果排序

在SELECT语句中,使用ORDER BY语句对查询结果按一列或多列进行排序。ORDER BY子句的语法格式为:

例:列出“business”类的图书标识和价格,结果排序方式为:价格由高到低,title_id列由低到高。

SELECT title_id,price

FROM titles

WHERE type='business'

ORDER BY price DESC,title_id,ASC

篇9:sql连接语句

1.等值连接和自然连接

对于等值连接和自然连接,在WHERE子句中使用等于比较运算符,二者的区别在于等值连接的查询结果中列出所连接表中的所有列,包括它们之间的重复列,而自然连接的选择列表中删除被连接表间的重复列。

例:

(3)不等连接

不等连接使用除等于运算符以外的其他比较运算符,这些运算符包括>,>=,<=,<,!>,!<和>等。

(4)自连接

自连接中,使用同一个表的相同列进行比较,这时,对于同一个表应给出不同的别名。

例:使用自连接列出合著的图书标识及其作者姓名

2.外连接

内连接中,查询结果中所显示的仅是符合查询条件的行,而采用外连接时,它不仅包含符合连接条件的行,而且还包括左表或右表连接中的所有行,

外连接操作符有*=和=*两种,采用*=连接时,查询结果中将包含第一个表中的所有行,而采用=*连接时,查询结果将包含=*操作符后面表中所有数据行。

在进行一些统计时,需要使用外连接。例如,假定有两个表,一个表(PERSON)包含人员的姓名(NAME)及其标识(ID),另一个表(DESC)包含人员标识(ID)及其受奖惩情况(MEMO)。在统计单位的所有人员及其奖惩情况时,使用外连接书写查询语句就特别简单,即:

SELECT name,memo

FROM person,desc

WHERE person.id*=desc.id

篇10:数据库经典SQL语句

下列语句部分是Mssql语句,不可以在access中使用。

SQL分类:

DDL―数据定义语言(CREATE,ALTER,DROP,DECLARE)

DML―数据操纵语言(SELECT,DELETE,UPDATE,INSERT)

DCL―数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:

1、说明:创建数据库

CREATE DATABASE database-name

2、说明:删除数据库

drop database dbname

3、说明:备份sql server

--- 创建备份数据的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

--- 开始备份

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、说明:

删除新表: 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 范围

插入: into table1(field1,field2) values(value1,value2)

删除: from table1 where 范围

更新:table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select * from table1 order by field1,field2 [desc]

总数:select count * as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:selectavg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接

A、left outer join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right outer join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full outer join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

其次,大家来看一些不错的sql语句

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select * into b from a where 11

法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

例子:..from b in '“&Server.MapPath(”.“)&”data.mdb“ &”' where..

4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: selecta,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间

selecta.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)

selecta.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a>1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:前10条记录

select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

selecta,b,c from tablename ta where a=(select max(a) from tablenametb where tb.b=ta.b)

16、说明:包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据

select top 10 * from tablename order by newid()

18、说明:随机选择记录

selectnewid()

19、说明:删除重复记录

一个常用的报表统计SQL语句

Listen Software解决方案 “How To” 系列2:存储过程数据库教程

提高航空发动机性能的弯扭导向器技术

PowerDesign9.5+ 中的GTL编程 解决大问题数据库教程

perl连接access数据库自动测试脚本语言

小技巧:用批处理对MySQL进行数据操作数据库教程

如何恢复MYSQL实体文件MYI,MYD到数据库中数据库教程

靠BCP恢复SQL Server 数据库备份恢复

跟踪标记全攻略数据库教程

理论篇:SQL数据库备份还原和恢复全过程

50个常用sql语句
《50个常用sql语句.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【50个常用sql语句(锦集10篇)】相关文章:

SQL数据操作基础(中级)102023-07-08

教你怎样学会SQL注 入2022-05-06

DB2数据库SQL注入语句2023-04-15

KMCT分页控件与存储过程分页完美结合存储过程分页篇2022-12-24

oblog?4.6?注入的语句2023-08-25

1.13 数据库查询语言2023-05-01

php 面试题2022-06-12

拼音处理数据库教程2022-09-24

PHP安全 XSS篇2022-08-02

存储过程实现分页2022-05-03

点击下载本文文档