SQL语句大全.docx

上传人:b****3 文档编号:11087261 上传时间:2023-05-29 格式:DOCX 页数:20 大小:22.73KB
下载 相关 举报
SQL语句大全.docx_第1页
第1页 / 共20页
SQL语句大全.docx_第2页
第2页 / 共20页
SQL语句大全.docx_第3页
第3页 / 共20页
SQL语句大全.docx_第4页
第4页 / 共20页
SQL语句大全.docx_第5页
第5页 / 共20页
SQL语句大全.docx_第6页
第6页 / 共20页
SQL语句大全.docx_第7页
第7页 / 共20页
SQL语句大全.docx_第8页
第8页 / 共20页
SQL语句大全.docx_第9页
第9页 / 共20页
SQL语句大全.docx_第10页
第10页 / 共20页
SQL语句大全.docx_第11页
第11页 / 共20页
SQL语句大全.docx_第12页
第12页 / 共20页
SQL语句大全.docx_第13页
第13页 / 共20页
SQL语句大全.docx_第14页
第14页 / 共20页
SQL语句大全.docx_第15页
第15页 / 共20页
SQL语句大全.docx_第16页
第16页 / 共20页
SQL语句大全.docx_第17页
第17页 / 共20页
SQL语句大全.docx_第18页
第18页 / 共20页
SQL语句大全.docx_第19页
第19页 / 共20页
SQL语句大全.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQL语句大全.docx

《SQL语句大全.docx》由会员分享,可在线阅读,更多相关《SQL语句大全.docx(20页珍藏版)》请在冰点文库上搜索。

SQL语句大全.docx

SQL语句大全

目录

基础

1.创建数据库

2.删除数据库

3.备份sqlserver

4.创建新表

5.创建序列

6.删除新表

7.增加一个列

8.添加主键

9.创建索引

10.创建视图

11.几个简单的基本的sql语句

12.几个高级查询运算词

13.使用外连接

判断对象是否存在

1.判断数据库是否存在

2.判断表是否存在

3.判断存储过程是否存在

4.判断临时表是否存在

5.判断视图是否存在

6.判断函数是否存在

7.获取用户创建的对象信息

8.判断列是否存在

9.判断列是否自增列

10.判断表中是否存在索引

11.查看数据库中对象

提升

1.复制表

2.拷贝表

3.跨数据库之间表的拷贝

4.子查询

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

6.外连接查询

7.在线视图查询

8.between的用法

9.in的使用方法

10.删除主表中已经在副表中没有的信息

11.四表联查问题

12.日程安排提前五分钟提醒

13.一条sql语句搞定数据库分页

14.前10条记录

15.选择排名

16.派生结果表

17.随机取出10条数据

18.随机选择记录

19.删除重复记录

20.列出数据库里所有的表名

21.列出表里的所有的

22.列示排列

23.初始化表table1

24.选择从10到15的记录

25.数据类型转换

技巧

1.1=1,1=2的使用

2.收缩数据库

3.压缩数据库

4.检查备份集

5.修复数据库

6.日志清除

7.更改某个表

8.存储更改全部表

9.SQLSERVER中直接循环写入数据

基础

1.创建数据库

2.删除数据库

3.备份sqlserver

4.创建新表

5.创建序列

6.删除新表

7.增加一个列

8.添加主键

9.创建索引

10.创建视图

11.几个简单的基本的sql语句

12.几个高级查询运算词

13.使用外连接

判断对象是否存在

1.判断数据库是否存在

2.判断表是否存在

3.判断存储过程是否存在

4.判断临时表是否存在

5.判断视图是否存在

6.判断函数是否存在

7.获取用户创建的对象信息

8.判断列是否存在

9.判断列是否自增列

10.判断表中是否存在索引

11.查看数据库中对象

提升

1.复制表

2.拷贝表

3.跨数据库之间表的拷贝

4.子查询

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

6.外连接查询

7.在线视图查询

8.between的用法

9.in的使用方法

10.删除主表中已经在副表中没有的信息

11.四表联查问题

12.日程安排提前五分钟提醒

13.一条sql语句搞定数据库分页

14.前10条记录

15.选择排名

16.派生结果表

17.随机取出10条数据

18.随机选择记录

19.删除重复记录

20.列出数据库里所有的表名

21.列出表里的所有的

22.列示排列

23.初始化表table1

24.选择从10到15的记录

25.数据类型转换

技巧

1.1=1,1=2的使用

2.收缩数据库

3.压缩数据库

4.检查备份集

5.修复数据库

6.日志清除

7.更改某个表

8.存储更改全部表

9.SQLSERVER中直接循环写入数据

基础

创建数据库

  创建之前判断该数据库是否存在

  ifexists(select*fromsysdatabaseswherename='databaseName')

  dropdatabasedatabaseName

  go

  CreateDATABASEdatabase-name

删除数据库

  dropdatabasedbname

备份sqlserver

  ---创建备份数据的device

  USEmaster

  EXECsp_addumpdevice'disk','testBack','c:

\mssql7backup\MyNwind_1.dat'

  ---开始备份

  BACKUPDATABASEpubsTOtestBack

创建新表

  createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

  根据已有的表创建新表:

  A:

createtabletab_newliketab_old(使用旧表创建新表)

  B:

createtabletab_newasselectcol1,col2…fromtab_olddefinitiononly

创建序列

  createsequenceSIMON_SEQUENCE

  minvalue1--最小值

  maxvalue999999999999999999999999999最大值

  startwith1开始值

  incrementby1每次加几

  cache20;

删除新表

  droptabletabname

增加一个列

  Altertabletabnameaddcolumncoltype

  注:

列增加后将不能删除。

DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

添加主键

  Altertabletabnameaddprimarykey(col)

  说明:

删除主键:

Altertabletabnamedropprimarykey(col)

创建索引

  create[unique]indexidxnameontabname(col….)

  删除索引:

dropindexidxnameontabname

  注:

索引是不可更改的,想更改必须删除重新建。

创建视图

  createviewviewnameasselectstatement

  删除视图:

dropviewviewname

几个简单的基本的sql语句

  选择:

select*fromtable1where范围

  插入:

insertintotable1(field1,field2)values(value1,value2)

  删除:

deletefromtable1where范围

  更新:

updatetable1setfield1=value1where范围

  查找:

select*fromtable1wherefield1like’%value1%’(所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!

  排序:

select*fromtable1orderbyfield1,field2[desc]

  总数:

selectcount(*)astotalcountfromtable1

  求和:

selectsum(field1)assumvaluefromtable1

  平均:

selectavg(field1)asavgvaluefromtable1

  最大:

selectmax(field1)asmaxvaluefromtable1

  最小:

selectmin(field1)asminvaluefromtable1[separator]

几个高级查询运算词

  A:

UNION运算符

  UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。

当ALL随UNION一起使用时(即UNIONALL),不消除重复行。

两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。

  B:

EXCEPT运算符

  EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。

当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。

  C:

INTERSECT运算符

  INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。

当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。

  注:

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

使用外连接

  A、leftouterjoin:

  左外连接(左连接):

结果集既包括连接表的匹配行,也包括左连接表的所有行。

  SQL:

selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

  B:

rightouterjoin:

  右外连接(右连接):

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

  C:

fullouterjoin:

  全外连接:

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

编辑本段

判断对象是否存在

判断数据库是否存在

  ifexists(select*fromsys.databaseswherename='数据库名')

  dropdatabase[数据库名]

判断表是否存在

  ifexists(select*fromsysobjectswhereid=object_id(N'[表名]')andOBJECTPROPERTY(id,N'IsUserTable')=1)

  droptable[表名]

判断存储过程是否存在

  ifexists(select*fromsysobjectswhereid=object_id(N'[存储过程名]')andOBJECTPROPERTY(id,N'IsProcedure')=1)

  dropprocedure[存储过程名]

判断临时表是否存在

  ifobject_id('tempdb..#临时表名')isnotnull

  droptable#临时表名

判断视图是否存在

  --SQLServer2000

  IFEXISTS(SELECT*FROMsysviewsWHEREobject_id='[dbo].[视图名]'

  --SQLServer2005

  IFEXISTS(SELECT*FROMsys.viewsWHEREobject_id='[dbo].[视图名]'

判断函数是否存在

  ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[函数名]')andxtypein(N'FN',N'IF',N'TF'))

  dropfunction[dbo].[函数名]

获取用户创建的对象信息

  SELECT[name],[id],crdateFROMsysobjectswherextype='U'

  /*

  xtype的表示参数类型,通常包括如下这些C=CHECK约束D=默认值或DEFAULT约束F=FOREIGNKEY约束L=日志FN=标量函数IF=内嵌表函数P=存储过程PK=PRIMARYKEY约束(类型是K)RF=复制筛选存储过程S=系统表TF=表函数TR=触发器U=用户表UQ=UNIQUE约束(类型是K)V=视图X=扩展存储过程*/

判断列是否存在

  ifexists(select*fromsyscolumnswhereid=object_id('表名')andname='列名')

  altertable表名dropcolumn列名

判断列是否自增列

  ifcolumnproperty(object_id('table'),'col','IsIdentity')=1

  print'自增列'

  else

  print'不是自增列'

  SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID('表名')

  ANDis_identity=1

判断表中是否存在索引

  ifexists(select*fromsysindexeswhereid=object_id('表名')andname='索引名')

  print'存在'

  else

  print'不存在

查看数据库中对象

  SELECT*FROMsys.sysobjectsWHEREname='对象名'

编辑本段

提升

复制表

  (只复制结构,源表名:

a新表名:

b)(Access可用)

  法一:

select*intobfromawhere1<>1

  法二:

selecttop0*intobfroma

拷贝表

  (拷贝数据,源表名:

a目标表名:

b)(Access可用)

  insertintob(a,b,c)selectd,e,ffromb;

跨数据库之间表的拷贝

  (具体数据使用绝对路径)(Access可用)

  insertintob(a,b,c)selectd,e,ffrombin‘具体数据库’where条件

  例子:

..frombin'"&Server.MapPath("."&"\data.mdb"&"'where..

子查询

  (表名1:

a表名2:

b)

  selecta,b,cfromawhereaIN(selectdfromb或者:

selecta,b,cfromawhereaIN(1,2,3)

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

  selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b

外连接查询

  (表名1:

a表名2:

b)

  selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

在线视图查询

  (表名1:

a

  select*from(Selecta,b,cFROMa)Twheret.a>1;

between的用法

  between限制查询数据范围时包括了边界值,notbetween不包括

  select*fromtable1wheretimebetweentime1andtime2

  selecta,b,c,fromtable1whereanotbetween数值1and数值2

in的使用方法

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

删除主表中已经在副表中没有的信息

  两张关联表deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1

四表联查问题

  select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....

日程安排提前五分钟提醒

  SQL:

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

一条sql语句搞定数据库分页

  selecttop10b.*from(selecttop20主键字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主键字段=a.主键字段orderbya.排序字段

前10条记录

  selecttop10*formtable1where范围

选择排名

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

  selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)

派生结果表

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

  (selectafromtableAexcept(selectafromtableB)except(selectafromtableC)

随机取出10条数据

  selecttop10*fromtablenameorderbynewid()

随机选择记录

  selectnewid()

删除重复记录

  Deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,...)

列出数据库里所有的表名

  selectnamefromsysobjectswheretype='U'

列出表里的所有的

  selectnamefromsyscolumnswhereid=object_id('TableName')

列示排列

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

  selecttype,sum(casevenderwhen'A'thenpcselse0end),sum(casevenderwhen'C'thenpcselse0end),sum(casevenderwhen'B'thenpcselse0end)FROMtablenamegroupbytype

  显示结果:

  typevenderpcs

  电脑A1

  电脑A1

  光盘B2

  光盘A2

  手机B3

  手机C3

初始化表table1

  TRUNCATETABLEtable1

选择从10到15的记录

  selecttop5*from(selecttop15*fromtableorderbyidasc)table_别名orderbyiddesc

数据类型转换

  declare@numidint

  declare@idvarchar(50)

  set@numid=2005

  set@id=convert(varchar,@numid)

  通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数

编辑本段

技巧

1=1,1=2的使用

  在SQL语句组合时用的较多

  “where1=1”是表示选择全部“where1=2”全部不选,

  如:

  if@strWhere!

='

  begin

  set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where'+@strWhere

  end

  else

  begin

  set@strSQL='selectcount(*)asTotalfrom['+@tblName+']'

  end

  我们可以直接写成

  set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where1=1and'+@strWhere

收缩数据库

  --重建索引

  DBCCREINDEX

  DBCCINDEXDEFRAG

  --收缩数据和日志

  DBCCSHRINKDB

  DBCCSHRINKFILE

压缩数据库

  dbccshrinkdatabase(dbname)

  转移数据库给新用户以已存在用户权限

  execsp_change_users_login'update_one','newname','oldname'

  go

检查备份集

  RESTOREVERIFYONLYfromdisk='E:

\dvbbs.bak'

修复数据库

  AlterDATABASE[dvbbs]SETSINGLE_USER

  GO

  DBCCCHECKDB('dvbbs',repair_allow_data_loss)WITHTABLOCK

  GO

  AlterDATABASE[dvbbs]SETMULTI_USER

  GO

日志清除

  SETNOCOUNTON

  DECLARE@LogicalFileNamesysname,

  @MaxMinutesINT,

  @NewSizeINT

  USEtablename--要操作的数据库名

  Select@LogicalFileName='tablename_log',--日志文件名

  @MaxMinutes=10,--Limitontimeallowedtowraplog.

  @NewSize=1--你想设定的日志文件的大小(M)

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2