第三章 关系数据库标准语言SQL课件

上传人:w****i 文档编号:92496630 上传时间:2019-07-10 格式:PPT 页数:225 大小:1.58MB
返回 下载 相关 举报
第三章 关系数据库标准语言SQL课件_第1页
第1页 / 共225页
第三章 关系数据库标准语言SQL课件_第2页
第2页 / 共225页
第三章 关系数据库标准语言SQL课件_第3页
第3页 / 共225页
第三章 关系数据库标准语言SQL课件_第4页
第4页 / 共225页
第三章 关系数据库标准语言SQL课件_第5页
第5页 / 共225页
点击查看更多>>
资源描述

《第三章 关系数据库标准语言SQL课件》由会员分享,可在线阅读,更多相关《第三章 关系数据库标准语言SQL课件(225页珍藏版)》请在金锄头文库上搜索。

1、第三章 关系数据库标准语言 SQL,第三章 关系数据库标准语言SQL,SQL(structured query language),结构化查询语言,是一个通用的、功能极强的关系数据库语言。 SQL是关系数据库的标准语言。 SQL是一种介于关系代数与关系演算之间的语言。,本章主要内容,SQL概述 数据定义 数据查询 数据更新 视图 数据控制,3.1 SQL概述 3.1.1 SQL的产生与发展,发展过程 1974年,Boyce 和Chamberlin提出SQL语言 19751979年,在IBM公司System R上实现,SQL标准的进展,3.1.2 SQL语言的特点,综合统一 高度非过程化 面向集

2、合的操作方式 以同一种语法结构提供两种使用方式 语言简洁,易学易用,SQL语言的动词,3.1.3 SQL语言的基本概念,SQL,视图1,视图2,基本表1,基本表2,基本表3,基本表4,存储文件1,存储文件2,内模式 (存储模式),模式,外模式,SQL数据库体系结构,用户,student,Student 视图,3.2 学生-课程数据库,Student,Course,SC,3.3 数据定义,关系数据库的基本对象是表、视图、索引。 SQL的数据定义功能包括模式定义、表定义、视图和索引定义。,SQL的数据定义语句,3.3.1 模式的定义与删除,一.定义模式 CREATE SCHEMAAUTHORIZA

3、TION,例1:定义一个学生-课程模式S-T CREATE SCHEMA“S-T“ AUTHORIZATION WANG; 例2: CREATE SCHEMA AUTHORIZATION WANG;,CREATE SCHEMA AUTHORIZATION ,例3 CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) );,删除模式 DROP SCHEMA ,例4 DROP SCHE

4、MA ZHANG CASCADE;,3.2.2 定义、删除与修改基本表,定义基本表 基本格式: CREATE TABLE (列级完整性约束条件 ,列级完整性约束条件 ,);,例5 建立一个“学生”表Student,它由学号Sno、 姓名Sname、性别Ssex、年龄Sage、所在系Sdept 5个属性组成,其中学号是主键,学生姓名值是唯一的。 CREATE TABLE Student (Sno CHAR(5) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(1), Sage INT, Sdept CHAR(15);,Student,例6 建立一个“课

5、程表”Course. CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY Cpno REFERENCES Course(Cno);,例7 建立学生选课表SC CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno)REFERENCES Student(Sno), FOREIGN KEY(Cno)REF

6、ERENCES Course(Cno);,二.数据类型,常用数据类型,三.模式与表,定义基本表所属模式的方法: 方法一:在表名中明显地给出模式名 CREATE TABLE “S-T“.Student(); CREATE TABLE “S-T“.Cource(); CREATE TABLE “S-T“.SC();,方法二:在创建模式语句中同时创建表,如例3,方法三:设置所属的模式,这样在创建表时表名中不必给出模式名。 SET search_path TO “S-T“,PUBLIC;,修改基本表 基本格式: ALTER TABLE ADD完整性约束 DROP MODIFY(ALTER COLUMN

7、);,例8 向Student表增加“入学时间”列,其数据类 型为日期型。 ALTER TABLE Student ADD S_entrance DATE;,例9 将年龄的数据类型改为整数。 ALTER TABLE Student MODIFY Sage INT; (ALTER COLUMN Sage INT;),例10 删除关于学号必须取唯一值的约束 ALTER TABLE Student DROP UNIQUE(Sno);,Student,例11.增加课程名称必须取唯一值的约束条件 ALTER TABLE Course ADD UNIQUE(Cname);,删除基本表 基本格式: DROP

8、TABLERESTRICTCASCADE; 例12 删除Student表 DROP TABLE Student CASCADE;,例13 若表上建有视图,选择RESTRICT时表不能删除; CASCADE时可以删除表,视图也自动被删除。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT; -ERROR:cannot drop table Student because other objects depend on it DROP TA

9、BLE Student CASCADE; -NOTICE:drop cascades to view IS_Student SELECT * FROM IS_Student; -ERROR:relation “IS_Student“ does not exist,3.2.2 建立与删除索引,建立索引 基本格式: CREATE UNIQUECLUSTER INDEX ON( , );,索引类型,普通索引 没有指定UNIQUE或CLUSTERED等,将建立普通索引。 唯一索引 通过指定UNIQUE则为表创建唯一索引(不允许存在索引值相同的两个元组)。 聚簇索引 聚簇索引的索引值与关系中元组的顺序物

10、理上相同。一个表只允许建立一个聚簇索引。,例13 CREATE CLUSTER INDEX StusnameON Student(Sname);,例14 为学生-课程数据库中的Student,Course,SC 3个表建立索引。其中Student按学号升序建立唯一索引,Course 表按课程号升序建立唯一索引,SC表学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno AS

11、C, Cno DESC);,删除索引 基本格式: DROP INDEX 例7 删除Student 表的Stusname索引。 DROP INDEX Stusname;,习题,建立一个图书表book,由图书号(定长字符串,长度20),书名(变长字符串,长度50),作者(变长字符串,长度30),出版社(变长字符串,长度30),单价(浮点型 ,FLOAT)构成,其中书名、作者、出版社单价均不能为空值。 建立一个读者表reader,由读者号(定长字符串,长度10),姓名(定长字符串,长度8),性别(定长字符串,长度为2),办公电话(定长字符串,长度为8),部门(变长字符串,长度30)构成,其中,姓名、

12、性别为非空值,办公电话和部门为空值。 建立借阅表loan,由读者号(定长字符串,长度10),图书号(定长字符串,长度20),借出日期(定长字符串,长度8),归还日期(定长字符串,长度8),其中借出日期不能为空值,归还日期为空值。,给图书表增加一列“ISBN”,数据类型为CHAR(13)。 为增加的ISBN列增加非空值的约束。 删除图书表中ISBN列非空值约束。 将ISBN的数据类型改为整数。 在图书表的图书号上建立一个唯一索引。 在图书表的书名列上建立一个聚簇索引。 删除刚建立的索引。,列级完整性约束 NOT NULL和NULL约束 说明指定的列允许或不允许为空值。 UNIQUE约束 唯一性约

13、束,每个UNIQUE约束都生成一个惟一索引。 DEFAULT定义 为列定义默认值,每列只能有一个DEFAULT定义。,例 在student上经常需要按学号进行查询,则可以为之建立一个普通索引: CREATE INDEX Sno-idx ON student(Sno) 多字段上建立索引 CREATE INDEX Sno-Sage-idx ON student(Sno,sage DESC),例 在student关系中规定一个学生只能有 一个学号,因此可以在student的sno 属性上建立一个惟一索引。 CREATE UNIQUE INDEX sno-idx ON student(sno);,例

14、在student表的姓名列上建立一个聚簇 索引。 CREATE CLUSTER INDEX sname-idx on student(sname);,3.3 数据查询,基本格式 SELECT ALLDESTINCT, FROM , WHERE GROUP BY HAVING ORDER BY ASCDEC;,“学生课程”数据库: Student 表 由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)组成: Student (Sno,Sname,Ssex,Sage,Sdept) 其中Sno为主码。 SC表 由学号(Sno)、课程号(Cno)、成绩(Gr

15、ade)组成: SC (Sno, Cno,Grade) Course表 课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit) 组成: Course (Cno,Cname,Cpno,Ccredit),单表查询(简单查询),查询表中的若干列 查询指定列 例1. 查询全体学生的学号与姓名. SELECT Sno, Sname FROM Student ;,例2. 查询全体学生的姓名,学号,所在系. SELECT Sname , Sno, Sdept FROM Student ;,查询全体 在SELECT后列出所有列名 将目标表达式指定为*(结果顺序与基本表中相同) 例

16、3.查询全体学生的详细记录 SELECT * FROM Student ;,可以是列名,列和常数组成的加、减、乘、除 等算术表达式,还可以是字符串常量、函数等。 查询经过计算的值 例4.查询全体学生的姓名及出生年份. SELECT Sname,2013-Sage FROM Student ; 查询结果: Sname 2013-Sage 李勇 1990 刘晨 1991 王名 1992 张立 1992,查询结果中包含字符串常量、函数 例5.查询全体学生的姓名、YearofBirth:、出生年份 和所在系,用小写字母表示所有系名。 SELECT Sname,Year of Birth:, 2010-Sage ,ISLOWER(Sdept) FROM Studen

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号