第1章关系数据库语言SQL和Transact-SQL.doc
《第1章关系数据库语言SQL和Transact-SQL.doc》由会员分享,可在线阅读,更多相关《第1章关系数据库语言SQL和Transact-SQL.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 语言 SQL Transact
限制150内