资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 关系数据库标准语言SQL,褚龙现 ,回顾- 笛卡儿积运算,两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组。 记作:,在关系R中选择满足给定条件的元组,记做: F (R) = t | t R F(t)=真 F是一个公式,表示形式为由逻辑运算符(,)连接各算术表达式组成。 算术表达式的基本形式为:XY. =, , ,=, 。,选择运算是从关系中选取使公式为真的元组。这是从行的角度进行的运算。,例 求计算机科学系CS的学生, SD=CS (S), SD=CS (S),回顾- 选择运算,这是从列的角度进行的运算。,例 SN,SD (S) 即求得学生关系S在学生姓名和所在系这两个属性上的投影结果,关系R上的投影是从R中选择若干属性列组成新的关系。记做: A (R) = tA | t R 投影之后不仅取消了某些列,还可能取消某些元组。,SN,SD (S),回顾- 投影运算,S,R,R S, CE,回顾- 连接运算,自然连接,另一种是自然连接。自然连接是一种特殊的等值连接,它要求两个 关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的 属性去掉。,半连接,在R、S自然连接后仅保留对R的属性的投影,记为:R S,例 关系R、S的半连接:,R,给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R中的Y与S中的Y 可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新 的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上 分量值x的象集Yx包含S在Y上投影的集合。记作: RS = tX | tR Yx Y(S) 其中Yx为x在R中的象集,x=tX,Z,X,除运算,SQL概述,数据定义语言,1,2,教 学 内 容,教 学 目 标,教学具体内容,SQL的特点 SQL的基本概念 模式定义 数据表定义 索引定义,3.1 SQL概述,SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 SQL的特点 SQL的基本概念,3.1.1 SQL特点,1.综合统一 集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。 可以独立完成数据库生命周期中的全部活动: 定义关系模式,插入数据,建立数据库; 对数据库中的数据进行查询和更新; 数据库重构和维护 数据库安全性、完整性控制等 用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。 数据操作符统一,3.1.1 SQL特点,2.高度非过程化 非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径 SQL只要提出“做什么”,无须了解存取路径。 存取路径的选择以及SQL的操作过程由系统自动完成。,3.1.1 SQL特点,3.面向集合的操作方式 非关系数据模型采用面向记录的操作方式,操作对象是一条记录 SQL采用集合操作方式 操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组的集合,3.1.1 SQL特点,4.以同一种语法结构提供多种使用方式 SQL是独立的语言 能够独立地用于联机交互的使用方式 SQL又是嵌入式语言 SQL能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用,3.1.1 SQL特点,5.语言简洁,易学易用,SQL功能极强,完成核心功能只用了9个动词。,3.1.2 SQL基本概念,SQL支持关系数据库三级模式结构,3.1.2 SQL基本概念,基本表 本身独立存在的表 SQL中一个关系就对应一个基本表 一个(或多个)基本表对应一个存储文件 一个表可以带若干索引 存储文件 逻辑结构组成了关系数据库的内模式 物理结构是任意的,对用户透明 视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的数据 视图是一个虚表 用户可以在视图上再定义视图,3.2 示例学生数据库,学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade),3.2 示例学生数据库,Student表,3.2 示例学生数据库,Course表,3.2 示例学生数据库,SC表,3.3 数据定义,SQL的数据定义功能: 模式定义、表定义、视图和索引的定义,3.3.1 数据库定义,创建数据库,CREATE DATABASE stu_course,SQL SERVER对变量名的要求 SQL SERVER中CREATE DATABASE 语句的参数及含义,3.3.1 数据库定义,使用和删除数据库,选择要访问的数据库: USE USE stu_course,删除数据库: DROP DATABASE DROP DATABASE stu_course,3.3.2 模式定义,定义模式,CREATE SCHEMA AUTHORIZATION 如果没有指定,则隐含为 创建模式的用户必须拥有DBA权限,或获得DBA授予的CREATE SCHEMA的权限 在SQLServer2000中模式与用户一致 在SQLServer2005中模式(框架)与用户分离,3.3.2 模式定义,定义模式,例1定义一个学生-课程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 为用户WANG定义了一个模式S-T 例2CREATE SCHEMA AUTHORIZATION WANG; 隐含为用户名WANG 如果没有指定,那么隐含为,3.3.2 模式定义,定义模式,定义模式实际上定义了一个命名空间 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION |,3.3.2 模式定义,定义模式,例3 CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 为用户ZHANG创建了一个模式TEST,并在其中定义了 一个表TAB1。,3.3.2 模式定义,删除模式,DROP SCHEMA CASCADE(级联) 删除模式的同时把该模式中所有的数据库对象全部删除 RESTRICT(限制) 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。当该模式中没有任何下属的对象时 才能执行。,3.3.2 模式定义,删除模式,例4 DROP SCHEMA ZHANG CASCADE; 删除模式ZHANG 同时该模式中定义的表TAB1也被删除,3.3.3 基本表定义,定义基本表,CREATE TABLE ( , , ); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列完整性约束条件 :涉及一个或多个属性列完整性约束,3.3.3 基本表定义,定义基本表,常见完整性约束 主码约束: PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 外键约束: FOREIGN KEY 检查约束: CHECK,3.3.3 基本表定义,定义基本表,例5 建立“学生”表Student,学号是主码,姓名取值唯一。 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );,主码,3.3.3 基本表定义,定义基本表,例6 建立一个“课程”表Course CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,先修课,Cpno是外码 被参照表是Course 被参照列是Cno,3.3.3 基本表定义,定义基本表,例7 建立一个“学生选课”表SC CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /* 主码由两个属性构成,表级约束*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 表级完整性约束条件, Cno是外码,被参照表是Course*/ );,3.3.3 基本表定义,定义基本表,列约束_空值:,定义Course的时候指定Cname不允许取空值: CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40) NOT NULL, Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,3.3.3 基本表定义,定义基本表,CHECK约束1 :,定义Course的时候指定Ccredit的值应该在14之间: CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40) NOT NULL, Cpno CHAR(4) , Ccredit SMALLINT CHECK(Ccredit=1 AND Ccredit=4), FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,3.3.3 基本表定义,定义基本表,CHECK约束2 :,定义Student的时候指定Ssex的值只能是 男 或女,指定男生必须够18岁 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2) CHECK(Ssex IN(男,女), Sage SMALLINT NOT NULl, Sdept CHAR(20), CHECK(Ssex=女 OR Sage=18) );,3.3.3 基本表定义,数据类型,SQL中域的概念用数据类型来实现 定义表
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号