数据库技术与应用:chap02-1-关系定义_第1页
数据库技术与应用:chap02-1-关系定义_第2页
数据库技术与应用:chap02-1-关系定义_第3页
数据库技术与应用:chap02-1-关系定义_第4页
数据库技术与应用:chap02-1-关系定义_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、1 数据库技术与应用数据库技术与应用 第二章第二章 关系模型关系模型(一一) 2Tongji University 2 2.12.1 数据模型数据模型 2.22.2 关系模型关系模型 2.32.3 关系模型的数据结构关系模型的数据结构 在在SQLSQL中定义关系中定义关系模式模式 2.4 2.4 关系关系模型的数据模型的数据操作操作 关系代数关系代数 第二章第二章 内容提要内容提要 3Tongji University 3 实质是用于描述数据的一种表示法。它实质是用于描述数据的一种表示法。它 由三个部分组成:由三个部分组成: 1. 1. 数据结构数据结构 2. 2. 数据操作数据操作 3. 3

2、. 数据约束数据约束 问题问题1. 1. 数据模型是什么?数据模型是什么? 2.1 数据模型概述数据模型概述 数据模型三要素数据模型三要素 4Tongji University 4 目前目前,两种最重要的数据模型,两种最重要的数据模型: 1. 1. 关系模型,基于关系关系模型,基于关系( (也称为表也称为表) ) 2 2. . 半结构化数据模型,典型代表是XML 其他其他数据模型:数据模型: 对象关系模型(发展趋势发展趋势) 面向对象数据库模型 层次模型、网状模型 (已过时) 数据库系统中的数据模型数据库系统中的数据模型 5Tongji University 5 关系模型是基于表的,其数据结构

3、是表关系模型是基于表的,其数据结构是表( (也称关也称关 系系) ),其数据操作是面向表的,其数据约束是限制表,其数据操作是面向表的,其数据约束是限制表 中数据的。中数据的。 关系示例关系示例 Movies titlemYearmLengenre Gone With the Wind1939231drama Kung Fu Panda 2201190animation MoviesMovies 6Tongji University 6 1939 231 drama 2011 90 animation XML文件示例文件示例Movies 7Tongji University 7 2.2 关系模型

4、基础关系模型基础 关系模型的数据结构:二维表,称为关系。 例例2.1 2.1 Movies关系关系 titlemYearmLengenre Gone With the Wind1939231drama Star Wars1977124sciFi Kung Fu Panda 2201190animation MoviesMovies 8Tongji University 8 1. 1. 属性属性(Attributes)(Attributes):一个关系中的列称为属性。:一个关系中的列称为属性。 如例如例2.12.1中中titletitle,mYearmYear,mLenmLen,genregen

5、re。 属性名在各列头,描述其值的含义。属性名在各列头,描述其值的含义。 2. 2. 关系模式关系模式(Schemas)(Schemas):一个关系的名称及其所有属:一个关系的名称及其所有属 性集成为该关系的模式。表示为,性集成为该关系的模式。表示为, 关系名关系名( (属性属性1 1,属性,属性2 2,) 其中,属性的次序任意。其中,属性的次序任意。 如如MoviesMovies关系模式为关系模式为,Movies(Movies(title,mYear,mLen,genretitle,mYear,mLen,genre) ) 关系的相关术语关系的相关术语(一一) 9Tongji Universi

6、ty 9 3. 3. 关系数据库模式关系数据库模式(relational database schema)(relational database schema) 在关系数据库中,一个数据库是由一个或多个在关系数据库中,一个数据库是由一个或多个 关系组成的。组成一个数据库的关系模式的集合,关系组成的。组成一个数据库的关系模式的集合, 就就称为关系数据库模式,简称数据库模式。称为关系数据库模式,简称数据库模式。 4. 4. 元组元组(Tuples)(Tuples) 一个关系中一个关系中的的行行( (除属性名所在的头行外除属性名所在的头行外) )称为元称为元 组。每一元组在每列上只有一个元素。组。

7、每一元组在每列上只有一个元素。元组的次序元组的次序 任意。任意。 如如 (Star Wars, 1977, 124, (Star Wars, 1977, 124, sciFisciFi) ),是例,是例2.1 Movies2.1 Movies的第的第 二个元组。二个元组。 关系的相关术语关系的相关术语(二二) 10Tongji University 10 5. 5. 域域(Domains): (Domains): 或或 属性的数据类型属性的数据类型 关系模型要求元组在每一属性上的关系模型要求元组在每一属性上的取值不可再取值不可再 分分,且属性取值应在一个域,且属性取值应在一个域(Domains

8、)(Domains)内。内。 这就要求,这就要求,属性的数据类型只能是基本数据类属性的数据类型只能是基本数据类 型型, 如如 整型整型, , 字符串等。不能是包含多项元素的复字符串等。不能是包含多项元素的复 合类型,如结构、数组等。合类型,如结构、数组等。 如在例如在例2.1 Movies2.1 Movies关系中,各属性域如下:关系中,各属性域如下: title: title:字符串字符串, mYear:, mYear:日期日期, , mLen: mLen:整型整型, genre:, genre:字符串字符串 关系的相关术语关系的相关术语(三三) 11Tongji University 11

9、 titlemYearmLengenre Gone With the Wind 1939231drama Star Wars1977124sciFi Kung Fu Panda 2201190animation 相同的关系,不同的展示相同的关系,不同的展示 titlemYearmLengenre Star Wars1977124sciFi Gone With the Wind 1939231drama Kung Fu Panda 2201190animation mYeartitlemLengenre 1939 Gone With the Wind 231drama 1977Star Wars

10、124sciFi 2011Kung Fu Panda 290animation 例例2.2 2.2 一个有n个元组、 m个属性的关系实例, 有多少种不同的展示? 12Tongji University 12 6. 6. 关系的键关系的键(Keys) (Keys) 关系模型提供的一种关系模型提供的一种数据约束数据约束 关系模型要求,一个关系中每一个元组都是唯一的,不关系模型要求,一个关系中每一个元组都是唯一的,不 允许存在完全相同的元组。允许存在完全相同的元组。 键键(或称超键或称超键)是一个关系的属性集,它能保证该关系的是一个关系的属性集,它能保证该关系的 所有元组在这个属性集上取值各不相同。

11、换句话说,键是能所有元组在这个属性集上取值各不相同。换句话说,键是能 唯一标识一个元组的属性集。唯一标识一个元组的属性集。候选键候选键是键的是键的一个一个最小属性子最小属性子 集,它既保持了键的唯一性,又不可缩减。集,它既保持了键的唯一性,又不可缩减。 一个关系可以一个关系可以 有多个候选键,选择其一作为有多个候选键,选择其一作为主主键键(Primary Key)。 在关系模式中主键用下线标记。在关系模式中主键用下线标记。 如如 Movies(title,mYear,mLen,genre) 关系的相关术语(四)关系的相关术语(四) 13Tongji University 13 Movies(M

12、ovies(title,mYear,mLen,genre,studioName,producerNotitle,mYear,mLen,genre,studioName,producerNo) ) MovieStarMovieStar( (name,address,gender,birthdayname,address,gender,birthday) ) StarsInStarsIn( (movieTitle,movieYear,starNamemovieTitle,movieYear,starName) ) MovieExecMovieExec( (name,address,execNo,n

13、etWorthname,address,execNo,netWorth) ) Studio(Studio(name,address,presNoname,address,presNo) ) 例例2.3 2.3 下列关系中的主键下列关系中的主键 问题问题:每个:每个关系的候选键有哪些?从中选择主键。关系的候选键有哪些?从中选择主键。 电影关系数据库模式 思考思考:根据上述:根据上述6 6个基本概念,请同学们分析关系个基本概念,请同学们分析关系 具有哪些基本性质?具有哪些基本性质? 14Tongji University 14 SQL(Structured Query Language) SQL(

14、Structured Query Language) 是用于描述和是用于描述和 操作关系数据库的标准语言。操作关系数据库的标准语言。 主要包括两个方面内容:主要包括两个方面内容: 1)1) 数据定义子语言数据定义子语言( (Data-Definition sublanguageData-Definition sublanguage) ) 用于定义数据库模式用于定义数据库模式 2) 2) 数据操作子语言数据操作子语言( (Data-Manipulation sublanguageData-Manipulation sublanguage) ) 用于查询或更新数据库用于查询或更新数据库 2.3 在

15、在SQL中定义关系模式中定义关系模式 15Tongji University 15 SQLSQL中有三种不同的关系:中有三种不同的关系: 1) 1) 表表(tables)(tables),存储式的关系,是最常用的一种。它,存储式的关系,是最常用的一种。它 存于数据库中,可被更新和查询。存于数据库中,可被更新和查询。 2)2) 视图视图(views)(views),非存储的,计算时根据需要可全部,非存储的,计算时根据需要可全部 或部分构建的关系。或部分构建的关系。 3)3) 临时表,由临时表,由SQLSQL语言处理器在执行查询或更新操语言处理器在执行查询或更新操 作时临时构建,处理器结束工作后即

16、释放。作时临时构建,处理器结束工作后即释放。 SQL中的关系中的关系 用用Create Table Create Table 定义这种关系模式定义这种关系模式 用用Create View Create View 定义视图模式定义视图模式 16Tongji University 16 字符串类型:字符串类型: charchar(n)长度为n的定长字符串, 存n个字符,n/2个汉字 varcharvarchar(n) 变长字符串,长度不超过n 注意:SQL中字符串常量用单引号括起。如 王文 整型数:整型数: intint, 4字节(T-SQL) -231 231-1 smallintsmallin

17、t, 2个字节(T-SQL) -215215-1 近似数近似数字字 r realeal 4字节(T-SQL) float float 存储数据范围较real大 SQL 基本数据类型(一)基本数据类型(一) 17Tongji University 17 精确精确数字数字: : decimaldecimal(n,d) 和 numericnumeric(n,d) 固定精度的数据,n是数字位数,d是小数位数。 moneymoney 和 smallmoneysmallmoney 等 存储8字节 存储4字节 日期和时间类型日期和时间类型 date date 、 time time 、datetimedat

18、etime 等 yyyy-mm-dd hh:mm:ss.d http:/http:/ SQL基础数据类型(二基础数据类型(二 ) 18Tongji University 18 语法格式:语法格式: CREATE TABLE CREATE TABLE 表名表名( ( 属性属性1 1 类型类型 基于属性的约束基于属性的约束, , 属性属性2 2 类型类型 基于属性的约束基于属性的约束, , 属性属性n n 类型类型 基于属性的约束基于属性的约束, , 基于元组的约束基于元组的约束 , ) ) 表定义表定义(或称关系模式定义或称关系模式定义) 19Tongji University 19 例例2.4

19、 2.4 最简单的表定义最简单的表定义 要求:要求: 给给出出MovieStarMovieStar的的表表定义定义 ,暂不考虑约束。,暂不考虑约束。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ), , address address varcharvarchar( (200200) ), , gender gender charchar( (1 1) ) , , birthday birthday datedate ) ) 20Tongji University 20 例例

20、 2.5 2.5 请给出请给出 MoviesMovies关系的最简关系模式定义关系的最简关系模式定义, , 暂不考虑约束。暂不考虑约束。 课堂练习课堂练习 CREATE TABLE CREATE TABLE MoviesMovies( ( title title varcharvarchar( (5050) ), , mYearmYear intint, , mLenmLen intint, , genre genre varcharvarchar( (1010) ), , studioNamestudioName varcharvarchar( (100100) ), , producerN

21、oproducerNo char char( (6 6) ) ) 21Tongji University 21 ALTER TABLE ALTER TABLE 表名表名 ADDADD 属性属性 类型类型 ALTER TABLE ALTER TABLE 表名表名 DROPDROP 属性属性 1. 1. 完全删除已存在的表完全删除已存在的表( (包括表模式和元组包括表模式和元组) ) 2. 2. 修改已存在的表修改已存在的表 删除删除/修改关系模式修改关系模式 增加属性,增加属性, 要指明类型要指明类型 删除属性删除属性 22Tongji University 22 要求:要求:在在MovieSt

22、arMovieStar关系模式中添加关系模式中添加phonephone属性,电属性,电 话号码可取长为话号码可取长为11 11的定长字符串。的定长字符串。 例例2.6 2.6 修改修改MovieStarMovieStar模式模式 ALTER TABLE ALTER TABLE MovieStarMovieStar ADDADD phonephone charchar( (11 11) ) 说明说明:新加属性新加属性phonephone后,系统默认其值为后,系统默认其值为NULLNULL。 NULLNULL是是“无值无值”或或“空空”的意思。默认为的意思。默认为Null,Null, 意味着该属性

23、值在没有获得实际值时,可以为意味着该属性值在没有获得实际值时,可以为空空。 23Tongji University 23 作用:作用:当当向表中添加或修改一个元组时,向表中添加或修改一个元组时,若其中某若其中某 属性属性实际实际值未知,则或者取值未知,则或者取NULLNULL,或者指定,或者指定 一个常用值。这个常用值就称为默认值一个常用值。这个常用值就称为默认值, ,用用关关 键字键字DEFAULTDEFAULT来声明。来声明。 定义表时,设置定义表时,设置defaultdefault约束的方法约束的方法: : 例如例如, , 设置设置MovieStarMovieStar中中genderge

24、nder的默认值为的默认值为M, gender char(1) DEFAULT M 默认值约束默认值约束 CREATE TABLECREATE TABLE 表名表名( ( 属性属性 类型类型 DEFAULTDEFAULT 默认值默认值, ) ) 24Tongji University 24 作用:作用:保证一个关系中任意两个元组在主键上的取保证一个关系中任意两个元组在主键上的取 值不同,称为值不同,称为实体完整性约束实体完整性约束。任何违反此。任何违反此 约束的插入或更新操作都将被拒绝。约束的插入或更新操作都将被拒绝。 声明主键:声明主键: 在表定义时在表定义时(CREATE TABLE(CR

25、EATE TABLE语句语句) ),有两种方法,有两种方法 1. 1.当主键是单一属性时,在声明属性的同时指当主键是单一属性时,在声明属性的同时指 定主键。定主键。基于属性的约束声明法基于属性的约束声明法 2.2.当主键是多属性的集合时,则在所有属性声当主键是多属性的集合时,则在所有属性声 明之后,单独添加主键声明子句。明之后,单独添加主键声明子句。 基于元组的约束声明法基于元组的约束声明法 主键主键(Primary Key)约束约束 25Tongji University 25 声明主键的关键字:声明主键的关键字:PRIMARY KEYPRIMARY KEY 其构成属性的取值均不许其构成属性

26、的取值均不许NULLNULL。 声明主键声明主键 例例2.7 2.7 给出给出MovieStarMovieStar表定义,表定义,namename属性有唯一性,可做主属性有唯一性,可做主 键。键。 用用PRIMARY KEYPRIMARY KEY声明主键。声明主键。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar( (200200) ), , gender gen

27、der charchar( (1 1) ) , , birthday birthday datedate ) ) CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) , , address address varcharvarchar( (200200) ), , gender gender charchar( (1 1) ) , , birthday birthday datedate , , PRIMARY KEY(name) ) PRIMARY KEY(name) ) 26

28、Tongji University 26 由多属性构成的主键,被称为复合键。由多属性构成的主键,被称为复合键。 例例2.8 2.8 请给出请给出MoviesMovies关系的关系模式定义,关系的关系模式定义, 设设title,mYeartitle,mYear为主键。为主键。 例例2.8 2.8 声明复合键声明复合键 CREATE TABLE CREATE TABLE MoviesMovies( ( title title varcharvarchar( (5050) ), , mYearmYear intint, , mLenmLen intint, , genre genre varchar

29、varchar( (1010) ), , studioNamestudioName varcharvarchar( (100100) ), , producerNoproducerNo char char( (6 6) ) , , PRIMARY KEYPRIMARY KEY( (title,mYeartitle,mYear) ) 27Tongji University 27 表间的联系表间的联系 在任意两个有联系的表中,双方起联系作用在任意两个有联系的表中,双方起联系作用 的属性取值具有参照和被参照的关系。这是另一种的属性取值具有参照和被参照的关系。这是另一种 约束,即约束,即参照完整性约束

30、参照完整性约束,也称,也称外键约束外键约束。 Movies(Movies(title,mYear,mLen,genre,studioName,producerNotitle,mYear,mLen,genre,studioName,producerNo) ) MovieStarMovieStar( (name,address,gender,birthdayname,address,gender,birthday) ) StarsInStarsIn( (movieTitle,movieYear,starNamemovieTitle,movieYear,starName) ) MovieExecMo

31、vieExec( (name,address,execNo,netWorthname,address,execNo,netWorth) ) Studio(Studio(name,address,presNoname,address,presNo) ) 观察电影关系数据库模式,可发现表间的如下联系:观察电影关系数据库模式,可发现表间的如下联系: 28Tongji University 28 请同学们画出实验三的数据库关系图请同学们画出实验三的数据库关系图 29Tongji University 29 在关系数据库中,两个表间可能存在如下关系:一个在关系数据库中,两个表间可能存在如下关系:一个 表

32、中某属性或属性组取值须引自另一个表中已有属性值。表中某属性或属性组取值须引自另一个表中已有属性值。 这里,第一这里,第一个表是引用表,第二个表是被参照表个表是引用表,第二个表是被参照表。 如学生选课表如学生选课表sc中学号中学号snum必须来自表必须来自表student中已有中已有 snum。 在在SQL中,通过将引用表中这个属性组设为外键,中,通过将引用表中这个属性组设为外键, 以以实现实现两两表之间表之间的引用与被引用关系。的引用与被引用关系。规定规定: 1. 在被参照表在被参照表(又称主键表又称主键表)中,被参照的属性或属性组中,被参照的属性或属性组 必须已声明为主键;必须已声明为主键;

33、 2. 在引用表在引用表(又称外键表又称外键表)中,声明外键约束,指明其属中,声明外键约束,指明其属 性取值引自被参照表中的主键。性取值引自被参照表中的主键。 外键外键(Foreign key)约束约束 30Tongji University 30 在定义表时,有两种方法可声明外键:在定义表时,有两种方法可声明外键: 1. 1.如果外键是如果外键是单个属性单个属性,则在,则在CREATE TABLECREATE TABLE语句中,外语句中,外 键属性名及数据类型后以键属性名及数据类型后以referencesreferences为关键字,参照主键为关键字,参照主键 表的主键属性。表的主键属性。形

34、式如下形式如下: 2.2.若外键是若外键是属性集属性集时,在时,在CREATE TABLECREATE TABLE语句中,所有语句中,所有 属性声明子句之后,添加外键声明子句。属性声明子句之后,添加外键声明子句。形式如下:形式如下: 声明外键声明外键 FOREIGN KEY FOREIGN KEY ( (属性组属性组) ) REFERENCES REFERENCES 主键表名主键表名( (主键属性组主键属性组) ) 属性属性 类型类型 REFERENCES REFERENCES 主主键表名键表名( (主键属性主键属性) ) 31Tongji University 31 1. 1. MovieE

35、xecMovieExec表定义表定义 CREATE CREATE TABLE TABLE MovieExecMovieExec( ( name name varcharvarchar(30),(30), address address varcharvarchar(200),(200), execNoexecNo char(6) char(6) PRIMARY KEYPRIMARY KEY, , netWorthnetWorth money) money) 例例2.9 2.9 电影数据库电影数据库 2. Studio 2. Studio表定义表定义 CREATE TABLE Studio( C

36、REATE TABLE Studio( name name varcharvarchar(100) (100) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar(200),(200), presNopresNo char(6) char(6) REFERENCESREFERENCES MovieExecMovieExec( (execNoexecNo) ) ) 32Tongji University 32 例例2.9 2.9 电影数据库电影数据库 3 3. Movies. Movies表定义表定义 CREATE TABLE Mov

37、ies(CREATE TABLE Movies( title title varcharvarchar(50),(50), mYearmYear intint, , mLenmLen intint, , genre genre varcharvarchar(10),(10), studioNamestudioName varcharvarchar(100) (100) REFERENCES REFERENCES Studio(nameStudio(name), ), producerNoproducerNo char(6) char(6) REFERENCESREFERENCES MovieE

38、xecMovieExec( (execNoexecNo) ,) , PRIMARY KEYPRIMARY KEY( (title,mYeartitle,mYear) ) 33Tongji University 33 5 5. . StarsInStarsIn表定义表定义 CREATE CREATE TABLE TABLE StarsInStarsIn( ( movieTitlemovieTitle varcharvarchar(50),(50), movieYearmovieYear intint, , starNamestarName varcharvarchar(30)(30)refere

39、ncesreferences MovieStarMovieStar(name),(name), foreign keyforeign key( (movieTitle,movieYearmovieTitle,movieYear) ) REFERENCES REFERENCES Movies(Movies(title,mYeartitle,mYear), ), primary key primary key ( (movieTitle,movieYear,starNamemovieTitle,movieYear,starName) ) ) 例例2.9 2.9 电影数据库电影数据库 4 4. .

40、MovieStarMovieStar表定义表定义 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar(30(30) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar(200),(200), gender gender char(1) ,char(1) , birthday date ) birthday date ) 34Tongji University 34 作用作用: : 是基于属性的约束,它约束指定属性的取值不是基于属性的约

41、束,它约束指定属性的取值不 为为空空。 表表定义时,设置定义时,设置NOT NULLNOT NULL约束的方法:约束的方法: 若约束若约束某属性取值不空,则在某属性取值不空,则在该该属性名及其数据类属性名及其数据类 型后,用关键字型后,用关键字NOT NULLNOT NULL声明即可。声明即可。 NOT NULL约束约束 CREATE TABLECREATE TABLE 表名表名( ( 属性属性 类型类型 NOT NULLNOT NULL, ) ) 35Tongji University 35 例例2.10 2.10 设置设置NOT NULLNOT NULL约束约束 要求:要求:在在Movie

42、StarMovieStar表定义时,设表定义时,设gendergender不允许空。不允许空。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar( (200200) ), , gender gender charchar( (1 1) ) NOT NULLNOT NULL, , birthday birthday datedate ) ) 36Tongji Univ

43、ersity 36 作用:作用:约束属性取值必须满足某一约束属性取值必须满足某一条件条件。当执行该。当执行该 属性相关的更新操作时,检查属性相关的更新操作时,检查checkcheck约束条件约束条件 是否满足,若不满足,则拒绝执行更新操作。是否满足,若不满足,则拒绝执行更新操作。 表表定义时,定义时,设置设置CHECKCHECK约束约束的方法:的方法: 基于属性的基于属性的CHECK约束约束 CREATE TABLECREATE TABLE 表名表名( ( 属性属性 类型类型 CHECKCHECK( (属性值应满足的条件表达式属性值应满足的条件表达式) ), ) 37Tongji Univer

44、sity 37 例例2.11 2.11 设置基于属性的设置基于属性的CHECKCHECK约束约束 要求:要求: 在在MovieStarMovieStar表定义时,设表定义时,设gendergender只取只取 F F 或或 MM 。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar( (200200) ), , gender gender char(1) NOT N

45、ULL char(1) NOT NULL CHECKCHECK( (gender gender inin( (FF, ,MM),), birthday birthday datedate ) ) 38Tongji University 38 作用:作用:约束元组必须满足条件。当有新元组插入或约束元组必须满足条件。当有新元组插入或 有更新元组的操作时,有更新元组的操作时,CHECKCHECK约束就进行检查,约束就进行检查, 若新元组或更新的元组不满足若新元组或更新的元组不满足CHECKCHECK条件,则条件,则 拒绝执行插入或更新操作。拒绝执行插入或更新操作。 主要主要用于,涉及多属性用于,涉及

46、多属性的的条件条件约束。约束。 声明位置:声明位置:在在CREATE TABLECREATE TABLE所有属性声明、主键声所有属性声明、主键声 明、外键声明后,单独添加明、外键声明后,单独添加CHECKCHECK约束子句。约束子句。 形如,形如, CHECKCHECK( (元组应满足的条件表达式元组应满足的条件表达式) ) 基于元组的基于元组的CHECK约束约束 39Tongji University 39 例例2.12 2.12 设置基于元组的设置基于元组的CHECKCHECK约束约束 要求:要求:在在MovieStarMovieStar表定义时,加表定义时,加如下如下约束:如果一个约束:

47、如果一个 影星性别为男性影星性别为男性, ,则其姓名不能以则其姓名不能以Ms.Ms.开始。开始。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar( (200200), ), gender gender char(char(1) 1) CHECKCHECK( (gender gender inin( (MM, ,F F),), birthday birthday d

48、atedate , , CHECK CHECK( (gendergender=F F OROR name name NOT LIKE NOT LIKE Ms.%Ms.%) ) ) ) 40Tongji University 40 类型类型 运算符运算符用法示例用法示例 算术比较算术比较 、=、=、!、!= 实验三 SC表 CHECK(score =0 and score=0 and score=100) 补充:补充:CHECK约束常用运算符约束常用运算符 41Tongji University 41 补充:补充:LIKE运算的中通配符运算的中通配符 通配符通配符 含义含义 用法示例用法示例 %

49、 % 包含零个或多个字符的任 意字符串。 MovieStarMovieStar表表 CHECK(name LIKE Ms.%) 约束name属性值以Ms.开始。 _ _( (下划线下划线) )任何单个字符。 实验三实验三 CourseCourse表表 CHECK(cnum LIKE c_) 约束cnum属性值以c为首的4个字符。 在指定范围(a-f)或集 合(abcdef)中的任何单 个字符。 实验三实验三 SectionsSections表表 CHECK(secnum LIKE 0-90-90- 90-90-90-9) 约束secnum必须为6为数字。 不在指定范围(a-f)或 集合(abc

50、def)中的任 何单个字符。 MovieStarMovieStar表表 CHECK(name LIKE 0-9%) 约束name属性首字母不为数字。 42Tongji University 42 作用作用: : 是基于属性的约束,它约束指定属性的非空取是基于属性的约束,它约束指定属性的非空取 值值唯一唯一。 表表定义时,定义时,设置设置UniqueUnique约束约束的方法:的方法: 若约束若约束某属性取值唯一,则在某属性取值唯一,则在该该属性名及其数据类属性名及其数据类 型后,用关键字型后,用关键字UniqueUnique声明即可。声明即可。 Unique约束约束 CREATE TABLEC

51、REATE TABLE 表名表名( ( 属性属性 类型类型 UniqueUnique, ) ) 43Tongji University 43 例例2.13 2.13 设置设置Unique(Unique(唯一值唯一值) )约束约束 要求:要求:在在MovieStarMovieStar表定义中添加一个属性表定义中添加一个属性phonephone,设,设 其为其为长度长度为为1212的字符串,并约束其非空取值唯一。的字符串,并约束其非空取值唯一。 CREATE CREATE TABLE TABLE MovieStarMovieStar ( ( name name varcharvarchar( (3030) ) PRIMARY KEYPRIMARY KEY, , address address varcharvarchar( (200200), ), gender gender char(char(1) 1) CHECKCHECK( (gender gender inin( (MM, ,F F),), birthday birthday datedate , , phone phone charchar(12)(12) Unique Unique, CHECK CHECK( (gendergender=F F OROR name name NOT LIKE NOT

温馨提示

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

评论

0/150

提交评论