数据库专题sql server 数据库语法大全.docx

上传人:b****2 文档编号:18087117 上传时间:2023-04-24 格式:DOCX 页数:24 大小:22.54KB
下载 相关 举报
数据库专题sql server 数据库语法大全.docx_第1页
第1页 / 共24页
数据库专题sql server 数据库语法大全.docx_第2页
第2页 / 共24页
数据库专题sql server 数据库语法大全.docx_第3页
第3页 / 共24页
数据库专题sql server 数据库语法大全.docx_第4页
第4页 / 共24页
数据库专题sql server 数据库语法大全.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据库专题sql server 数据库语法大全.docx

《数据库专题sql server 数据库语法大全.docx》由会员分享,可在线阅读,更多相关《数据库专题sql server 数据库语法大全.docx(24页珍藏版)》请在冰豆网上搜索。

数据库专题sql server 数据库语法大全.docx

数据库专题sqlserver数据库语法大全

陈老师delphi培训第十三课:

数据库专题-sqlserver数据库语法大全及应用配套视频

★qq语音课主讲内容★:

演示对表中的数据进行读写管理的语法案例;

1)插入:

insertinto人员表(工号,姓名,性别)values('gh007','周伯通','男')

2)修改:

update人员表set姓名='欧阳锋'where工号='gh001'

3)删除:

deletefrom人员表where工号='gh007'

4)查询:

select*from人员表where工号='gh001'

6.sql向表中增加一个“列”的语法;

【语法】

altertabletable-nameaddcolumncoltype

【举例】

altertable人员表add年龄nvarchar(10)null

【说明】

增加的字段必须指定数据类型,如果是字符型的,必须指定长度。

附:

删除列的语法:

altertable人员表dropcolumn性别

附:

修改某列的数据类型的语法:

altertable工资表altercolumn工号varchar(100)

1.sql创建数据库的语法;

【语法】

createdatabasedatabase-name

【举例】

createdatabasemy_rsgl(创建:

人事管理库)

【说明】

本代码用于创建数据库,可在“企业管理器”中执行,也可以在“查询分析器”中执行,也可以在delphi等开发工具中执行。

以下将要讲到的语法都有多种执行方式,下文不再复述。

2.sql删除数据库的语法;

【语法】

dropdatabasedatabase-name

【举例】

dropdatabasemy_rsgl(删除:

人事管理库)

【说明】

删除数据库之前,必须确认数据库是否真的要删除,如果数据库中还包含着重要的数据,删除之后就后悔莫及,所以不要随意操作这个命令。

3.sql备份、恢复数据库的语法;

a、怎样备份?

【语法】

backupdatabasedatabase-nametodisk=路径

【举例】

backupdatabasemy_rsgltodisk='f:

\back1.bak'

【说明】

备份数据库时,除指定有效的硬盘路径以外,注意还要取一个文件名。

B、怎样恢复?

【语法】

usemasterrestoredatabasedatabase-namefromdisk=路径withreplace

【举例】

usemasterrestoredatabasemy_rsglfromdisk='f:

\back1.bak'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里面,删除表是真正的删除,不是伪删除。

6.sql向表中增加一个“列”的语法;

【语法】

altertabletable-nameaddcolumncoltype

【举例】

altertable人员表add年龄nvarchar(10)null

【说明】

增加的字段必须指定数据类型,如果是字符型的,必须指定长度。

附:

删除列的语法:

altertable人员表dropcolumn性别

附:

修改某列的数据类型的语法:

altertable工资表altercolumn工号varchar(100)

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)

【举例】

insertinto人员表(工号,姓名,性别)values('gh006','黄刚','男')

【说明】

只有给选定字段插入数据时,才需要在表名的后面用“()”来排列字段名。

13.sql修改表中某条数据的语法;

【语法】

update表名setfield1=value1where范围

【举例】

update人员表set姓名='洪七公'where工号='gh001'

【说明】

写修改语句时,注意一般要指定where条件语句,否则就是对整个表的所有记录作修改,可能产生预期之外的严重后果。

14.sql删除表中某条数据的语法;

【语法】

deletefrom表名where范围

【举例】

deletefrom人员表where工号='gh002'

【说明】

如果没写where条件语句,那么删除的就是整个表的全部记录。

15.sql查询表中数据的语法;

【语法】

select*from表名where范围

【举例】

查出全部字段:

select*from人员表where工号='gh001'

只查出指定字段:

select工号,姓名from人员表where工号='gh001'

【说明】

“*”是通配符,表示查出全部字段。

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

【说明】

本运算符在sqlserver2000中不支持,sqlserver2005版本及后续版中支持。

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语法;

【作用】

右外连接(右连接):

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

【举例】

假设有这样两个表:

表一:

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

姓名备注

Aa1111111

Bb2222222

Cc3333333

表二:

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

姓名年龄性别

Aa22男

Tt33女

Cc44男

Gg55女

对于右外连接:

Selecta.*,b.*

From表一asarightjoin表二asb

Ona.姓名=b.姓名

则查询的结果为:

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

姓名备注年龄性别

Aa111111122男

Ttnull33女

Cc33333344男

Ggnull55女

22.sqlfull/cross(outer)join语法;

【作用】

全外连接:

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

【举例】

selecta.*,b.*

From表一asafullouterjoin表二asb

Ona.姓名=b.姓名

23.sqlgroupby分组的语法;

【语法】

select字段,sum(字段)as字段名from表名groupby字段

【举例】

select月份,sum(工资)as月工资合计from人员表groupby月份

【说明】

分组字段不能是:

text,ntext,image类型的字段。

24.sql分离数据库的语法;

【语法】

execsp_detach_db'数据库名','true'

【举例】

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'c:

\人事管理库.mdf',

@filename2=n'c:

\人事管理库.ldf'

例2:

execsp_attach_db@dbname=n'my_rsgl',

@filename1=n'c:

\programfiles\microsoftsqlserver\mssql\data\my_rsgl.mdf',

@filename2=n'c:

\programfiles\microsoftsqlserver\mssql\data\my_rsgl_log.ldf'

26.sql修改数据库名称的语法;

【语法】

execsp_renamedb'old_name','new_name'

【举例】

execsp_renamedb'人事管理库','人员管理库'

【说明】

注意此修改只是改变了数据库的名称,而不是它在硬盘上的文件名。

27.sqlbetween的用法;

【作用】

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

【语法】

select*fromtable1wheretimebetweentime1andtime2

selecta,b,cfromtable1whereanotbetween数值1and数值2

【举例】

select*from人员表

where(日期between'1997-12-01'and'2012-06-01')

select*from人员表

where(年龄notbetween30and40)

【说明】

用来比较的字段要求是数值类型的字段或日期型字段。

28.sqlin的用法;

【作用】

查找“在”或“不在”指定范围的数据。

【语法】

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语句的作用很大,但是用于比较的数据越多,得出结果的速度就越慢。

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='f:

\back1.bak'

【说明】

验证备份但不还原备份。

检查备份集是否完整以及所有卷是否都可读。

但是,restoreverifyonly不尝试验证备份卷中的数据结构。

如果备份有效,则microsoftsqlserver2000返回此消息:

"备份集有效"。

34.sql修复数据库的语法;

【语法】

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提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

35.sql清除日志的写法;

【举例】

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='bac

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1