数据库语法大全.docx
- 文档编号:8849812
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:18
- 大小:22.06KB
数据库语法大全.docx
《数据库语法大全.docx》由会员分享,可在线阅读,更多相关《数据库语法大全.docx(18页珍藏版)》请在冰豆网上搜索。
数据库语法大全
演示对表中的数据进行读写管理的语法案例;
1)插入:
insertinto人员表(工号,姓名,性别)values('gh007','周伯通','男')
2)修改:
update人员表set姓名='欧阳锋'where工号='gh001'
3)删除:
deletefrom人员表where工号='gh007'
4)查询:
select*from人员表where工号='gh001'
向表中增加一个“列”的语法;
【语法】
altertabletable-nameaddcolumncoltype
【举例】
altertable人员表add年龄nvarchar(10)null
【说明】
增加的字段必须指定数据类型,如果是字符型的,必须指定长度。
附:
删除列的语法:
altertable人员表dropcolumn性别
附:
修改某列的数据类型的语法:
altertable工资表altercolumn工号varchar(100)
创建数据库的语法;
【语法】
createdatabasedatabase-name
【举例】
createdatabasemy_rsgl(创建:
人事管理库)
【说明】
本代码用于创建数据库,可在“企业管理器”中执行,也可以在“查询分析器”中执行,也可以在delphi等开发工具中执行。
以下将要讲到的语法都有多种执行方式,下文不再复述。
删除数据库的语法;
【语法】
dropdatabasedatabase-name
【举例】
dropdatabasemy_rsgl(删除:
人事管理库)
【说明】
删除数据库之前,必须确认数据库是否真的要删除,如果数据库中还包含着重要的数据,删除之后就后悔莫及,所以不要随意操作这个命令。
备份、恢复数据库的语法;
a、怎样备份?
【语法】
backupdatabasedatabase-nametodisk=路径
【举例】
backupdatabasemy_rsgltodisk='f:
\'
【说明】
备份数据库时,除指定有效的硬盘路径以外,注意还要取一个文件名。
B、怎样恢复?
【语法】
usemasterrestoredatabasedatabase-namefromdisk=路径withreplace
【举例】
usemasterrestoredatabasemy_rsglfromdisk='f:
\'withreplace
【说明】
恢复数据库时,在后面加上:
withreplace,是表示按“完全恢复”的方式进行恢复。
创建表的语法;
【语法】
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]
【说明】
代码中,表名、字段名和数据类型都要写在“[]”里面,如果字段的类型是字符型,都必须在“()”里面指定长度。
删除表的语法;
【语法】
droptabletable-name
【举例】
droptable人员表(删除:
人员表)
【说明】
删除表以及表中的全部数据,注意在sqlserver里面,删除表是真正的删除,不是伪删除。
向表中增加一个“列”的语法;
【语法】
altertabletable-nameaddcolumncoltype
【举例】
altertable人员表add年龄nvarchar(10)null
【说明】
增加的字段必须指定数据类型,如果是字符型的,必须指定长度。
附:
删除列的语法:
altertable人员表dropcolumn性别
附:
修改某列的数据类型的语法:
altertable工资表altercolumn工号varchar(100)
给表中的字段增加“主键”的语法;
a、怎样增加主键?
【语法】
altertable-nameaddprimarykey(col)
【举例】
altertable人员表addprimarykey(工号)
【说明】
不能在可以为“空”的字段上增加主键,否则会报错。
B、怎样删除主键?
【语法】
altertable-namedrop主键约束
【举例】
altertable人员表droppk_人员表
给表中的字段创建“索引”的语法;
【语法】
create[unique]indexidxnameontabname(col….)
【举例】
createuniqueindexindex_ghon人员表(工号)
【说明】
跟字段创建索引后,可用于查询语句中,提高检索速度。
删除表中某个“索引”的语法;
【语法】
dropindexidxname
【举例】
dropindex人员表.index_gh
【说明】
注意索引一旦建立后,不能修改,只能先删除了重新建立。
创建视图的语法;
【语法】
createviewviewnameasselectstatement
【举例】
createviewv_rybasselect*from人员表
【说明】
不引用变量的查询语句,都可以用代码创建视图。
删除视图的语法;
【语法】
dropviewviewname
【举例】
dropviewv_ryb
向表中插入数据的语法;
【语法】
insertintotable1(field1,field2)values(value1,value2)
【举例】
insertinto人员表(工号,姓名,性别)values('gh006','黄刚','男')
【说明】
只有给选定字段插入数据时,才需要在表名的后面用“()”来排列字段名。
修改表中某条数据的语法;
【语法】
update表名setfield1=value1where范围
【举例】
update人员表set姓名='洪七公'where工号='gh001'
【说明】
写修改语句时,注意一般要指定where条件语句,否则就是对整个表的所有记录作修改,可能产生预期之外的严重后果。
删除表中某条数据的语法;
【语法】
deletefrom表名where范围
【举例】
deletefrom人员表where工号='gh002'
【说明】
如果没写where条件语句,那么删除的就是整个表的全部记录。
查询表中数据的语法;
【语法】
select*from表名where范围
【举例】
查出全部字段:
select*from人员表where工号='gh001'
只查出指定字段:
select工号,姓名from人员表where工号='gh001'
【说明】
“*”是通配符,表示查出全部字段。
排序、求总、求和、求平均、取最大、取最小的语法;
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人员表
union运算符的用法;
【作用】
union运算符通过组合其他两个结果表(例如table1和table2)并消去表中任何重复行而组合生出一个结果表。
当all随union一起使用时(即unionall),不消除重复行。
两种情况下,组合表的每一行不是来自table1就是来自table2。
【举例】
不消除重复行的写法:
selectgh,xm,xbfrom人员表1unionallselectgh,xm,xbfrom人员表2
消除重复行的写法:
selectgh,xm,xbfrom人员表1unionselectgh,xm,xbfrom人员表2
【说明】
用来组合的所有表的字段必须一致、或参与组合的表的字段必须一致。
except运算符的用法;
【作用】
except运算符通过包括所有在table1中但不在table2中的行、并消除所有重复行而派生出一个结果表。
当all随except一起使用时(exceptall),不消除重复行。
【举例】
selectgh,xm,xbfrom人员表1exceptallselectgh,xm,xbfrom人员表2
【说明】
本运算符在sqlserver2000中不支持,sqlserver2005版本及后续版中支持。
intersect运算符的用法;
【作用】
intersect运算符通过只包括table1和table2中都有的行、并消除所有重复行而派生出一个结果表。
当all随intersect一起使用时(intersectall),不消除重复行。
【举例】
selectgh,xm,xbfrom人员表1intersectallselectgh,xm,xbfrom人员表2
【说明】
本运算符在sqlserver2000中不支持,sqlserver2005版本及后续版中支持。
left(outer)join语法;
【作用】
左外连接(左连接):
结果集既包括连接表的匹配行,也包括左连接表的所有行。
【举例】
假设有这样两个表:
表一:
-------------------------
姓名备注
Aa1111111
Bb2222222
Cc3333333
表二:
------------------------
姓名年龄性别
Aa22男
Tt33女
Cc44男
Gg55女
对于左外连接:
Selecta.*,b.*
From表一asaleftjoin表二asb
Ona.姓名=b.姓名
则查询的结果为:
---------------------------------------
姓名备注年龄性别
Aa111111122男
Bb2222222nullnull
Cc33333344男
right(outer)join语法;
【作用】
右外连接(右连接):
结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
【举例】
假设有这样两个表:
表一:
-------------------------
姓名备注
Aa1111111
Bb2222222
Cc3333333
表二:
------------------------
姓名年龄性别
Aa22男
Tt33女
Cc44男
Gg55女
对于右外连接:
Selecta.*,b.*
From表一asarightjoin表二asb
Ona.姓名=b.姓名
则查询的结果为:
---------------------------------------
姓名备注年龄性别
Aa111111122男
Ttnull33女
Cc33333344男
Ggnull55女
full/cross(outer)join语法;
【作用】
全外连接:
不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
【举例】
selecta.*,b.*
From表一asafullouterjoin表二asb
Ona.姓名=b.姓名
groupby分组的语法;
【语法】
select字段,sum(字段)as字段名from表名groupby字段
【举例】
select月份,sum(工资)as月工资合计from人员表groupby月份
【说明】
分组字段不能是:
text,ntext,image类型的字段。
分离数据库的语法;
【语法】
execsp_detach_db'数据库名','true'
【举例】
execsp_detach_db'人事管理库','true'
附加数据库的语法;
【语法】
execsp_attach_db@dbname='数据库名',@filename1=n'c:
\programfiles\sqlserver路径名+.mdf',@filename2=n'...填写路径...+.ldf'
【举例】
例1:
execsp_attach_db@dbname=n'人事管理库'
@filename1=n'c:
\人事管理库.mdf',
@filename2=n'c:
\人事管理库.ldf'
例2:
execsp_attach_db@dbname=n'my_rsgl',
@filename1=n'c:
\programfiles\microsoftsqlserver\mssql\data\',
@filename2=n'c:
\programfiles\microsoftsqlserver\mssql\data\'
修改数据库名称的语法;
【语法】
execsp_renamedb'old_name','new_name'
【举例】
execsp_renamedb'人事管理库','人员管理库'
【说明】
注意此修改只是改变了数据库的名称,而不是它在硬盘上的文件名。
between的用法;
【作用】
between限制查询数据范围时包括了边界值,notbetween不包括
【语法】
select*fromtable1wheretimebetweentime1andtime2
selecta,b,cfromtable1whereanotbetween数值1and数值2
【举例】
select*from人员表
where(日期between'1997-12-01'and'2012-06-01')
select*from人员表
where(年龄notbetween30and40)
【说明】
用来比较的字段要求是数值类型的字段或日期型字段。
in的用法;
【作用】
查找“在”或“不在”指定范围的数据。
【语法】
select*fromtable1wherea[not]in('值1','值2','值4','值6')
【举例】
select*from人员表where(年龄notin('20','30','50','60'))
select*from人员表where(年龄in('20','30','50','60'))
【延伸】
select*from人员表where工号in(select工号from工资表)
select*from人员表where工号notin(select工号from工资表)
【说明】
in语句的作用很大,但是用于比较的数据越多,得出结果的速度就越慢。
top的用法;
【作用】
查找指定范围的数据的前几条,默认从首条开始返回。
【语法】
selecttopn*fromtable1(n表示条数,用整数)
【举例】
selecttop3*from人员表
【延伸】
selecttop2*from人员表where(性别='女')
【说明】
top语句适合用在提取少量数据用于显示、或需要提取指定条数的记录。
exists的用法;
【作用】
查找当前表在别的表中“存在”或“不存在”的记录。
【语法】
select*fromtable1wherenotexists(select*fromtable2where=)
【举例】
select*from人员表wherenotexists(select*from工资表where人员表.工号=工资表.工号)
truncatetable的用法;
【作用】
删除表中的全部数据,而且不写日志。
【语法】
truncatetabletable1
【举例】
truncatetable工资表
【说明】
这个命令与delete的作用相同,但delete要写日志,而且delete语句后面可以使用where条件语句。
收缩数据库的语法;
【语法】
dbccshrinkdatabase(database_name,target_percent)
【举例】
Dbccshrinkdatabase(userdb,10)
go
【说明】
上面的代码是将userdb用户数据库中的文件减小,以使userdb中的文件有10%的可用空间。
检查备份集的语法;
【语法】
restoreverifyonlyfromdisk=路径
【举例】
restoreverifyonlyfromdisk='f:
\'
【说明】
验证备份但不还原备份。
检查备份集是否完整以及所有卷是否都可读。
但是,restoreverifyonly不尝试验证备份卷中的数据结构。
如果备份有效,则microsoftsqlserver2000返回此消息:
"备份集有效"。
修复数据库的语法;
【语法】
alterdatabasedatabase-namesetsingle_user
go
dbcccheckdb(database-name,repair_allow_data_loss)withtablock
go
alterdatabasedatabase-namesetmulti_user
go
【举例】
alterdatabase人事管理库setsingle_user
go
dbcccheckdb('人事管理库',repair_allow_data_loss)withtablock
go
alterdatabase人事管理库setmulti_user
go
【说明】
检查指定数据库中的所有对象的分配和结构完整性、并修复错误,alterdatabase提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。
清除日志的写法;
【举例】
ifexists(select*fromsysobjectswhereid=object_id(n'[dbo].[truncate_log_file]')andobjectproperty(id,n'isprocedure')=1)
dropprocedure[dbo].[truncate_log_file]
go
setquoted_identifier off setansi_nulls on
go
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)
select @starttime=getdate(),
@trunclog='backuplog['+db_name()+']withtruncate_only'
dbccshrinkfile(@logicalfilename,@newsize)
exec(@trunclog)
while @maxminutes>datediff(mi,@starttime,getdate())
and@originalsize=(selectsizefromsysfileswherename=@logical
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 语法 大全