第3章关系数据库语言SQL知识讲解

上传人:yuzo****123 文档编号:137785263 上传时间:2020-07-11 格式:PPT 页数:113 大小:401KB
返回 下载 相关 举报
第3章关系数据库语言SQL知识讲解_第1页
第1页 / 共113页
第3章关系数据库语言SQL知识讲解_第2页
第2页 / 共113页
第3章关系数据库语言SQL知识讲解_第3页
第3页 / 共113页
第3章关系数据库语言SQL知识讲解_第4页
第4页 / 共113页
第3章关系数据库语言SQL知识讲解_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《第3章关系数据库语言SQL知识讲解》由会员分享,可在线阅读,更多相关《第3章关系数据库语言SQL知识讲解(113页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 关系数据库语言SQL,2,本章重要概念,(1)SQL数据库的体系结构,SQL的组成。 (2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。 (3)SQL的数据查询;SELECT语句的句法,SELECT语句的三种形式及各种限定,基本表的连接操作,SQL3中的递归查询。 (4)SQL的数据更新:插入、删除和修改语句。 (5)视图的创建和撤消,对视图更新操作的限制。 (6)嵌入式SQL:预处理方式,使用规定,使用技术,卷游标,动态SQL语句。 (7)存储过程与SQL/PLM。,3,本章概述,SQL是关系数据库的标准语言,对关系模型的发展和商用DBMS的研制起着重要的作用。SQL

2、语言是介乎于关系代数和元组演算之间的一种语言。本章详细介绍SQL的核心部分内容: 数据定义 数据查询 数据更新 嵌入式SQL,4,关系数据库语言SQL,3.1 SQL简介 3.2 SQL的数据定义 3.3 SQL的数据查询 3.4 SQL的数据更新 3.5 视图的定义和对视图的操作 3.6 嵌入式SQL 3.7 存储过程与SQL/PSM 3.8 小结,6,3.1.1 SQL发展史(1),1970年,美国IBM研究中心的E.F.Codd连续发表多篇论文,提出关系模型。 1972年,IBM公司开始研制实验型关系数据库管理系统SYSTEM R,配制的查询语言称为SQUARE语言。 1974年,把SQ

3、UARE修改为SEQUEL语言。 1978年,SEQUEL简称为SQL,即“结构式查询语言”。 SQL的发音仍为“sequel”。现在SQL已经成为一个标准 ,其发音更倾向于发“ess-cue-ell ” 。,7,3.1.1 SQL发展史(2),1986年10月,ANSI SQL标准 1987年6月,ISO SQL标准 1992年8月,ISO SQL标准(SQL2) 1999年,ISO SQL标准(SQL3) 在未来很长一段时间里,SQL仍将是关系数据库领域的主流语言。在软件工程、人工智能领域,SQL已显示出相当大的潜力。,(SQL86),8,3.1.2 SQL数据库的体系结构(1),用户1,

4、用户2,用户3,用户4,视图1,视图2,基本表1,基本表2,基本表3,基本表4,存储文件1,存储文件2,存储文件3,存储文件4,图3.1 SQL数据库的体系结构,SQL用户,View,Base table,Stored file,9,3.1.2 SQL数据库的体系结构(2),(1) 一个SQL模式 ( Schema )是表和约束的集合。 (2) 一个表由行集构成,一行是列的序列 。 (3) 表有三种类型: 基本表、视图和导出表。 (4) 基本表与存储文件间的联系是M:N。每个存储 文件与外部存储器上一个物理文件对应。 (5) 用户可以用SQL语句对基本表和视图进行查询等操作。在用户看来,两者是

5、一样的,都是表。 (6) SQL用户可以是应用程序,也可以是终端用户。 虽然SQL是国际公认的关系数据库标准,但标准的SQL文档中并没有使用“关系”和“数据库”这两个名词。,10,3.1.3 SQL的组成,核心SQL主要有四个部分: (1) 数据定义语言,即SQL DDL,用于定义 SQL模式、基本表、视图、索引等结构。 (2) 数据操纵语言,即SQL DML。 数据操纵分成数据查询和数据更新两类。其中 数据更新又分成插入、删除和修改三种操作。 (3) 嵌入式SQL语言的使用规定。 SQL语句嵌入在宿主语言程序中的规则。 (4) 数据控制语言,即SQL DCL,这一部分包括授 权、完整性规则的

6、描述、事务控制等内容。,11,3.1.4 SQL的特点,(1)SQL具有十分灵活和强大的查询功能,其SELECT语句能完成相当复杂的查询操作。 (2)SQL不是一个应用开发语言,它只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能。 (3)SQL是国际标准语言,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化。 (4)SQL的词汇不多,完成核心功能只用了9个英语动词,它的语法结构接近英语,因此容易学习和使用。,12,3.2 SQL的数据定义,3.2.1 SQL模式的创建和撤销 3.2.2 基本数据类型 3.2.3 基本表的创建、修改

7、和撤销 3.2.4 索引的创建和撤销,13,3.2.1 SQL模式的创建和撤销,SQL模式的创建可用CREATE SCHEMA语句定义,其基本句法如下: CREATE SCHEMA模式名AUTHORIZATION用户名 DROP语句的句法如下: DROP SCHEMA模式名CASCADERESTRICT 其方式有两种: CASCADE (级联式)方式。 RESTRICT (约束式)方式。,14,3.2.2 基本数据类型,SQL提供的主要数据类型(也称为“域类型”)有: (1)数值型:INTEGER,SMALLINT NUMERIC(p,d) (2)字符串型:CHAR(n) (3) 位串型 (4

8、) 时间型,15,3.2.3基本表的创建、修改和撤销(1),1.基本表的创建 例3.1 基本表 T(T#,TNAME,TITLE)可用下列语句创建: CREATE TABLE T (T# CHAR(4) NOT NULL, TNAME CHAR(8) NOT NULL, TITLECHAR(10), PRIMARYKEY(T#);,16,3.2.3基本表的创建、修改和撤销(2),CREATE TABLE C (C#CHAR(4), CNAMECHAR(10) NOT NULL, T#CHAR(4), PRIMARY KEY(C#), FOREIGNKEY (T#) REFERENCES T(T

9、#); CREATE TABLE S (S#CHAR(4) NOT NULL, SNAME CHAR(8) NOT NULL, AGESMALLINT, SEX CHAR(1), PRIMARY KEY(S#);,17,3.2.3基本表的创建、修改和撤销(3),CREATE TABLE SC (S# CHAR(4), C# CHAR(4), SCORE SMALLINT, PRIMARYKEY(S#,C#), FOREIGN KEY(S#)REFERENCES S(S#), FOREIGN KEY(C#)REFERENCES C(C#);,18,3.2.3基本表的创建、修改和撤销(4),2基本

10、表结构的修改 对基本表的结构进行修改,即增加新的列、删除原有的列或修改数据类型、宽度等。 (1)增加新的列用“ALTERADD”语句,其句法如下: ALTER TABLE ADD (2)删除原有的列用“ALTERDROP”语句,句法: ALTER TABLE DROP CASCADERESTRICT (3)修改原有列的类型、宽度的句法如下: ALTER TABLE MODIFY ,19,3.2.3基本表的创建、修改和撤销(5),例3.2 ALTER TABLE S ADD ADDRESS VARCHAR(30); 例3.3 ALTER TABLE S DROP AGE CASCADE; 例3.

11、4 ALTER TABLE S MODIFY S# CHAR(6);,20,3.2.3基本表的创建、修改和撤销(6),基本表的撤销 撤销语句的句法如下: DROP TABLE CASCADERESTRICT 此处的CASCADE、RESTRICT的语义同前面句法中的语义一样。 例3.5 需要撤销基本表S。但只有在没有视图或约束引用基本表S中的列时才能撤销,否则拒绝撤销。可用下列语句实现: DROP TABLE S RESTRICT;,21,3.2.4 索引的创建和撤销(1),索引的创建 创建索引可用“CREATE INDEX”语句实现。其句法如下: CREATE UNIQUE INDEX ON

12、 (列名表) 索引的撤消 当索引不需要时,可以用“DROP INDEX”语句撤消,其句法如下: DROP INDEX ,22,3.2.4 索引的创建和撤销(2),例3.6 CREATE UNIQUE INDEX S#_INDEX ON S(S#); CREATE UNIQUE INDEX SC_INDEX ON SC(S# ASC,C# DESC); 例3.7 DROP INDEX S#_INDEX,SC_INDEX;,23,3.3 SQL的数据查询,3.3.1 SELECT查询语句的基本结构 3.3.2 SELECT语句完整的结构 3.3.3 数据查询中的限制和规定 3.3.4 条件表达式中

13、的比较操作 3.3.5 嵌套查询的改进写法 3.3.6 基本表的联接操作 3.3.7 SQL3中的递归查询,24,3.3.1 SELECT查询语句的基本结构(1),SELECTFROMWHERE句型 在关系代数中最常用的式子是下列表达式: A1,An(F(R1Rm) 针对上述表达式, SQL为此设计了SELECTFROMWHERE句型: SELECT A1,An FROM R1,Rm WHERE F,25,3.3.1 SELECT查询语句的基本结构(2),在WHERE子句的条件表达式F中可使用下列运算符: 算术比较运算符:,或!。 逻辑运算符:AND,OR,NOT。 集合成员资格运算符:IN,

14、NOT IN。 谓词:EXISTS,ALL,SOME,UNIQUE。 聚合函数:AVG,MIN,MAX,SUM,COUNT。 F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。 另外,SELECT语句的查询结果之间还可以进行集合的并、交、差操作,其运算符是:UNION,INTERSECT,EXCEPT。 SELECT语句能表达所有的关系代数表达式。,26,3.3.1 SELECT查询语句的基本结构(3),SELECT句型使用实例 例3.8 教学数据中有四个基本表: T(T#,TNAME,TITLE) C(C#,CNAME,T#) S(S#,SNAME,AGE,SEX) S

15、C(S#,C#,SCORE) 用户有一个查询语句: 检索学习课程号为C2课程的学生学号与姓名。 这个查询要从基本表S和SC中检索数据,因此可以有下面三种写法。,27,3.3.1 SELECT查询语句的基本结构(4),第一种写法(连接查询): SELECT S.S#, SNAME FROM S,SC WHERE S.S#SC.S# AND C#C2; 第二种写法(嵌套查询): SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE C#C2);,不相关子查询,28,3.3.1 SELECT查询语句的基本结构(5),第二种写法(嵌套查

16、询)(另一种写法): SELECT S#,SNAME FROM S WHERE C2 IN(SELECT C# FROM SC WHERE S#S.S# ); 第三种写法(使用存在量词的嵌套查询): SELECT S#,SNAME FROM S WHERE EXISTS(SELECT * FROM SC WHERE SC.S#S.S# AND C#C2);,相关子查询,29,3.3.1 SELECT查询语句的基本结构(6),例3.9 对于教学数据库中四个基本表T、C、S、SC,下面用SELECT语句表达第2章中例2.6的各个查询语句。 检索学习课程号为C2的学生学号与成绩。 SELECT S#,SCORE FROM SC WHERE C#C2; 该语句已在例3.8中介绍过。,30,3.3.1 SELECT查询语句的基本结构(7), 检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。 SELECT S.S#,SNAME FROM S,SC,C,T WHERE S.S#SC.

展开阅读全文
相关资源
相关搜索

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

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