关系数据库标准语言SQL(上).ppt
《关系数据库标准语言SQL(上).ppt》由会员分享,可在线阅读,更多相关《关系数据库标准语言SQL(上).ppt(112页珍藏版)》请在三一办公上搜索。
1、第3章 关系数据库标准语言SQL,SQL是Structured Query Language(结构化查询语言)的缩写。可以说查询是SQL语言的重要组成部分,但不是全部,SQL还包含数据定义、数据操纵和数据控制功能等部分。SQL已经成为关系数据库的标准数据语言,所以现在所有的关系数据库管理系统都支持SQL。,学习目标,了解SQL的发展过程和主要功能;熟练掌握SQL的CREATE TABLE语句和数据完整性约束的定义方法;熟练掌握SQL的数据操作语句,深刻理解数据完整性约束的作用;熟练掌握SQL SELECT语句,能够运用该语句完成关系数据库上的各种查询;理解关系数据库的视图概念,掌握视图的定义和
2、使用方法。,重点难点,SQL语言本身就是学习数据库的重点,所以要求学生要熟练掌握,具体就是要熟练掌握SQL CREATE TABLE语句、SQL INSERT语句、SQL DELETE语句、SQL UPDATE语句和SQL SELECT语句。本章学习的难点是CREATE TABLE语句中有关数据完整性约束的定义,以及SQL SELECT中复杂的连接和嵌套查询。,3.1 SQL语言概述,SQL标准源于1986年10月的ANSI标准1987年6月正式成为ISO标准SQL89提出了完整性特征SQL92标准逐步完善(基本、标准和完全级)SQL99增加了面向对象等最新的标准是2003年发布的SQL200
3、3SQL标准只是一个建议标准,主流产品一般也只达到了基本级的要求,SQL语言的主要特点,SQL是一种一体化的语言 SQL语言是一种高度非过程化的语言 SQL语言非常简洁 SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用,样本数据库,图3-1 样本数据库,数据定义功能与数据完整性约束的实现,SQL的定义功能包括模式、表、视图、存储过程、触发器、规则、默认值等的定义。,SQL中的模式(Schema),组织数据库对象的一种逻辑结构把一个数据库中的所有对象按用途划分为若干集合,模式组织举例,产品模式订购模式销售模式,定义模式,模式通常由DBA创建也可以由得到CREATE
4、SCHEMA授权的用户创建使用短语AUTHORIZATION owner_name可以指定模式的管理者(默认是创建者),CREATE SCHEMA schema_name AUTHORIZATION owner_name,删除模式,只有在模式为空、即模式中不包含任何对象时才可以删除模式。,DROP SCHEMA schema_name,表的定义,一个表由若干列构成,自SQL Server 2005不仅可以定义实列(简称列,column_definition),而且还可以定义虚列(即计算列,computed_column_definition)理解:,CREATE TABLE schema_na
5、me.table_name(|,.n),定义列(),CREATE TABLE schema_name.table_name(|,.n),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 DE
6、FAULT|CHECK(logical_expression)DEFAULT constant_expression,定义列(),列名(column_name)和数据类型()必须指定,在SQL Server 2005中可以使用的数据类型如表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|CASCA
7、DE|SET NULL|SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT|CHECK(logical_expression)DEFAULT 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 ACTIO
8、N|CASCADE|SET NULL|SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT|CHECK(logical_expression)DEFAULT constant_expression,关于约束名称,列级约束名,名称可以省略用于命名主关键字、唯一性或参照完整性约束省略名称不便于管理相应的完整性约束,column_name NULL|NOT NULL CONSTRAINT constraint_name PRIMARY KEY|UNIQUE|FOREIGN KEY REFERENCES schema_name.ref
9、erenced_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,主关键字和唯一性约束,PRIMARY KEY:主关键字约束,说明该列是主关键字 UNIQUE:惟一性约束,说明该列取值必须惟一 PRIMARY KEY和UNIQUE约束的区别?,column_name NULL|NOT NULL CONS
10、TRAINT 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,参照完整性约束,说明外部关键字,FOREIGN KEY可以省略什么是外部关键字
11、?外部关键字的作用?schema_name.referenced_table_name(ref_column)指出参照的表和列,默认模式时schema_name可以省略,列名相同时(ref_column)可以省略,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 U
12、PDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT|CHECK(logical_expression)DEFAULT constant_expression,参照完整性规则,ON DELETE和ON UPDATE说明在执行删除和更新操作时如何处理参照完整性删除操作检查的完整性?更新操作检查的完整性?,column_name NULL|NOT NULL CONSTRAINT constraint_name PRIMARY KEY|UNIQUE|FOREIGN KEY REFERENCES schema_name.referenced_table_name(r
13、ef_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,CHECK约束,用来说明列的取值范围本约束用逻辑表达式(logical_expression)进行说明如果列值使表达式为真则是合法值,否则就是非法值,column_name NULL|NOT NULL CONSTRAINT constraint_name PRIMARY KEY
14、|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,字段默认值,用常量表达式(constant_expression)来说明列的默认取值,column_name NULL|NOT NULL CONS
15、TRAINT 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,定义计算列,column_name AS computed_column_ex
16、pression 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),CREATE TABLE schema_name.table_name(|,.n),定义计算列,其中column_name给出计算列的列名,computed_column_expression
17、是对应的计算表达式,PERSISTED说明物理存储计算列的值。其他选项和定义实列时类似。,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),定义表级完整性约束,如果某个完整性约
18、束与多个列相关,则这样的完整性约束不能定义在单个列上,这时候就需要表级完整性约束。单个列上的完整性约束也可以用表级完整性约束的形式来定义。,定义表级完整性约束,CONSTRAINT constraint_name PRIMARY KEY|UNIQUE|FOREIGN KEY(column,.n)REFERENCES referenced_table_name(ref_column,.n)ON DELETE NO ACTION|CASCADE|SET NULL|SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT|CHECK(l
19、ogical_expression),CREATE TABLE schema_name.table_name(|,.n),表定义举例,例1:定义院系表,其中编号为主关键字,名称应该惟一、并且不允许为空值。create table student.院系(编号tinyint primary key,名称char(30)unique not null,负责人char(10),办公地点char(40),表定义举例,例2:定义学生表,其中规定:学号列是主关键字;院系列为计算列(取学号列的第3和第4个字符),并且院系值参照院系表的编号值(院系表是被参照表,主关键字是编号;参照表是学生表,外部关键字是院系)
20、,此约束说明一名学生一定属于某个院系;姓名列不允许为空值;性别必须取值“男”或“女”;学生的学籍状态为正常、留级、休学或退学。,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),状态char(4)check(状态in(正常,留级,休学,退学),表定义举例
21、,例3:定义教师表,其中规定:教师编号是主关键字;院系列为计算列(取教师编号的第1和第2个字符),并且院系值参照院系表的编号值,此约束说明一名教师一定属于某个院系;姓名列不允许为空值;性别必须取值“男”或“女”;职称的取值为教授、副教授、讲师或助教。,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)ch
22、eck(性别=男 or 性别=女),职称char(6)check(职称in(教授,副教授,讲师,助教),专业char(16),表定义举例,例4:定义课程表,其中规定:课程编号是主关键字;课程名称不允许为空值;责任教师参照教师表的教师编号值,此约束说明责任教师一定是已经在编的教师;学时不允许为空值;课程性质分为公共基础、专业基础、专业选修和任意选修。,create table student.课程(课程编号char(6)primary key,课程名称char(24)not null,责任教师char(6)constraint duty_teacher foreign key reference
23、s student.教师(教师编号),学时tinyint not null,课程性质char(8)check(课程性质in(公共基础,专业基础,专业选修,任意选修),表定义举例,例5:定义选课表,其中规定:学号和课程编号两列构成主关键字(需要表级完整性约束);学号参照学生表的学号(约束选课的学生必须存在);课程编号参照课程表的课程编号(约束被选的课程必须存在);考试成绩取值在0100之间,并且默认为空值。,create table student.选课(学号char(8)foreign key references student.学生,课程编号char(6)foreign key refer
24、ences student.课程,考试成绩tinyint check(考试成绩between 0 and 100)default null primary key(学号,课程编号),修改表结构,ALTER TABLE schema_name.table_name ALTER COLUMN column_name NULL|NOT NULL|ADD|DROP CONSTRAINT constraint_name|COLUMN column_name,ALTER COLUMN修改已有列的定义,但是只能修改为兼容数据类型或重新定义是否允许空值;,修改表结构,ADD添加新列、或新的计算列或表级完整性约
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 语言 SQL

链接地址:https://www.31ppt.com/p-5039641.html