数据库语法大全Word下载.docx
《数据库语法大全Word下载.docx》由会员分享,可在线阅读,更多相关《数据库语法大全Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
人事管理库)
本代码用于创建数据库,可在“企业管理器”中执行,也可以在“查询分析器”中执行,也可以在delphi等开发工具中执行。
以下将要讲到的语法都有多种执行方式,下文不再复述。
2.sql删除数据库的语法;
dropdatabasedatabase-name
dropdatabasemy_rsgl(删除:
删除数据库之前,必须确认数据库是否真的要删除,如果数据库中还包含着重要的数据,删除之后就后悔莫及,所以不要随意操作这个命令。
3.sql备份、恢复数据库的语法;
a、怎样备份?
backupdatabasedatabase-nametodisk=路径
backupdatabasemy_rsgltodisk='
f:
\back1.bak'
备份数据库时,除指定有效的硬盘路径以外,注意还要取一个文件名。
B、怎样恢复?
usemasterrestoredatabasedatabase-namefromdisk=路径withreplace
usemasterrestoredatabasemy_rsglfromdisk='
withreplace
恢复数据库时,在后面加上:
withreplace,是表示按“完全恢复”的方式进行恢复。
4.sql创建表的语法;
createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)
createtable[人员表]([工号][nvarchar](50)collatechinese_prc_ci_asnull,[姓名][nvarchar](50)collatechinese_prc_ci_asnull,[性别][nvarchar]
(2)collatechinese_prc_ci_asnull)on[primary]
代码中,表名、字段名和数据类型都要写在“[]”里面,如果字段的类型是字符型,都必须在“()”里面指定长度。
5.sql删除表的语法;
droptabletable-name
droptable人员表(删除:
人员表)
删除表以及表中的全部数据,注意在sqlserver里面,删除表是真正的删除,不是伪删除。
7.sql给表中的字段增加“主键”的语法;
a、怎样增加主键?
altertable-nameaddprimarykey(col)
altertable人员表addprimarykey(工号)
不能在可以为“空”的字段上增加主键,否则会报错。
B、怎样删除主键?
altertable-namedrop主键约束
altertable人员表droppk_人员表
8.sql给表中的字段创建“索引”的语法;
create[unique]indexidxnameontabname(col….)
createuniqueindexindex_ghon人员表(工号)
跟字段创建索引后,可用于查询语句中,提高检索速度。
9.sql删除表中某个“索引”的语法;
dropindexidxname
dropindex人员表.index_gh
注意索引一旦建立后,不能修改,只能先删除了重新建立。
10.sql创建视图的语法;
createviewviewnameasselectstatement
createviewv_rybasselect*from人员表
不引用变量的查询语句,都可以用代码创建视图。
11.sql删除视图的语法;
dropviewviewname
dropviewv_ryb
12.sql向表中插入数据的语法;
insertintotable1(field1,field2)values(value1,value2)
gh006'
黄刚'
只有给选定字段插入数据时,才需要在表名的后面用“()”来排列字段名。
13.sql修改表中某条数据的语法;
update表名setfield1=value1where范围
洪七公'
写修改语句时,注意一般要指定where条件语句,否则就是对整个表的所有记录作修改,可能产生预期之外的严重后果。
14.sql删除表中某条数据的语法;
deletefrom表名where范围
gh002'
如果没写where条件语句,那么删除的就是整个表的全部记录。
15.sql查询表中数据的语法;
select*from表名where范围
查出全部字段:
只查出指定字段:
select工号,姓名from人员表where工号='
“*”是通配符,表示查出全部字段。
16.sql排序、求总、求和、求平均、取最大、取最小的语法;
a、排序
select*from表名orderbyfield1,field2[desc]
select*from人员表orderbygh,xmdesc(降序)
select*from人员表orderbygh,xmasc(升序)
b、求总
selectcountastotalcountfrom表名
selectcount(*)as记录数from人员表
c、求和
selectsum(字段)assumvaluefrom表名
selectsum(工资)as工资合计from人员表
d、求平均
selectavg(字段)asavgvaluefrom表名
selectavg(工资)as平均工资from人员表
e、取最大
selectmax(字段)asmaxvaluefrom表名
selectmax(工资)as最大工资from人员表
f、取最小
selectmin(字段)asminvaluefrom表名
selectmin(工资)as最小工资from人员表
17.sqlunion运算符的用法;
【作用】
union运算符通过组合其他两个结果表(例如table1和table2)并消去表中任何重复行而组合生出一个结果表。
当all随union一起使用时(即unionall),不消除重复行。
两种情况下,组合表的每一行不是来自table1就是来自table2。
不消除重复行的写法:
selectgh,xm,xbfrom人员表1unionallselectgh,xm,xbfrom人员表2
消除重复行的写法:
selectgh,xm,xbfrom人员表1unionselectgh,xm,xbfrom人员表2
用来组合的所有表的字段必须一致、或参与组合的表的字段必须一致。
18.sqlexcept运算符的用法;
except运算符通过包括所有在table1中但不在table2中的行、并消除所有重复行而派生出一个结果表。
当all随except一起使用时(exceptall),不消除重复行。
selectgh,xm,xbfrom人员表1exceptallselectgh,xm,xbfrom人员表2
本运算符在sqlserver2000中不支持,sqlserver2005版本及后续版中支持。
19.sqlintersect运算符的用法;
intersect运算符通过只包括table1和table2中都有的行、并消除所有重复行而派生出一个结果表。
当all随intersect一起使用时(intersectall),不消除重复行。
selectgh,xm,xbfrom人员表1intersectallselectgh,xm,xbfrom人员表2
20.sqlleft(outer)join语法;
左外连接(左连接):
结果集既包括连接表的匹配行,也包括左连接表的所有行。
假设有这样两个表:
表一:
-------------------------
姓名备注
Aa1111111
Bb2222222
Cc3333333
表二:
------------------------
姓名年龄性别
Aa22男
Tt33女
Cc44男
Gg55女
对于左外连接:
Selecta.*,b.*
From表一asaleftjoin表二asb
Ona.姓名=b.姓名
则查询的结果为:
---------------------------------------
姓名备注年龄性别
Aa111111122男
Bb2222222nullnull
Cc33333344男
21.sqlright(outer)join语法;
右外连接(右连接):
结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
对于右外连接:
From表一asarightjoin表二asb
Ttnull33女
Ggnull55女
22.sqlfull/cross(outer)join语法;
全外连接:
不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
selecta.*,b.*
From表一asafullouterjoin表二asb
23.sqlgroupby分组的语法;
select字段,sum(字段)as字段名from表名groupby字段
select月份,sum(工资)as月工资合计from人员表groupby月份
分组字段不能是:
text,ntext,image类型的字段。
24.sql分离数据库的语法;
execsp_detach_db'
数据库名'
'
true'
人事管理库'
25.sql附加数据库的语法;
execsp_attach_db@dbname='
@filename1=n'
c:
\programfiles\sqlserver路径名+.mdf'
@filename2=n'
...填写路径...+.ldf'
例1:
execsp_attach_db@dbname=n'
@filename1=n'
\人事管理库.mdf'
@filename2=n'
\人事管理库.ldf'
例2:
my_rsgl'
\programfiles\microsoftsqlserver\mssql\data\my_rsgl.mdf'
\programfiles\microsoftsqlserver\mssql\data\my_rsgl_log.ldf'
26.sql修改数据库名称的语法;
execsp_renamedb'
old_name'
new_name'
人员管理库'
注意此修改只是改变了数据库的名称,而不是它在硬盘上的文件名。
27.sqlbetween的用法;
between限制查询数据范围时包括了边界值,notbetween不包括
select*fromtable1wheretimebetweentime1andtime2
selecta,b,cfromtable1whereanotbetween数值1and数值2
select*from人员表
where(日期between'
1997-12-01'
and'
2012-06-01'
where(年龄notbetween30and40)
用来比较的字段要求是数值类型的字段或日期型字段。
28.sqlin的用法;
查找“在”或“不在”指定范围的数据。
select*fromtable1wherea[not]in('
值1'
值2'
值4'
值6'
select*from人员表where(年龄notin('
20'
30'
50'
60'
))
select*from人员表where(年龄in('
【延伸】
select*from人员表where工号in(select工号from工资表)
select*from人员表where工号notin(select工号from工资表)
in语句的作用很大,但是用于比较的数据越多,得出结果的速度就越慢。
29.sqltop的用法;
查找指定范围的数据的前几条,默认从首条开始返回。
selecttopn*fromtable1(n表示条数,用整数)
selecttop3*from人员表
selecttop2*from人员表where(性别='
女'
top语句适合用在提取少量数据用于显示、或需要提取指定条数的记录。
30.sqlexists的用法;
查找当前表在别的表中“存在”或“不存在”的记录。
select*fromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)
select*from人员表wherenotexists(select*from工资表where人员表.工号=工资表.工号)
31.sqltruncatetable的用法;
删除表中的全部数据,而且不写日志。
truncatetabletable1
truncatetable工资表
这个命令与delete的作用相同,但delete要写日志,而且delete语句后面可以使用where条件语句。
32.sql收缩数据库的语法;
dbccshrinkdatabase(database_name,target_percent)
Dbccshrinkdatabase(userdb,10)
go
上面的代码是将userdb用户数据库中的文件减小,以使userdb中的文件有10%的可用空间。
33.sql检查备份集的语法;
restoreverifyonlyfromdisk=路径
restoreverifyonlyfromdisk='
\back1.bak'
验证备份但不还原备份。
检查备份集是否完整以及所有卷是否都可读。
但是,restoreverifyonly不尝试验证备份卷中的数据结构。
如果备份有效,则microsoftsqlserver2000返回此消息:
"
备份集有效"
。
34.sql修复数据库的语法;
alterdatabasedatabase-namesetsingle_user
dbcccheckdb(database-name,repair_allow_data_loss)withtablock
alterdatabasedatabase-namesetmulti_user
alterdatabase人事管理库setsingle_user
dbcccheckdb('
repair_allow_data_loss)withtablock
alterdatabase人事管理库setmulti_user
检查指定数据库中的所有对象的分配和结构完整性、并修复错误,alterdatabase提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。
35.sql清除日志的写法;
ifexists(select*fromsysobjectswhereid=object_id(n'
[dbo].[truncate_log_file]'
)andobjectproperty(id,n'
isprocedure'
)=1)
dropprocedure[dbo].[truncate_log_file]
setquoted_identifier
off
setansi_nulls
on
createprocedure[truncate_log_file]as
setnocounton
declare@logicalfilenamesysname,
@maxminutesint,
@newsizeint
select
@logicalfilename='
xxxx_log'
--这里的xxxx_log替换成泥自己数据库的log名
@maxminutes=10,
@newsize
=10
declare@originalsizeint
select@originalsize=size
fromsysfiles
wherename=@logicalfilename
declare@counter
int,
@starttimedatetime,
@trunclog
varchar(255)
while@originalsize*8/1024>
@newsize
begin
createtabledummytrans
(dummycolumnchar(8000)notnull)
@starttime=getdate(),
@trunclog='
backuplog['
+db_name()+'
]withtruncate_only'
dbccshrinkfile(@logicalfilena