第1章关系数据库语言SQL和Transact-SQL_第1页
第1章关系数据库语言SQL和Transact-SQL_第2页
第1章关系数据库语言SQL和Transact-SQL_第3页
第1章关系数据库语言SQL和Transact-SQL_第4页
第1章关系数据库语言SQL和Transact-SQL_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章关系数据库语言SQL和Transact-SQL SQL Server 2000支持ANSI SQL(标准SQL,简称SQL),并将标准SQL扩展成为了更加实用的Transact-SQL。为了便于学习和实验,本章将标准SQL和Transact-SQL的语法对照列出,并给出了一些典型实例。1.1数据定义语言 SQL的数据定义功能主要包括对基本表、索引和视图的定义与维护;Transact-SQL的数据定义功能包括数据库和数据库对象的创建与管理功能,数据库对象有基本表、索引、视图、缺省、规则、触发器和存储过程等。1.1.1标准SQL的数据定义语言 SQL的基本表定义和维护功能使用基本表的定义、修

2、改和删除三种语句实现。 1.定义基本表 SQL语言使用CREATE TABLE语句定义基本表,定义基本表语句的一般格式为: CREATE TABLE (表名)( ,n ,n); (1) SQL支持的数据类型 不同的数据库系统支持的数据类型不完全相同。IBM DB2 SQL支持的数据类型见表1-1,尽管表1-1中列出了许多数据类型,但实际上使用最多的是字符型数据和数值数据。因此,要求必须熟练掌握CHAR、INTEGER、SMALLINT和DECIMAL数据类型。表1-1IBM DB2 SQL支持的主要数据类型 类型表示 类型说明SMALLINT半字长二进制整数。15bits数据INTEGER或I

3、NT全字长(四字长)整数。31bits数据数值型数据DECIMAL(p,q)十进制数,共P位,其中小数点后q位。Oqp,q=0时可省略不写FLOAT双字长浮点数CHARTER(n)或CHAR(n)长度为n的定长字符串字符型数据VARCHAR(n)最大长度为n的变长字符串GRAPHIC(n)长度为n的定长图形字符串特殊数据类型VARGRAPHIC(n)最大长度为n的变长图形字符串DATE日期型,格式为YYYY-MM-DD日期时间型 TIME时间型,格式为HH.MM.SS TIMESTAMP日期加时间 (2)列级完整性约束条件 列级完整性约束是针对属性值设置的限制条件。SQL的列级完整性条件有以下

4、4种: 1)NOT NULL或NULL约束。 NOT NULL约束是不允许字段值为空,而NULL约束是允许字段值为空。字段值为空的含义是该属性值“不详”、“含糊”或“无意义”。对于关系的主属性,必须限定是“N01 NULL”,以满足实体完整性;而对于一些不重要的属性,例如学生的爱好、特长等,则可以不输入字段值,即允许为NULL值。 2)UNIQUE约束。 UNIQUE约束是惟一性约束,即不允许该关系的该列中出现有重复的属性值。 3)DEFAULT约束。 DEFAULT为默认值约束。将列中的使用频率最高的属性值定义为DEFAULT约束中的默认值,可以减少数据输入的工作量。 DEFAULT约束的格

5、式为:DEFAULT FOR 4)CHECK约束。 CHECK为检查约束。CHECK约束通过约束条件表达式设置列值应满足的条件。 CHECK约束的格式为: CONSTRAINT CHECK () 列级约束的约束条件表达式中只涉及到一个列的数据。如果约束条件表达式涉及到多列属性,则它就成为表级的约束条件,应当作为表级完整性条件表示。 (3)表级完整性约束条件 表级完整性约束条件是指涉及到关系中多个列的限制条件。在上述的CHECK约束中,如果约束条件表达式中涉及到多列数据,它便为表级约束。表级约束有以下3种: 1)UNIQUE约束。 UNIQUE约束是惟一性约束。当要求列组的值不能有重复值时,就需

6、要使用UNIQUE约束定义。 2)PRIMARY KEY约束。 PRIMARY KEY约束是实体完整性约束。PRIMARY KEY约束用于定义主码,它能保证主码的惟一性和非空性。PRIMARY KEY约束可直接写在主码后,也可按语法单独列出。 PRIMARY KEY 约束的语法为: CONSTRAINT PRIMARY KEY CLUSTERED ( ) 其中,CLUSTERED短语为建立聚簇。 3)FOREIGN KEY约束。 FOREIGN KEY约束即外码和参照表约束,它用于定义参照完整性。 FOREIGN KEY约束语法为: CONSTRAINT FOREIGN KEY ( )REFE

7、RENCES ( )2修改基本表 SQL语言用ALTER TABLE语句来修改基本表,其一般格式为: ALTER TABLE ADD(完整性约束,n) DROP MODIFY(,n); 可以看出,基本表的修改有3种情况: (1)使用ADD子句增加新列 当向表中增加新列和新的完整性约束时,需要使用ADD子句对表结构进行修改操作。 【例1-1】 向课程表中增加“学时”字段。 ALTER TABLE课程ADD学时SMALLINT; (2)使用MODIFY子句修改列的原定义 MODIFY子句主要用于加宽原列的宽度。尽管有些系统允许对列名和数据类型进行修改,但一般不允许这样做,以免丢失原表中的数据。 (

8、3)使用DROP子句删除指定的完整性约束条件 【例1-2】 删除学生表中对年龄的默认值的定义。 ALTER TABLE学生DROP C1;3删除基本表删除基本表语句的一般格式为: DROP TABLE ;4索引定义和维护 在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式为: CREATE UNIQUECLUSTERINDEX(索引名) ON (,); 其中: 1)是要建索引的基本表的名字。索引可以建在该表的一列或多列上,各列名之间用逗号分隔。 2)每个(列名)后面还可以用(次序)指定索引值的排列次序,次序可选ASC(升序)或DESC(降序),缺省值为ASC。 3)UNIQU

9、E表示该索引的每一个索引值只对应惟一的数据记录。 4)CLUSTER表示要建立的索引是聚簇索引。聚簇索引使基本表中数据的物理顺序与索引项的排列顺序一致。 SQL语言使用DROP INDEX语句删除索引,其一般格式为: DROPINDEX :5视图的定义和维护SQL语言用CREATE VIEW来定义视图,其一般格式为: CREATE VIEW (列名组) AS WITH CHECK OPTION; 定义视图的格式中,有两点需要说明: (1)WITH CHECK OPTION选项 选择项WITH CHECK OPTION表示在对视图进行UPDATE、INSERT和DELETE操作时,要保证操作的数

10、据满足视图定义中的谓词条件。该谓词条件是视图子查询中的WHERE子句的条件。 (2)组成视图的属性列名全部省略或者全部指定 若省略了视图的各个属性列名,则该视图的属性为子查询中的SELECT子句的目标列。必须明确指定组成视图的所有列名的3种情况是:某个目标列不是单纯的属性名,而是集函数或列表达式;子查询中使用多个表(或视图),并且目标列中含有相同的属性名;需要在视图中改用新的、更合适的列名。1.1.2Transact - SQL的数据定义语言 1.创建和管理数据库 (1)创建数据库 创建数据库包括:定义数据库名;确定数据库文件及其大小;确定事务日志文件的位置和大小。创建数据库使用CREATE

11、DATABASE语句,其语法为: CREATE DATABASE ON PRIMARY( NAME = , FILENAME = ,SIZE = ,MAXSIZE = 最大长度) ,FILEROWTH = ),n LOG ON (NAME = , FILENAME = ,SIZE = ),n FOR RESTORE 数据库定义语句中包括以下4个方面的内容: 1)定义数据库名。 2)定义数据文件。在ON子句中:PRIMARY短语指明主文件名(mdf);NAME短语说明逻辑数据文件名;FILENAME短语指明物理数据文件的存储位置和文件名;SIZE短语说明文件的大小,数据库文件最小为1MB,默认值

12、为3MB;MAXSIZE短语指明文件的最大空间;FILEROWTH短语说明文件的增长率,其默认值为10。可以定义多个数据文件,默认第一个为主文件。 3)定义日志文件。在LOG ON子句中:NAME短语说明逻辑日志文件名;FILENAME短语指明日志文件的存储位置和文件名;SIZE短语指明日志文件的长度。可以定义多个日志文件。 4)FOR RESTORE子句说明能重建一个数据库,该重建的数据库用于数据恢复操作。 (2)选择数据库 数据库的选择使用USE命令,其格式为: USE 注意:在Transact-SQL中没有语法结束符号。语句结束后按键,并另起一行输入GO语句,再按键。否则语句不会执行。

13、(3)删除数据库 删除数据库的语法为: DROP DATABASE 2定义表 定义基本表的格式为: CREATE TABLE (AS , ) 上述格式有以下问题需要说明。 (1)字段约束 字段约束可以使用以下短语定义: 1)NOT NULL|NULL:定义不允许或允许字段值为空。 2)PRIMARY KEY CLUSTEREDNON CLUSTERED:定义该字段为主码并建立聚集或非聚集索引。 3) REFERENCE ():定义该字段为外码,并指出被参照表及对应字段。 4) DEFAULT :定义字段的缺省值。 5) CHECK ():定义字段应满足的条件表达式。 6) IDENTITY (

14、,):定义字段为数值型数据,并指出它的初始值和逐步增加的步长值。 (2)记录约束记录约束的格式为: CONSTRAINT 约束式主要有以下4种: 1)PRIMARY KEY CLUSTEREDNONCLUSTERED():定义表的主码并建立主码的聚集或非聚集索引。 2) FOREIGN KEY () REFERENCES ():指出表的外码和被参照表。 3) CHECK ( ) :定义记录应满足的条件。 4)UNIQUE ( ) :定义不允许重复值的字段组。 (3)数据类型 SQL Server 2000提供许多实用的数据类型,并具有定义用户数据类型的功能。表1-2中列出了SOL Server

15、 2000提供的主要数据类型。表1-2SQL Server 2000支持的主要数据类型类型表示类型说明Int 全字长(四字节)整数,其中31 bits表示数据,1位符号。取值范围为-Smallint 半字长的整数,取值范围为-3276832767Tinyint 只占一个字节的正数,表示范围为0255数值型数据Real 4字节长的浮点数,最大精度为7位,取值范围为3.4E-383.4E+38Float(n) 精度为n的浮点数,其精度n的可以为115,若忽略n则精度为15。最多占用字节数为8,表示范围为1.7E-3081.7E+308ecimal(p,q) 十进制,共P位,q位小数,可用211个字

16、节存放1-38位精度的数值CHAR(n) 长度为n的定长字符串,最多可为255个字符字符型数据VarCHAR(n) 最大长度为n的变长字符串型数据,最多可达到255个字符日期、时间型数据Datetime 日期时间型数据,可存储11175312319999之间的日期时间,缺省表示为MMDDYYYYhhmm AMPMSmalldatetime 日期时间型数据,可表示111900662079时间特殊数据类型Binary(n) 长度为n个字节的位模式(二进制数),输入0F二进制数时,第一个值必须以Ox开头Varbinary(n) 最大长度为n个字节的变长位模式,输入方法同binary相同Text 文本

17、数据类型文本和图像数据类型Image 图像数据Money 货币数据,可存放15位整数,4位小数的数值,占8个字节货币数据类型Smallmoney 货币数据,可存放6位整数,4位小数的数值,占4个字节 3基本表的维护 (1)修改基本表 修改表的语法可分为4种。 1)修改字段的定义。 修改字段的定义主要为增加字段宽度和字段约束,而一般不允许修改字段的数据类型或减少字段宽度,更不能改动字段标识。修改字段的语法为: ALTER TABLE ALTER COLUMN NULL NOT NULL 2)增加字段和表约束规则。 增加字段和表约束规则的格式为: ALTERTABLE ADD 3)删除字段或约束规

18、则。 删除字段或表级约束规则的格式为: ALTER TABLE DROP CONSTRAINT COLUMN 4)使约束有效或无效。 使原表定义的约束暂时有效或无效的格式为: ALTER TABLE CHECK NOCHECK CONSTRAINTALL 其中:CHECK为使约束有效,NOCHECK为使约束无效;ALL指全部约束。 【例1-3】 为表examplel增加Column_b列。该列的数据类型为Varchar(20),并允许有NULL值存在。 CREATE TABLE example1 ( Column_a int ) GO ALTER TABLE example l ADD Col

19、umn_b Varchar(20)NULL GO 【例1-4】 删除表examplel的列Column_b。 ALTER TABLE examplel DROP COLUMN Column_b GO 【例1-5】 使表中的约束失效后,再重新有效。 CREATE TABLE example2 ( 编号int NOT NULL, 姓名varchar(10) NOT NULL, 工资money NOT NULL, CONSTRAINT工资约束 CHECK( 工资10000 ) ) GO ALTER TABLE example2 NOCHECK CONSTRAINT工资约束 GO ALTER TABL

20、E example2 CHECK CONSTRAINT 工资约束 G0 (2)删除基本表 删除基本表的语法为: DROPTABLE 4创建和管理索引 (1)创建索引 创建索引的语法为: CTEATEUNIQUECLUSTERED NONCLUSTERED INDEXON() WITHPAD_INDEX ,FILLFACTOR= ,IGNORE_DUP_KEY ,DROP_EXISTING ,STATISTICSNORECOMPUTEI 其中: 1)UNIQUE选项:表示建立惟一索引,即不允许有两行具有相同的索引值。 2)CLUSTERED选项:表示建立聚簇索引。每张表只能有一个聚簇索引,未指明

21、CLUSTERED时表明创建的索引是非聚簇索引。 3)NONCLUSTERED选项:表示建立非聚簇索引。 4)PAD-INDEX选项:为每一内部节点页指定分配空间大小。缺省情况下,SQL Server 2000为每一索引节点分配至少两倍的索引空间。该空间用于存储原有顺序直到建成索引。PAD_INDEX和FILLFACTOR配对使用,它们使用相同的百分比。 5)FILLFACTOR=(页充满度)选项:指定叶子页和索引的充满度。FILLFACTOR通过使页分裂数最小来提高性能,每次索引页充满时发生页分裂。当需要插入大量数据时,采用较低的FILLFACTOR;相反,当不需要插入数据时,应将FILLF

22、ACTOR设置为100。FILLFACTOR的值域为1100。 6)IGNORE_DUP_KEY选项:该选项说明,当INSERT语句插入的是一个重复行时,则重复的行被忽略(跳过插入语句,事务继续执行)。否则,当没有设置IGNORE_DUP-KEY时,将不允许有引起重复行的插入或修改语句,一旦进行插入,则会引起错误信息。 7)DROP_EXISTING选项:该选项表示当表中的非聚簇索引要进行更新时,必须先删除该表的聚簇索引。 8)STATISTICS NORECOMPUTE选项:指明过时的索引统计不被自动更新。 (2)删除索引 删除索引的语法为: DROP INDEX 5创建和管理视图 (1)创

23、建视图 创建视图的语法为: CREATE VIEW() WITH ENCRYPTIOPN AS WITH CHECK OPTION 其中: 1)WITH ENCRYPTION选项表示对视图定义进行加密,使用户不能通过系统存储过程sp_helptext查看视图定义。 2)WITH CHECK OPTION项说明在对视图执行数据更新操作时,必须符合SELECT子句中设置的条件。 (2)删除视图 删除视图的语法为: DROP VIEW(视图名组) 6创建和管理缺省 (1)创建缺省 创建缺省使用CREATE DEFAULT语句,其语法为: CREATE DEFAULT AS 应当注意的是,缺省既要与绑

24、定列的数据类型保持一致,同时也要符合绑定列的任何规则或约束条件。 (2)绑定缺省 绑定缺省就是将缺省名与表的列联系在一起。绑定缺省使用sp_bindfault系统存储过程实现,其语法为: EXEC sp_bindfault, 系统存储过程执行时的格式为: EXEC 其中,允许使用变量参数,如果参数是常量,则要加定界符“ ”。 (3)解除缺省 解除缺省同样使用系统提供的存储过程实现,具体语法为: EXEC sp_unbinddefault , (4)删除缺省 删除缺省就是从数据库中清除缺省的定义。缺省在删除前必须先从绑定的列上解除下来,否则将不能删除缺省。删除缺省的语法为: DROP DEFAU

25、LT 7创建和管理规则 (1)创建规则 创建规则的语法为: CREATE RULEAS 在语法中,规则表达式可以是WHERE子句中的有效表达式。规则表达式中可以包含比较符和算术运算符,但不能包括数据库对象名或表的列名。被绑定的列在规则表达式中使用形式参数表示,参数前要加“”符号。 (2)绑定规则 绑定规则使用系统存储过程sp_bindrule实现,其语句格式为: EXEC sp_bindmle, (3)解除规则 解除规则使用系统存储过程sp_unbindrule实现,其语法为: EXEC spunbindrule, (4)删除规则 删除规则就是将规则的定义从数据库中清除。在删除规则之前必须先解

26、除规则的绑定。删除规则的语法为: DROP RULE 8创建和管理存储过程 (1)创建存储过程和调用存储过程 创建存储过程的语法为: CREATE PROCEDURE ; =OUTPUT WITH RECOMPILEENCRYPTION RECOMPILE,ENCRYPTION AS 其中: 1)版本号是可选的整数,它用于将有相同名字的存储过程编为不同的组。在执行时可选择版本,但创建时一次只能创建一个版本。 2)OUTPUT选项用于给调用者返回值。 3)RECOMPILE为重编译选项。它要求每次执行都要对过程重编译和优化,并创建新的查询计划。 4)ENCYPTION为加密选项。 5)参数前加“

27、”说明参数为局部变量,如果参数前加“”则说明参数为全局变量。 过程的调用语句为: EXEUTE(参数名)= 【例1-6】 建立并调用一个带参数的存储过程。 CREATE PROCEDURE学生查询1 SNAME VARCHAR(8), SDEPT VARCHAR(20) AS SELECT* FROM 学生 WHERE 姓名=SNAME AND所在系=SDEPT GO EXEC 学生查询1张三,计算机系或EXEC 学生查询1SNAME=张三,SDEPT=计算机系 (2) 2删除存储过程 删除存储过程的语句格式为: DROP PROCEDURE 9. 创建和管理触发器 (1)创建触发器 创建触发

28、器的语法为: CREATETRIGGERON WITH ENCRYPTl0N FORDELETE,INSERT,UPDATE WITH APPEND NOT FOR REPLICATION AS(SQL语句组) 其中: 1)WITH ENCRYPTION为加密选项。 2)DELETE选项为创建DELETE触发器。DELETE触发器的作用是当对表执行DELETE操作时触发器被激活,并从指定表中删除元组,同时将删除的元组放入一个特殊的逻辑表(delete表)中。触发器的动作可以是检查delete表中的数据,以确定下一步该如何处理。 3)INSERT选项为创建INSERT触发器。INSERT触发器在

29、对指定表中执行插入数据操作时激活,激活后将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted表)中,触发器会根据INSERT表中的值决定如何处理。 4)UPDATE选项为创建UPDATE触发器。UPDATE触发器仅在对指定表进行更新数据操作时激活。UPDATE触发器激活后把将要被更新的原数据移入deleted表中,再将更新后的新数据的备份送入inserted表中,UPDATE触发器对deleted和inserted表进行检查,并决定如何处理。 5)NOT FOR REPLICATION项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。 (2)删除触发器 删除触发

30、器的语法为:DROP TRIGGER1.2数据操纵语言 操纵语句主要包括SELECT(查询)、INSERT(插入)、UPDATE(修改)和DELETE(删除)4种语句。1.2.1 SQL的数据操纵语言 1.SELECT语句的语法 SELECT语句的语法格式为: SELECT FROM WHERE GROUP BYHAVING(组选择条件) ORDER BY,n; 查询语句的功能是从FROM子句指定的数据源(基本表或视图组)中,选择满足元组选择条件的元组数据,并对它们进行分组、统计、排序和投影,形成查询结果集。 在查询语句中共有5种子句,其中SELECT和FROM语句为必选子句,而WHERE、G

31、ROUP BY和ORGER BY子句为任选子句。(1)SELECT子句 SELECT子句用于指明查询结果集的目标列。目标列可以是直接从数据源中投影得到的字段、与字段相关的表达式或数据统计的函数表达式,目标列还可以是常量。如果目标列中使用了两个基本表(或视图)中相同的列名,要在列名前加表名限定,即使用“”表示。 (2)FROM子句 FROM子句用于指明查询的数据源。查询操作需要的数据源指基本表(或视图表)组,表间用“,”分隔。如果查询使用的基本表或视图不在当前数据库中,还需要在表或视图前加上数据库名加以说明,即使用“”的形式表示。如果在查询中需要一表多用,则每种使用都需要一个表的别名标识,并在各

32、自使用中用不同的表别名表示。 定义表别名的格式为“”。 (3)WHERE子句 WHERE子句通过条件表达式描述关系中元组的选择条件。DBMS处理语句时,按元组为单位,逐个考察每个元组是否满足条件,将不满足条件的元组筛选掉。 (4)GROUP BY子句 GROUP BY子句的作用是按分组列的值对结果集分组。分组可以使同组的元组集中在一起,也使数据能够分组统计。当SELECT子句后的目标列中有统计函数,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集统计。GROUP BY子句后可以带上HAVING子句表达组选择条件,组选择条件为带有函数的条件表达式,它决定着整个组记录的取舍条件。 (

33、5)ORDER BY子句 ORDER BY子句的作用是对结果集进行排序。查询结果集可以按多个排序列进行排序,每个排序列后都可以跟一个排序要求:当排序要求为ASC时,元组按排序列值的升序排序;排序要求为DESC时,结果集的元组按排序列值的降序排列。 2SELECT语句的操作符 SELECT语句中使用的操作符包括算术操作符、比较操作符、逻辑操作符、组合查询操作符和在字段中出现的其他操作符。下面介绍这5类操作符。 (1)算术操作符 算术操作符在SQL语句中表达数学运算操作。SQL的数学运算操作符只有4种,它们是:+(加号)、一(减号)、*(乘号)和(除号)。 (2)比较操作符 比较操作符用于测试两个

34、数据是否相等、不等、小于或大于某个值。SQL中的比较操作符包括:=(等于)、(大于)、(小于)、=(大于等于)、!=或(不等于)、!(不大于)和!(不小于),共9种操作符。 (3)逻辑操作符 SQL的逻辑操作符见表1-3。表1-3SQL的逻辑操作符 语 义 操作符 使用格式或示例 示例解释在不在其中NOTIN IN() 将字段值与数据表或子查询的结果集比较,看字段值在不在数据表或结果集中任何一个ANY ANY(数据表子查询)例:ANY(数据表子查询) 测试字段值是否大于数据表或子查询结果集中的任何一个值全部(每个)ALL ALL(数据表子查询)例:ALL(数据表子查询) 测试字段值是否大于数据

35、表或子查询结果集中的每一个值不存在EXISTS EXISTS() 测试子查询的结果集中有没有记录在不在范围NOTBETWEENAND NOTBETWEEN小值AND大值 测试字段在不在给定的小值和大值指定的范围中是不是空值ISNOTNULL ISNOTNULL 测试字段是不是空值模式比较NOTLIKE NOTLIKE 其中,字符常数中含有下划线“_”(单字符通配符)和百分号“”(任意长度字符通配符)测试字段值是否与给定的字符模式匹配与运算AND AND 测试条件1和条件2是否都满足要求或运算OROR 测试条件1和条件2是否有一个满足要求非运算NOT NOT 测试条件是否不满足要求 (4)组合查

36、询操作符 组合查询操作符的使用格式为: 1)UNION操作符。 并查询操作。操作结果为将 和 的结果合并,即取 和 的元组,并在结果集中去掉重复行。 2)MINUS操作符。 差查询操作。操作结果为取 得到的元组,而 没有的元组。 3)INTERSECT操作符。 交查询操作。操作结果为取 和 共有的元组。 (5)其他SQL操作符 其他SQL操作符是针对SELECT子句中的字段表设计的,它用于简写结果集的字段表和对字段值的限制说明。其他SQL操作符包括*、ALL和DISTINCT三种。 1)*操作符。 *为字段组的省略写法,说明取全部字段或表中的全部字段。使用格式为: * 或 .* 2)ALL操作

37、符。 全部操作符。ALL说明在查询结果中保留重复值,如果查询中有统计函数,ALL要求计算重复值。ALL的使用格式为: ALL 或 ALL 3)DISTINCT操作符。 去掉重复值操作。DISTINCT和ALL相反,它说明在查询结果集中去掉重复值,或在统计函数中不计重复值。DISTINCT的使用格式为: DISTINCT或DISTINCT 3数据插入功能 SQL的数据插入语句有两种使用形式:一种是使用常量,一次插入一个元组;另一种是插入子查询的结果,一次插入多个元组。 (1)使用常量插入单个元组 使用常量插入单个元组的INSERT语句的格式为: INSERT INTO(,) VALUES(,.)

38、; 上述语句的功能是将新元组插入指定表中,新记录的值为,的值为,。如果INTO子句中有属性列选项,则没有出现在子句中的属性将取空值,假如这些属性已定义为NOT NULL,它将会出错。如果INTO子句中没有指明任何列名,则新插入的记录必须在每个属性上均有值。 (2)在表中插入子查询的结果集 含有子查询的INSERT语句的格式为: INSERT INTO(,.) (子查询); 4数据修改功能 SQL修改数据操作语句的一般格式为: UPDATE SET=,=,.n WHERE; SQL的修改数据语句功能是将(表名)中那些符合WHERE子句条件的元组的某些列,用SET子句中给出的表达式的值替代。如果U

39、PDATE语句中无WHERE子句,则表示要修改指定表中的全部元组。值得指出的是,在UPDATE的WHERE子句中也可以嵌入查询语句。 5数据删除功能 数据删除语句的一般格式为: DELETE FROM WHERE; DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元组。如果在数据删除语句中省略WHERE子句,表示删除表中全部元组。DELETE语句删除的是表中的数据,而不是表的定义,既使表中的数据全部被删除,表的定义仍在数据库中。1.2.2Transact-SQL的数据操纵语言 1数据检索语句格式 Transact-SQL数据检索语句的语法为: SELECT INTO FROM

40、 WHERE GROUP BYHAVING ORDER BY COMPUTEBY 下面以子句为单元;对上述语句进行解释。 (1)SELECT子句 SELECT子句的功能是确定结果列。SELECT子句的语法为: SELECTALL | DISTINCTTOPPERCENT 其中的查询列可以表示为: :=*|*|As |= 上述SELECT子句语法中: 1)ALL|DISTINCT选项:ALL为返回结果集中的所有行;DISTINCT为仅显示结果集中的惟一行。该项不选时,ALL是缺省值。 2)TOP选项:仅返回结果集中的前行。如果有PERCENT,则返回结果集中的百分之行记录。 3)“*”:指明返回

41、在FROM子句中包括的表和视图的全部列。 4)*:指明返回指定表或视图的全部列。 5)(表达式):结果列表达式可以是由一个列名、常量、函数通过操作符(或者子查询)连接起来的数据表达式。 6):用来代替出现在结果集中的列名或表达式,别名可以在ORDER BY子句中出现,但不能在WHERE、GROUP BY或HAVING子句中出现。 (2)INTO子句 INTO子句用于创建一个表,并将查询结果添加到该表中。INTO不能与COMPUTE子句同时使用。如果创建的表是临时表,则在表名前加“#字符。 (3)FROM子句 FROM子句用于指定查询的数据源表,FROM子句一般为必选子句,其语法格式为: FRO

42、M 数据源的语法为: :=ASWITH() (视图名)As(视图别名)|(嵌套的SELECT语句) As 上面的语法表明,数据源包括表、视图、行集合函数表示的数据集合、嵌套的SELECT语句表示的结果集以及数据连接表的结果集。连接表的语法为: :=ON CROSSJOIN :=INNERLEFT RIGHT FULLOUTERJOIN 其中: 1)INNER为内连接,它返回所有连接匹配的行。内连接是连接类型的缺省值。 2)LEFTOUTER为左外连接,其结果集中不但包括了内连接返回的行,还包括了左边表中不满足连接条件的行。那些不满足连接条件的行所对应的右边表的列将会显示NULL值。 3)RIG

43、HTOUTER为右外连接。右外连接的结果集中不但包括内连接返回的行,还包括右边表中的不满足连接条件的行。那些不满足连接条件的行所对应的左边表的列将会显示NULL值。 4)FULLOUTER为完全外连接。完全外连接的结果集中不但包括了内连接返回的行,同时也包括左边表和右边表中的所有不满足条件的行,但是与其对应的右边表或左边表的列将会显示NULL值。 5)ON用于指定连接条件。连接条件表达式为: 条件表达式中的两个列名并不一定是相同的名字或具有相同的数据类型,但是两者必须是相兼容的或者SQL Server 2000可以对它们做隐式转换的。如果它们不可以进行隐式转换,则必须使用专门的函数(CASR函

44、数)进行显式转换。 6)CROSS JOIN为交叉连接,即对两个表进行笛卡儿积运算。其结果是返回两个表的交叉匹配结果。交叉连接也可以通过在FROM子句中指定连接表,而在WHERE子句中不指明连接条件来表达。 (4)WHERE子句 WHERE子句用于指定查询条件以及数据连接条件。WHERE子句的语法为: WHERE :=*=* 虽然旧格式的外连接条件也可以表示表问的左连接(*=)或右连接(=*),但由于这种表示存在二义性,所以外连接最好通过FROM子句表示。 (5)GROUP BY子句 GROUP BY子句用于对结果集分组。分组会影响到统计函数的结果:如果有GROUP BY子句,则按组进行数据统计;否则,对全部数据统计。 GROUP BY的语法为:GROUP BY ALL 其中: 1)ALL为在结果集中包括所有的组,其中包括一组不满足WHERE子句指定条件的记录。这个由不满足条件的元组构成的组,其总和将返回一个空值。 2)分组表达式是分组所基于的表达式,该表达式一般为列名。 (6)HAVING子句 HAVING子句用于指定分组或汇总筛选条件,HAVING子句的格式为: HAVING (7)ORDER BY子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论