《2022年数据库语法大全 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库语法大全 .pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 演示对表中的数据进行读写管理的语法案例;1)插入: insert into 人员表 (工号, 姓名, 性别) values (gh007,周伯通 ,男) 2)修改: update 人员表 set 姓名= 欧阳锋 where 工号= gh001 3)删除: delete from 人员表 where 工号= gh007 4)查询: select * from 人员表 where 工号= gh0016.sql向表中增加一个“列”的语法;【语法】alter table table-name add column col type 【举例】alter table 人员表 add 年龄 nvarch
2、ar(10) null 【说明】增加的字段必须指定数据类型,如果是字符型的,必须指定长度。附:删除列的语法:alter table 人员表 drop column 性别附:修改某列的数据类型的语法:alter table 工资表 alter column 工号 varchar(100) 1.sql创建数据库的语法;【语法】create database database-name 【举例】create database my_rsgl (创建:人事管理库)【说明】本代码用于创建数据库,可在“企业管理器”中执行,也可以在“查询分析器”中执行,也可以在delphi等开发工具中执行。以下将要讲到的语
3、法都有多种执行方式,下文不再复述。2.sql删除数据库的语法;【语法】drop database database-name 【举例】drop database my_rsgl (删除:人事管理库)【说明】删除数据库之前, 必须确认数据库是否真的要删除,如果数据库中还包含着重要的数据,删除之后就后悔莫及,所以不要随意操作这个命令。3.sql备份、恢复数据库的语法;a、怎样备份?【语法】backup database database-name to disk=路径【举例】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
4、理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 2 backup database my_rsgl to disk= f:back1.bak 【说明】备份数据库时,除指定有效的硬盘路径以外,注意还要取一个文件名。B、怎样恢复?【语法】use master restore database database-name from disk=路径 with replace 【举例】use master restore database my_rsgl from disk=f:back1.bak with replace 【说明】恢复数据库时,在后面加上:
5、with replace ,是表示按“完全恢复”的方式进行恢复。4.sql创建表的语法;【语法】create table tabname(col1 type1 not null primary key,col2 type2 not null,.) 【举例】create table 人员表 ( 工号 nvarchar (50) collate chinese_prc_ci_as null,姓名 nvarchar (50) collate chinese_prc_ci_as null,性别 nvarchar (2) collate chinese_prc_ci_as null) on primar
6、y 【说明】代码中,表名、字段名和数据类型都要写在“ ”里面,如果字段的类型是字符型,都必须在“ () ”里面指定长度。5.sql删除表的语法;【语法】drop table table-name 【举例】drop table 人员表 (删除:人员表)【说明】删除表以及表中的全部数据,注意在sql server里面,删除表是真正的删除,不是伪删除。6.sql向表中增加一个“列”的语法;【语法】alter table table-name add column col type 【举例】alter table 人员表 add 年龄 nvarchar(10) null 【说明】增加的字段必须指定数据
7、类型,如果是字符型的,必须指定长度。附:删除列的语法:alter table 人员表 drop column 性别附:修改某列的数据类型的语法:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 3 alter table 工资表 alter column 工号 varchar(100) 7.sql给表中的字段增加“主键”的语法;a、怎样增加主键?【语法】alter table-name add primary key (col)
8、 【举例】alter table 人员表 add primary key (工号) 【说明】不能在可以为“空”的字段上增加主键,否则会报错。B、怎样删除主键?【语法】alter table-name drop 主键约束【举例】alter table 人员表 drop pk_ 人员表8.sql给表中的字段创建“索引”的语法;【语法】create unique index idxname on tabname(col,.) 【举例】create unique index index_gh on 人员表 ( 工号) 【说明】跟字段创建索引后,可用于查询语句中,提高检索速度。9.sql删除表中某个“索
9、引”的语法;【语法】drop index idxname 【举例】drop index 人员表.index_gh 【说明】注意索引一旦建立后,不能修改,只能先删除了重新建立。10.sql创建视图的语法;【语法】create view viewname as select statement 【举例】create view v_ryb as select * from 人员表【说明】不引用变量的查询语句,都可以用代码创建视图。11.sql删除视图的语法;【语法】drop view viewname 【举例】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
10、- - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - 4 drop view v_ryb 12.sql向表中插入数据的语法;【语法】insert into table1(field1,field2) values(value1,value2) 【举例】insert into 人员表 ( 工号, 姓名, 性别) values (gh006,黄刚,男) 【说明】只有给选定字段插入数据时,才需要在表名的后面用“() ”来排列字段名。13.sql修改表中某条数据的语法;【语法】update 表名 set field1=value
11、1 where 范围【举例】update 人员表 set 姓名= 洪七公 where 工号= gh001 【说明】写修改语句时, 注意一般要指定 where 条件语句,否则就是对整个表的所有记录作修改,可能产生预期之外的严重后果。14.sql删除表中某条数据的语法;【语法】delete from 表名 where 范围【举例】delete from 人员表 where 工号= gh002 【说明】如果没写 where 条件语句,那么删除的就是整个表的全部记录。15.sql查询表中数据的语法;【语法】select * from 表名 where 范围【举例】查出全部字段: select * fr
12、om 人员表 where 工号= gh001 只查出指定字段: select 工号, 姓名 from 人员表 where 工号= gh001 【说明】“*”是通配符,表示查出全部字段。16.sql排序、求总、求和、求平均、取最大、取最小的语法;a、排序【语法】select * from 表名 order by field1,field2 desc 【举例】select * from 人员表 order by gh,xm desc (降序) select * from 人员表 order by gh,xm asc (升序) b、求总名师资料总结 - - -精品资料欢迎下载 - - - - - -
13、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 5 【语法】select count as totalcount from 表名【举例】select count(*) as 记录数 from 人员表c、求和【语法】select sum(字段) as sumvalue from 表名【举例】select sum(工资) as 工资合计 from 人员表d、求平均【语法】select avg(字段) as avgvalue from 表名【举例】select avg(工资) as 平均工资 f
14、rom 人员表e、取最大【语法】select max(字段) as maxvalue from 表名【举例】select max(工资) as 最大工资 from 人员表f 、取最小【语法】select min(字段) as minvalue from 表名【举例】select min(工资) as 最小工资 from 人员表17.sql union运算符的用法;【作用】union 运算符通过组合其他两个结果表(例如 table1 和 table2 )并消去表中任何重复行而组合生出一个结果表。当 all 随 union 一起使用时(即 union all ),不消除重复行。两种情况下,组合表的
15、每一行不是来自 table1 就是来自 table2 。【举例】不消除重复行的写法:select gh,xm,xb from 人员表 1 union all select gh,xm,xb from 人员表 2 消除重复行的写法:select gh,xm,xb from 人员表 1 union select gh,xm,xb from 人员表 2 【说明】用来组合的所有表的字段必须一致、或参与组合的表的字段必须一致。18.sql except运算符的用法;【作用】except 运算符通过包括所有在 table1 中但不在 table2 中的行、并消除所有重复行而派生出一个结果表。当 all 随
16、 except 一起使用时 (except all) ,不消除重复行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 6 【举例】select gh,xm,xb from 人员表 1 except all select gh,xm,xb from 人员表 2 【说明】本运算符在 sql server 2000 中不支持, sql server 2005 版本及后续版中支持。19.sql intersect运算符的用法;【作用】
17、intersect 运算符通过只包括 table1 和 table2 中都有的行、并消除所有重复行而派生出一个结果表。当 all 随 intersect 一起使用时 (intersect all),不消除重复行。【举例】select gh,xm,xb from 人员表 1 intersect all select gh,xm,xb from 人员表 2 【说明】本运算符在 sql server 2000 中不支持, sql server 2005 版本及后续版中支持。20.sql left (outer ) join 语法;【作用】左外连接(左连接): 结果集既包括连接表的匹配行,也包括左连接
18、表的所有行。【举例】假设有这样两个表:表一:- 姓名备注Aa 1111111 Bb 2222222 Cc 3333333 表二: - 姓名年龄性别Aa 22 男Tt 33 女名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 7 Cc 44 男Gg 55 女对于左外连接:Select a.*,b.* From 表一 as a left join 表二 as b On a. 姓名=b.姓名则查询的结果为:- 姓名备注年龄性别Aa 1
19、111111 22 男Bb 2222222 null null Cc 333333 44 男21.sql right(outer ) join语法;【作用】右外连接 (右连接 ) :结果集既包括连接表的匹配连接行,也包括右连接表的所有行。【举例】假设有这样两个表:表一:- 姓名备注Aa 1111111 Bb 2222222 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - 8 Cc 3333333 表二: - 姓名年龄性别Aa
20、22 男Tt 33 女Cc 44 男Gg 55 女对于右外连接:Select a.*,b.* From 表一 as a right join 表二 as b On a. 姓名=b.姓名则查询的结果为:- 姓名备注年龄性别Aa 1111111 22 男Tt null 33 女Cc 333333 44 男Gg null 55 女22.sql full/cross (outer ) join语法;【作用】全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。【举例】select a.*,b.* From 表一 as a full outer join 表二 as b 名师资料总结 -
21、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 9 On a. 姓名=b.姓名23.sql group by分组的语法;【语法】select 字段,sum(字段) as 字段名 from 表名 group by 字段【举例】select 月份,sum(工资) as 月工资合计 from 人员表 group by 月份【说明】分组字段不能是: text,ntext,image类型的字段。24.sql分离数据库的语法;【语法】exec sp_det
22、ach_db 数据库名 , true 【举例】exec sp_detach_db 人事管理库 , true 25.sql附加数据库的语法;【语法】exec sp_attach_db dbname= 数据库名 ,filename1=nc:program filessql server 路径名+.mdf,filename2=n.填写路径 .+.ldf 【举例】例 1:exec sp_attach_db dbname=n 人事管理库 人事管理库 .mdf, 人事管理库 .ldf 例 2:exec sp_attach_db dbname=nmy_rsgl, filename1=nc:program f
23、ilesmicrosoft sql servermssqldatamy_rsgl.mdf, filename2=nc:program filesmicrosoft sql servermssqldatamy_rsgl_log.ldf 26.sql修改数据库名称的语法;【语法】exec sp_renamedb old_name, new_name 【举例】exec sp_renamedb 人事管理库 , 人员管理库 【说明】注意此修改只是改变了数据库的名称,而不是它在硬盘上的文件名。27.sql between的用法;【作用】between 限制查询数据范围时包括了边界值,not between
24、不包括【语法】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - 10 select * from table1 where time between time1 and time2 select a,b,c from table1 where a not between 数值 1 and 数值 2 【举例】select * from 人员表where ( 日期 between 1997-12-01 and 2012-06-01)
25、 select * from 人员表where ( 年龄 not between 30 and 40) 【说明】用来比较的字段要求是数值类型的字段或日期型字段。28.sql in的用法;【作用】查找“在”或“不在”指定范围的数据。【语法】select * from table1 where a not in (值 1,值 2,值 4,值 6) 【举例】select * from 人员表 where ( 年龄 not in (20, 30, 50, 60) select * from 人员表 where ( 年龄 in (20, 30, 50, 60) 【延伸】select * from 人员表
26、 where 工号 in (select 工号 from 工资表 ) select * from 人员表 where 工号 not in (select 工号 from 工资表 ) 【说明】in 语句的作用很大,但是用于比较的数据越多,得出结果的速度就越慢。29.sql top的用法;【作用】查找指定范围的数据的前几条,默认从首条开始返回。【语法】select top n * from table1 (n 表示条数,用整数)【举例】select top 3 * from 人员表【延伸】select top 2 * from 人员表 where ( 性别 = 女) 【说明】top 语句适合用在提
27、取少量数据用于显示、或需要提取指定条数的记录。30.sql exists的用法;【作用】查找当前表在别的表中“存在”或“不存在”的记录。【语法】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 11 select * from table1 where not exists ( select * from table2 where table1.field1=table2.field1 ) 【举例】select * from
28、人员表 where not exists ( select * from 工资表 where 人员表. 工号=工资表 . 工号 ) 31.sql truncate table的用法;【作用】删除表中的全部数据,而且不写日志。【语法】truncate table table1 【举例】truncate table 工资表【说明】这个命令与 delete 的作用相同,但 delete 要写日志,而且 delete 语句后面可以使用 where 条件语句。32.sql 收缩数据库的语法;【语法】dbcc shrinkdatabase (database_name, target_percent) 【
29、举例】Dbcc shrinkdatabase (userdb, 10) go 【说明】上面的代码是将 userdb 用户数据库中的文件减小,以使 userdb 中的文件有10% 的可用空间。33.sql检查备份集的语法;【语法】restore verifyonly from disk=路径【举例】restore verifyonly from disk=f:back1.bak 【说明】验证备份但不还原备份。检查备份集是否完整以及所有卷是否都可读。但是,restore verifyonly 不尝试验证备份卷中的数据结构。如果备份有效,则microsoft sql server 2000 返回此消
30、息: 备份集有效 。34.sql修复数据库的语法;【语法】alter database database-name set single_user go 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 12 dbcc checkdb(database-name,repair_allow_data_loss) with tablock go alter database database-name set multi_user
31、 go 【举例】alter database 人事管理库 set single_user go dbcc checkdb(人事管理库 ,repair_allow_data_loss) with tablock go alter database人事管理库 set multi_user go 【说明】检查指定数据库中的所有对象的分配和结构完整性、并修复错误,alter database 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。35.sql清除日志的写法;【举例】if exists (select * from sysobjects where id = objec
32、t_id(ndbo.truncate_log_file) and objectproperty(id, nisprocedure) = 1) drop procedure dbo.truncate_log_file go set quoted_identifier off set ansi_nulls on go create procedure truncate_log_file as set nocount on declare logicalfilename sysname, maxminutes int, newsize int select logicalfilename = xxx
33、x_log, - 这里的 xxxx_log 替换成泥自己数据库的log 名maxminutes = 10, newsize = 10 declare originalsize int select originalsize = size from sysfiles where name = logicalfilename declare counter int, starttime datetime, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - -
34、 - - - - - - 13 trunclog varchar(255) while originalsize*8/1024newsize begin create table dummytrans (dummycolumn char (8000) not null) select starttime = getdate(), trunclog = backup log + db_name() + with truncate_only dbcc shrinkfile (logicalfilename, newsize) exec (trunclog) while maxminutes dat
35、ediff (mi, starttime, getdate() and originalsize = (select size from sysfiles where name = logicalfilename) and (originalsize * 8 /1024) newsize begin select counter = 0 while (counter originalsize / 16) and (counter 5000) begin insert dummytrans values (fill log) delete dummytrans select counter =
36、counter + 1 end exec (trunclog) end select originalsize=size from sysfiles where name = logicalfilename drop table dummytrans end set nocount off go set quoted_identifier off set ansi_nulls on go 【说明】这段代码包含着多种语法,在使用的时候把数据库换成你要清除日志的数据库,也就是说,这段代码是通用的。36.sql循环语句的写法;【举例】declare i int set i=1 while i=35
37、3)逻辑运算符:select 工号, 姓名, 年龄 from 人员表 where ( 年龄=20 or 年龄=40 or 年龄55) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - 16 4)集合运算符:select * from 人员表 where ( 年龄 not in (20, 30, 50, 55) 8. 演示表与表之间数据交换的应用案例;insert into 工资表 ( 工号, 月份) select 工号, 一月
38、份 from 人员表9. 演示本地表与远程表之间的操作实例。1)本地表写入远程表:insert opendatasource(sqloledb,data source=192.168.1.2;user id=sa;password=888 ).my_rsgl.dbo.人员表 ( 工号, 姓名) select 工号, 姓名 from 人员表2)远程表写入本地表:exec sp_addlinkedserver server = 192.168.1.2 exec sp_addlinkedsrvlogin rmtsrvname = 192.168.1.2, useself = false , locallogin = sa, rmtuser = sa , rmtpassword =sql select * into xxx01 from 192.168.1.2.人事管理库 .dbo. 人员表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -