SQL语句大全.docx
- 文档编号:24581565
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:20
- 大小:22.73KB
SQL语句大全.docx
《SQL语句大全.docx》由会员分享,可在线阅读,更多相关《SQL语句大全.docx(20页珍藏版)》请在冰豆网上搜索。
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 大全