资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第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的基本表定义和维护功能使用基本表的定义、修改和删除三种语句实现。 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或INT全字长(四字长)整数。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种: 1)NOT NULL或NULL约束。 NOT NULL约束是不允许字段值为空,而NULL约束是允许字段值为空。字段值为空的含义是该属性值“不详”、“含糊”或“无意义”。对于关系的主属性,必须限定是“N01 NULL”,以满足实体完整性;而对于一些不重要的属性,例如学生的爱好、特长等,则可以不输入字段值,即允许为NULL值。 2)UNIQUE约束。 UNIQUE约束是惟一性约束,即不允许该关系的该列中出现有重复的属性值。 3)DEFAULT约束。 DEFAULT为默认值约束。将列中的使用频率最高的属性值定义为DEFAULT约束中的默认值,可以减少数据输入的工作量。 DEFAULT约束的格式为:DEFAULT FOR 4)CHECK约束。 CHECK为检查约束。CHECK约束通过约束条件表达式设置列值应满足的条件。 CHECK约束的格式为: CONSTRAINT CHECK () 列级约束的约束条件表达式中只涉及到一个列的数据。如果约束条件表达式涉及到多列属性,则它就成为表级的约束条件,应当作为表级完整性条件表示。 (3)表级完整性约束条件 表级完整性约束条件是指涉及到关系中多个列的限制条件。在上述的CHECK约束中,如果约束条件表达式中涉及到多列数据,它便为表级约束。表级约束有以下3种: 1)UNIQUE约束。 UNIQUE约束是惟一性约束。当要求列组的值不能有重复值时,就需要使用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 ( )REFERENCES ( )2修改基本表 SQL语言用ALTER TABLE语句来修改基本表,其一般格式为: ALTER TABLE ADD(完整性约束,n) DROP MODIFY(,n); 可以看出,基本表的修改有3种情况: (1)使用ADD子句增加新列 当向表中增加新列和新的完整性约束时,需要使用ADD子句对表结构进行修改操作。 【例1-1】 向课程表中增加“学时”字段。 ALTER TABLE课程ADD学时SMALLINT; (2)使用MODIFY子句修改列的原定义 MODIFY子句主要用于加宽原列的宽度。尽管有些系统允许对列名和数据类型进行修改,但一般不允许这样做,以免丢失原表中的数据。 (3)使用DROP子句删除指定的完整性约束条件 【例1-2】 删除学生表中对年龄的默认值的定义。 ALTER TABLE学生DROP C1;3删除基本表删除基本表语句的一般格式为: DROP TABLE ;4索引定义和维护 在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式为: CREATE UNIQUECLUSTERINDEX(索引名) ON (,); 其中: 1)是要建索引的基本表的名字。索引可以建在该表的一列或多列上,各列名之间用逗号分隔。 2)每个(列名)后面还可以用(次序)指定索引值的排列次序,次序可选ASC(升序)或DESC(降序),缺省值为ASC。 3)UNIQUE表示该索引的每一个索引值只对应惟一的数据记录。 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操作时,要保证操作的数据满足视图定义中的谓词条件。该谓词条件是视图子查询中的WHERE子句的条件。 (2)组成视图的属性列名全部省略或者全部指定 若省略了视图的各个属性列名,则该视图的属性为子查询中的SELECT子句的目标列。必须明确指定组成视图的所有列名的3种情况是:某个目标列不是单纯的属性名,而是集函数或列表达式;子查询中使用多个表(或视图),并且目标列中含有相同的属性名;需要在视图中改用新的、更合适的列名。1.1.2Transact - SQL的数据定义语言 1.创建和管理数据库 (1)创建数据库 创建数据库包括:定义数据库名;确定数据库文件及其大小;确定事务日志文件的位置和大小。创建数据库使用CREATE 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,默认值为3MB;MAXSIZE短语指明文件的最大空间;FILEROWTH短语说明文件的增长率,其默认值为10。可以定义多个数据文件,默认第一个为主文件。 3)定义日志文件。在LOG ON子句中:NAME短语说明逻辑日志文件名;FILENAME短语指明日志文件的存储位置和文件名;SIZE短语指明日志文件的长度。可以定义多个日志文件。 4)FOR RESTORE子句说明能重建一个数据库,该重建的数据库用于数据恢复操作。 (2)选择数据库 数据库的选择使用USE命令,其格式为: USE 注意:在Transact-SQL中没有语法结束符号。语句结束后按键,并另起一行输入GO语句,再按键。否则语句不会执行。 (3)删除数据库 删除数据库的语法为: DROP DATABASE 2定义表 定义基本表的格式为: CREATE TABLE (AS , ) 上述格式有以下问题需要说明。 (1)字段约束 字段约束可以使用以下短语定义: 1)NOT NULL|NULL:定义不允许或允许字段值为空。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号