




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习学习(xux)目标目标 了解SQL的发展过程和主要功能; 熟练掌握SQL的CREATE TABLE语句和数据完整性约束的定义方法; 熟练掌握SQL的数据操作(cozu)语句,深刻理解数据完整性约束的作用; 熟练掌握SQL SELECT语句,能够运用该语句完成关系数据库上的各种查询; 理解关系数据库的视图概念,掌握视图的定义和使用方法。第1页/共112页第一页,共113页。重点难点重点难点 SQL语言本身就是学习数据库的重点,所以要求学生要熟练掌握,具体就是要熟练掌握SQL CREATE TABLE语句(yj)、SQL INSERT语句(yj)、SQL DELETE语句(yj)、SQL UP
2、DATE语句(yj)和SQL SELECT语句(yj)。 本章学习的难点是CREATE TABLE语句(yj)中有关数据完整性约束的定义,以及SQL SELECT中复杂的连接和嵌套查询。 第2页/共112页第二页,共113页。3.1 SQL语言(yyn)概述 SQL标准源于1986年10月的ANSI标准 1987年6月正式成为ISO标准 SQL89提出了完整性特征 SQL92标准逐步完善(基本、标准和完全级 ) SQL99增加了面向对象等 最新的标准是2003年发布的SQL2003 SQL标准只是一个建议标准,主流产品一般也只达到(d do)了基本级的要求第3页/共112页第三页,共113页。
3、SQL语言(yyn)的主要特点 SQL是一种一体化的语言 SQL语言是一种高度非过程化的语言 SQL语言非常简洁 SQL语言可以直接以命令方式交互使用(shyng),也可以嵌入到程序设计语言中以程序方式使用(shyng) 第4页/共112页第四页,共113页。样本(yngbn)数据库 教师 (Student) 教师编号 院系 姓名 性别 职称 专业课程 (Student) 课程编号 课程名称 责任教师 学时 课程性质选课 (Student) 学号 课程编号 考试成绩学生 (Student) 学号 院系 姓名 性别 生源 状态院系 (Student) 编号 名称 负责人 办公地点图3-1 样本数
4、据库第5页/共112页第五页,共113页。数据数据(shj)(shj)定义功能定义功能与数据与数据(shj)(shj)完整性完整性约束的实现约束的实现SQL的定义(dngy)功能包括模式、表、视图、存储过程、触发器、规则、默认值等的定义(dngy)。第6页/共112页第六页,共113页。SQL中的模式(msh)(Schema) 组织数据库对象的一种逻辑结构 把一个数据库中的所有对象按用途划分(hu fn)为若干集合第7页/共112页第七页,共113页。模式模式(msh)组织举例组织举例z产品模式z订购(dnggu)模式z销售模式第8页/共112页第八页,共113页。定义(dngy)(dngy)
5、模式 模式通常由DBA创建 也可以由得到CREATE SCHEMA授权的用户创建 使用(shyng)短语AUTHORIZATION owner_name可以指定模式的管理者(默认是创建者) CREATE SCHEMA schema_name AUTHORIZATION owner_name 第9页/共112页第九页,共113页。删除(shnch)(shnch)模式 只有在模式(msh)为空、即模式(msh)中不包含任何对象时才可以删除模式(msh)。 DROP SCHEMA schema_name 第10页/共112页第十页,共113页。表的定义(dngy) (dngy) 一个表由若干列构成,
6、自SQL Server 2005不仅可以定义实列(简称(jinchng)列,column_definition), 而且还可以定义虚列(即计算列,computed_column_definition) 理解: CREATE TABLE schema_name.table_name ( | ,.n )第11页/共112页第十一页,共113页。定义(dngy)(dngy)列() () CREATE TABLE schema_name.table_name ( | ,.n )column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY
7、KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第12页/共112页第十二页,共113页。定义(dngy)(dngy)列()() 列
8、名(column_name)和数据类型()必须指定,在SQL Server 2005中可以使用(shyng)的数据类型如表3-1所示 其他项目是各种约束 column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACT
9、ION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第13页/共112页第十三页,共113页。是否(sh fu)允许空值约束 空值的概念(ginin)?column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column )
10、ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第14页/共112页第十四页,共113页。关于约束(yush)名称 列级约束名,名称(mngchng)可以省略 用于命名主关键字、唯一性或参照完整性约束 省略名称(mngchng)不便于管理相应的完整性约束column_name NULL | NOT NULL
11、CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第15页/共1
12、12页第十五页,共113页。主关键字和唯一性约束(yush) PRIMARY KEY:主关键字约束,说明该列是主关键字 UNIQUE:惟一性约束,说明该列取值必须(bx)惟一 PRIMARY KEY和UNIQUE约束的区别?column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET
13、NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第16页/共112页第十六页,共113页。参照(cnzho)完整性约束 说明外部关键字,FOREIGN KEY可以省略(shngl) 什么是外部关键字?外部关键字的作用? schema_name . referenced_table_name ( ref_column ) 指出参照的表和列,默认模式时schema_name可以省略(
14、shngl),列名相同时( ref_column )可以省略(shngl)column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT |
15、 CHECK ( logical_expression ) DEFAULT constant_expression 第17页/共112页第十七页,共113页。参照(cnzho)完整性规则 ON DELETE和ON UPDATE说明在执行(zhxng)删除和更新操作时如何处理参照完整性 删除操作检查的完整性? 更新操作检查的完整性?column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_na
16、me ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第18页/共112页第十八页,共113页。CHECK约束(yush) 用来说明列的取值范围 本约束用逻辑表达式 ( logical_expression )进行说明 如果列值使表达式为真则是合法值,否则就是(jish)非法值
17、column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT
18、 constant_expression 第19页/共112页第十九页,共113页。字段默认值 用常量(chngling)表达式(constant_expression)来说明列的默认取值 column_name NULL | NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAUL
19、T ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) DEFAULT constant_expression 第20页/共112页第二十页,共113页。定义(dngy)(dngy)计算列 column_name AS computed_column_expression PERSISTED NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES referenced_
20、table_name ( ref_column ) ON DELETE NO ACTION | CASCADE ON UPDATE NO ACTION | CHECK ( logical_expression ) CREATE TABLE schema_name.table_name ( | ,.n )第21页/共112页第二十一页,共113页。定义(dngy)(dngy)计算列 其中column_name给出计算(j sun)列的列名,computed_column_expression是对应的计算(j sun)表达式,PERSISTED说明物理存储计算(j sun)列的值。 其他选项和定义
21、实列时类似。column_name AS computed_column_expression PERSISTED NOT NULL CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE ON UPDATE NO ACTION | CHECK ( logical_expression ) 第22页/共112页第二十二页,共113页。定义(dngy)(dngy)表级完整性约
22、束 如果某个完整性约束与多个列相关,则这样的完整性约束不能定义(dngy)在单个列上,这时候就需要表级完整性约束。 单个列上的完整性约束也可以用表级完整性约束的形式来定义(dngy)。第23页/共112页第二十三页,共113页。定义(dngy)(dngy)表级完整性约束 CONSTRAINT constraint_name PRIMARY KEY | UNIQUE | FOREIGN KEY ( column ,.n ) REFERENCES referenced_table_name ( ref_column ,.n ) ON DELETE NO ACTION | CASCADE | SET
23、 NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT | CHECK ( logical_expression ) CREATE TABLE schema_name.table_name ( | ,.n )第24页/共112页第二十四页,共113页。表定义(dngy)(dngy)举例 例1:定义(dngy)院系表,其中编号为主关键字,名称应该惟一、并且不允许为空值。 create table student.院系 (编号tinyint primary key, 名称char(30) unique n
24、ot null, 负责人char(10), 办公地点char(40) )第25页/共112页第二十五页,共113页。第26页/共112页第二十六页,共113页。表定义(dngy)(dngy)举例 例2:定义学生表,其中规定: 学号列是主关键字; 院系列为计算列(取学号列的第3和第4个字符),并且院系值参照院系表的编号值(院系表是被参照表,主关键字是编号;参照表是学生表,外部关键字是院系),此约束说明一名学生一定属于某个院系; 姓名列不允许为空值; 性别必须(bx)取值“男”或“女”; 学生的学籍状态为正常、留级、休学或退学。 第27页/共112页第二十七页,共113页。create table
25、 student.学生(学号char(8) primary key, 院系as convert(tinyint,substring(学号,3,2) persisted not null foreign key references student.院系(编号), 姓名char(10) not null, 性别char(2) check (性别=男 or 性别=女), 生源char(6), 状态char(4) check (状态in (正常,留级,休学(xi xu),退学)第28页/共112页第二十八页,共113页。第29页/共112页第二十九页,共113页。表定义(dngy)(dngy)举例
26、例3:定义教师表,其中规定: 教师编号是主关键字; 院系列为计算列(取教师编号的第1和第2个字符),并且院系值参照院系表的编号值,此约束说明一名教师一定属于某个院系; 姓名列不允许为空值; 性别必须取值“男”或“女”; 职称的取值为教授(jioshu)、副教授(jioshu)、讲师或助教。 第30页/共112页第三十页,共113页。create table student.教师(教师编号char(6) primary key, 院系as convert(tinyint,substring(教师编号,1,2) persisted not null foreign key references s
27、tudent.院系(编号), 姓名char(10) not null, 性别char(2) check (性别=男 or 性别=女), 职称char(6) check (职称in (教授,副教授,讲师,助教(zhjio), 专业char(16)第31页/共112页第三十一页,共113页。第32页/共112页第三十二页,共113页。表定义(dngy)(dngy)举例 例4:定义课程表,其中规定: 课程编号是主关键字; 课程名称不允许(ynx)为空值; 责任教师参照教师表的教师编号值,此约束说明责任教师一定是已经在编的教师; 学时不允许(ynx)为空值; 课程性质分为公共基础、专业基础、专业选修和
28、任意选修。 第33页/共112页第三十三页,共113页。create table student.课程(课程编号char(6) primary key, 课程名称char(24) not null, 责任教师char(6) constraint duty_teacher foreign key references student.教师(教师编号), 学时tinyint not null, 课程性质char(8) check (课程性质in (公共基础,专业(zhuny)基础,专业(zhuny)选修,任意选修) 第34页/共112页第三十四页,共113页。第35页/共112页第三十五页,共11
29、3页。表定义(dngy)(dngy)举例 例5:定义选课表,其中规定: 学号和课程编号两列构成主关键字(需要表级完整性约束); 学号参照学生(xu sheng)表的学号(约束选课的学生(xu sheng)必须存在); 课程编号参照课程表的课程编号(约束被选的课程必须存在); 考试成绩取值在0100之间,并且默认为空值。 第36页/共112页第三十六页,共113页。create table student.选课(学号char(8) foreign key references student.学生, 课程(kchng)编号char(6) foreign key references studen
30、t.课程(kchng), 考试成绩tinyint check (考试成绩between 0 and 100) default null primary key (学号,课程(kchng)编号) 第37页/共112页第三十七页,共113页。第38页/共112页第三十八页,共113页。第39页/共112页第三十九页,共113页。修改(xigi)(xigi)表结构 ALTER TABLE schema_name.table_name ALTER COLUMN column_name NULL | NOT NULL | ADD | | | DROP CONSTRAINT constraint_name
31、 | COLUMN column_name ALTER COLUMN修改已有列的定义,但是(dnsh)只能修改为兼容数据类型或重新定义是否允许空值; 第40页/共112页第四十页,共113页。修改(xigi)(xigi)表结构 ADD添加(tin ji)新列、或新的计算列或表级完整性约束; ALTER TABLE schema_name.table_name ALTER COLUMN column_name NULL | NOT NULL | ADD | | | DROP CONSTRAINT constraint_name | COLUMN column_name 第41页/共112页第四十
32、一页,共113页。修改(xigi)(xigi)表结构 DROP删除指定(zhdng)的完整性约束或指定(zhdng)的列。 ALTER TABLE schema_name.table_name ALTER COLUMN column_name NULL | NOT NULL | ADD | | | DROP CONSTRAINT constraint_name | COLUMN column_name 第42页/共112页第四十二页,共113页。修改(xigi)(xigi)表结构举例 例6:规定学生表的性别(xngbi)字段不允许为空值。 ALTER TABLE 学生 ALTER COLUMN
33、 性别(xngbi)char(2) NOT NULL 是否会影响原先定义在该列上的其他约束?第43页/共112页第四十三页,共113页。第44页/共112页第四十四页,共113页。修改表结构(jigu)(jigu)举例 例7:删除课程表中的责任(zrn)教师列。 alter table student.课程drop column 责任(zrn)教师 如果捆绑了其他对象(如列约束),则需要先删除捆绑的对象。 alter table student.课程drop duty_teacher第45页/共112页第四十五页,共113页。第46页/共112页第四十六页,共113页。第47页/共112页第四
34、十七页,共113页。修改表结构(jigu)(jigu)举例 例8:为课程表增加责任教师列,列描述如下: 字符类型,长度为6; 允许空值; 外部关键字,参照教师表的教师编号列,当删除被参照记录( jl)时该列置为空值,当修改被参照记录( jl)的主关键字时级联修改参照记录( jl)的外部关键字值。第48页/共112页第四十八页,共113页。alter table student.课程add 责任教师( jiosh)char(6) nullconstraint ref_teacher foreign key references student.教师( jiosh)(教师( jiosh)编号)on
35、 delete set nullon update cascade第49页/共112页第四十九页,共113页。第50页/共112页第五十页,共113页。删除(shnch)(shnch)表 DROP TABLE schema_name.table_name ,.n 一次可以删除多个表。不能使用DROP TABLE删除被FOREIGN KEY约束参照(cnzho)的表。如果要在同一个 DROP TABLE语句中删除参照(cnzho)表以及被参照(cnzho)表,则必须先列出参照(cnzho)表。第51页/共112页第五十一页,共113页。思考题 在SQL中CREATE SCHEMA是一条什么(sh
36、n me)命令?创建的SCHEMA是一种什么(shn me)对象?它有什么(shn me)作用? 在表中定义约束时,PRIMARY KEY和UNIQUE有什么(shn me)区别? 在CREATE TABLE命令中哪些内容与定义参照完整性有关?讨论它们的具体作用。 约束一般定义在列上,为什么(shn me)还需要表级约束? 定义计算列时选用关键词PERSISTED有什么(shn me)作用? 计算列是否可以作为参照列(外部关键字)? 如果在定义约束时没有使用CONSTRAINT短语给出约束名,而事后又要删除该约束应该怎么办? 对已有的表可以进行哪些方面的表结构修改?第52页/共112页第五十二
37、页,共113页。数据操作数据操作(cozu)(cozu)功能功能 及数据完整性的作用(zuyng) 第53页/共112页第五十三页,共113页。SQLSQL的数据(shj)(shj)操作 插入(ch r)操作及其完整性约束 删除操作及其完整性约束 更新操作及其完整性约束第54页/共112页第五十四页,共113页。插入(ch r)(ch r)操作及其完整性约束 SQL的插入语句是INSERT,常用格式: INSERT INTO schema_name.table_name ( column_list ) VALUES(expression | DEFAULT | NULL ,.n ) 其中 sc
38、hema_name指出(zh ch)模式名 table_name指出(zh ch)表名 column_list给出插入操作所涉及列的列表(默认是表的全部列) expression | DEFAULT | NULL ,.n 给出对应于column_list的各个列的值 第55页/共112页第五十五页,共113页。例9 插入(ch r)院系表的第1个元组(记录)INSERT INTO student.院系(编号(bin ho),名称,负责人,办公地点) VALUES(1,信息管理学院,李嘉,教一楼3层)CREATE TABLE student.院系(编号 tinyint PRIMARY KEY,
39、名称 char(30) UNIQUE NOT NULL, 负责人 char(10), 办公(bn gng)地点 char(40)第56页/共112页第五十六页,共113页。第57页/共112页第五十七页,共113页。例10 省略(shngl)列名、插入院系表的第2个元组INSERT INTO student.院系VALUES(2,经济( jngj)管理学院,吴鸿忠,教三楼4层)CREATE TABLE student.院系(编号 tinyint PRIMARY KEY, 名称 char(30) UNIQUE NOT NULL, 负责人 char(10), 办公(bn gng)地点 char(4
40、0)第58页/共112页第五十八页,共113页。第59页/共112页第五十九页,共113页。例11INSERT INTO student.院系VALUES(2,计算机学院(xuyun),张秋霞,教二楼3层)CREATE TABLE student.院系(编号(bin ho) tinyint PRIMARY KEY, 名称 char(30) UNIQUE NOT NULL, 负责人 char(10), 办公地点 char(40)违背(wibi)PRIMARY KEY 约束第60页/共112页第六十页,共113页。第61页/共112页第六十一页,共113页。例12INSERT INTO stude
41、nt.院系VALUES(3,经济管理(gunl)学院,张秋霞,教二楼3层)CREATE TABLE student.院系(编号 tinyint PRIMARY KEY, 名称(mngchng) char(30) UNIQUE NOT NULL, 负责人 char(10), 办公地点 char(40)违背(wibi)UNIQUE约束第62页/共112页第六十二页,共113页。第63页/共112页第六十三页,共113页。例13INSERT INTO student.院系(编号(bin ho),负责人,办公地点) VALUES(3,张秋霞,教二楼3层)CREATE TABLE student.院系(
42、编号 tinyint PRIMARY KEY, 名称 char(30) UNIQUE NOT NULL, 负责人 char(10), 办公(bn gng)地点 char(40)违背(wibi)NOT NULL约束第64页/共112页第六十四页,共113页。第65页/共112页第六十五页,共113页。第66页/共112页第六十六页,共113页。例14CREATE TABLE student.学生(xu sheng)(学号 char(8) PRIMARY KEY, 院系 AS CONVERT(Tinyint,SUBSTRING(学号,3,2) PERSISTED NOT NULL FOREIGN
43、KEY REFERENCES student.院系(编号), 姓名 char(10) NOT NULL, 性别 char(2) CHECK (性别=男 OR 性别=女), 生源 char(6), 状态 char(4) CHECK (状态IN(正常,留级,休学,退学)插入(ch r)学生表的第1个元组。INSERT INTO student.学生(xu sheng)(学号,姓名,性别,生源,状态) VALUES(04014101,曹波,男,湖北,正常)第67页/共112页第六十七页,共113页。第68页/共112页第六十八页,共113页。例15 插入学生表的第2条记录(jl)(指定正确的院系值)
44、注意(zh y):学生表的院系列是计算列,是不能被插入语句操作的。 CREATE TABLE student.学生(学号 char(8) PRIMARY KEY, 院系 AS CONVERT(Tinyint,SUBSTRING(学号,3,2) PERSISTED NOT NULL FOREIGN KEY REFERENCES student.院系(编号), 姓名 char(10) NOT NULL, 性别(xngbi) char(2) CHECK (性别(xngbi)=男 OR 性别(xngbi)=女), 生源 char(6), 状态 char(4) CHECK (状态IN(正常,留级,休学,
45、退学)INSERT INTO student.学生(学号,院系,姓名,性别,生源,状态) VALUES(04014111,1,程鸣,女,湖南,正常)INSERT INTO student.学生 VALUES(04014111,程鸣,女,湖南,正常)正确语句:第69页/共112页第六十九页,共113页。第70页/共112页第七十页,共113页。第71页/共112页第七十一页,共113页。例17INSERT INTO student.学生(xu sheng) VALUES(04074122,吴红霞,女,浙江,正常)CREATE TABLE student.学生(xu sheng)(学号 char(
46、8) PRIMARY KEY, 院系 AS CONVERT(Tinyint,SUBSTRING(学号,3,2) PERSISTED NOT NULL FOREIGN KEY REFERENCES student.院系(编号), 姓名 char(10) NOT NULL, 性别 char(2) CHECK (性别=男 OR 性别=女), 生源 char(6), 状态 char(4) CHECK (状态IN(正常,留级,休学,退学)违背(wibi)参照完整性约束第72页/共112页第七十二页,共113页。第73页/共112页第七十三页,共113页。例18INSERT INTO student.学生
47、 VALUES(04026205,张鸿飞,南,北京(bi jn),正常)CREATE TABLE student.学生(学号 char(8) PRIMARY KEY, 院系 AS CONVERT(Tinyint,SUBSTRING(学号,3,2) PERSISTED NOT NULL FOREIGN KEY REFERENCES student.院系(编号), 姓名 char(10) NOT NULL, 性别 char(2) CHECK (性别=男 OR 性别=女), 生源 char(6), 状态(zhungti) char(4) CHECK (状态(zhungti)IN(正常,留级,休学,退
48、学)违背(wibi)域完整性约束第74页/共112页第七十四页,共113页。第75页/共112页第七十五页,共113页。CREATE TABLE student.教师(教师编号 char(6) PRIMARY KEY, 院系 AS CONVERT(Tinyint,SUBSTRING(教师编号,1,2) PERSISTED NOT NULL FOREIGN KEY REFERENCES student.院系(编号), 姓名 char(10) NOT NULL, 性别 char(2) CHECK (性别=男 OR 性别=女), 职称 char(6) CHECK (职称IN (教授,副教授,讲师,助
49、教(zhjio), 专业 char(16) 插入教师(jiosh)表记录,注意教师(jiosh)编号的PRIMARY KEY约束,院系是计算列及其REFRENCES约束等。 第76页/共112页第七十六页,共113页。CREATE TABLE student.课程(课程编号 char(6) PRIMARY KEY, 课程名称 char(24) NOT NULL, 责任教师 char(6) CONSTRAINT duty_teacher FOREIGN KEY REFERENCES student.教师(教师编号), 学时 tinyint NOT NULL, 课程性质 char(8) CHECK
50、 (课程性质IN (公共基础,专业(zhuny)基础,专业(zhuny)选修,任意选修)插入课程表记录,注意(zh y)相关约束。第77页/共112页第七十七页,共113页。例20CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生, 课程(kchng)编号 char(6) FOREIGN KEY REFERENCES student.课程(kchng), 考试成绩 tinyint CHECK (考试成绩 BETWEEN 0 AND 100) DEFAULT NULL PRIMARY KEY (学号,课程(kc
51、hng)编号) )INSERT INTO student.选课(学号,课程(kchng)编号,考试成绩) VALUES(04014122,B00016,88)第78页/共112页第七十八页,共113页。第79页/共112页第七十九页,共113页。例21CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生(xu sheng), 课程编号 char(6) FOREIGN KEY REFERENCES student.课程, 考试成绩 tinyint CHECK (考试成绩 BETWEEN 0 AND 100) DE
52、FAULT NULL PRIMARY KEY (学号,课程编号) )INSERT INTO student.选课 VALUES(04014111,X00201,NULL)第80页/共112页第八十页,共113页。第81页/共112页第八十一页,共113页。例22CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生, 课程(kchng)编号 char(6) FOREIGN KEY REFERENCES student.课程(kchng), 考试成绩 tinyint CHECK (考试成绩 BETWEEN 0 AN
53、D 100) DEFAULT NULL PRIMARY KEY (学号,课程(kchng)编号) )INSERT INTO student.选课VALUES(04014111,B00016,DEFAULT)第82页/共112页第八十二页,共113页。第83页/共112页第八十三页,共113页。例23CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生(xu sheng), 课程编号 char(6) FOREIGN KEY REFERENCES student.课程, 考试成绩 tinyint CHECK (考试
54、成绩 BETWEEN 0 AND 100) DEFAULT NULL PRIMARY KEY (学号,课程编号) )INSERT INTO student.选课(学号,课程(kchng)编号) VALUES(04014101,B00018)第84页/共112页第八十四页,共113页。第85页/共112页第八十五页,共113页。例24违反参照(cnzho)完整性的输入CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生(xu sheng), 课程编号 char(6) FOREIGN KEY REFERENCES
55、student.课程, 考试成绩 tinyint CHECK (考试成绩 BETWEEN 0 AND 100) DEFAULT NULL PRIMARY KEY (学号,课程编号) )INSERT INTO student.选课VALUES(04016116,B00017,52)第86页/共112页第八十六页,共113页。第87页/共112页第八十七页,共113页。第88页/共112页第八十八页,共113页。插入插入(ch r)操作时检查完整性?操作时检查完整性? 检查实体(sht)完整性规则 检查参照完整性规则 检查用户定义完整性规则 第89页/共112页第八十九页,共113页。检查实体(s
56、ht)(sht)完整性规则 如果插入元组的主关键字的属性不为空值、并且相应的属性值在关系(gun x)中不存在(即保持唯一性),则可以执行插入操作,否则不可以执行插入操作。 第90页/共112页第九十页,共113页。检查(jinch)(jinch)参照完整性规则 如果是向被参照关系插入元组,则无须检查参照完整性;如果是向参照关系插入元组,则要检查外部关键字属性上的值是否(sh fu)在被参照关系中存在对应的主关键字的值,如果存在则可以执行插入操作,否则不允许执行插入操作。另外,如果插入元组的外部关键字允许为空值,则当外部关键字是空值时也允许执行插入操作。 第91页/共112页第九十一页,共11
57、3页。检查用户定义(dngy)(dngy)完整性规则 如果(rgu)插入的元组在相应的属性值上遵守了用户定义完整性规则(包括CHECK约束、UNIQUE约束、NULL或NOT NULL约束),则可以执行插入操作,否则不可以执行插入操作。 第92页/共112页第九十二页,共113页。删除操作(cozu)(cozu)及其完整性约束 SQL的删除语句是DELETE,常用格式: DELETE FROM schema_name.table_name WHERE 其中: schema_name指出(zh ch)模式名; table_name指出(zh ch)从哪个表删除记录; 用来指出(zh ch)删除记
58、录的条件,默认是删除全部记录。第93页/共112页第九十三页,共113页。例25DELETE student.学生(xu sheng) WHERE 姓名=吴红霞 删除操作失败(shbi),违背参照完整性 CREATE TABLE student.选课(学号 char(8) FOREIGN KEY REFERENCES student.学生, 课程(kchng)编号 char(6) FOREIGN KEY REFERENCES student.课程(kchng), 考试成绩 tinyint CHECK (考试成绩 BETWEEN 0 AND 100) DEFAULT NULL PRIMARY K
59、EY (学号,课程(kchng)编号) )第94页/共112页第九十四页,共113页。第95页/共112页第九十五页,共113页。例26DELETE student.教师(jiosh) WHERE 教师(jiosh)编号=011122ALTER TABLE student.课程(kchng)ADD 责任教师char(6) NULLCONSTRAINT ref_teacher FOREIGN KEY REFERENCES student.教师(教师编号)ON DELETE SET NULL ON UPDATE CASCADE 删除成功。如果有课程记录的责任教师(jiosh)参照被删除记录,则将该课程记录的责任教师(jiosh)字段置为NULL。第96页/共112页第九十六页,共113页。第97页/共112页第九十七页,共113页。第98页/共112页第九十八页,共113页。举例(j l)27DELETE student.选课 WHERE 课程(kchng)编号=B00018 AND 考试成绩 IS NULL删
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省邹平县八年级生物上册 4.1绿色开花植物的一生教学实录 (新版)济南版
- 企业股东入股合同范例
- 厂房购买合伙合同范例
- 电器购销合同协议范本,签约版
- 中介斡旋合同范例
- 与商家购物合同范例
- 叉装车租赁合同范本
- 小学信息技术第二册下册 收发电子邮件教学实录 苏科版
- 项目合作协议合同范本
- 中介挂牌销售合同范例
- 安宁疗护案例课件
- GB/T 44731-2024科技成果评估规范
- 2024高校图书馆工作计划
- 五年级数学下册 课前预习单(人教版)
- 2024年湖南省公务员考试《行测》真题及答案解析
- 烹饪赛项规程-高职组
- 零星维修工程施工方案
- 初中化学综合实践活动课教学设计5篇
- 2024天津经济技术开发区管委会事业单位招聘37人历年高频难、易错点500题模拟试题附带答案详解
- 多智能体机器人系统控制及其应用课件全套第1-8章多智能体机器人系统-异构多智能体系统的协同控制和最优控制
- 烟叶生产培训题库附有答案
评论
0/150
提交评论