关系数据库语言SQL(ch3-1)课件

上传人:我*** 文档编号:145326278 上传时间:2020-09-19 格式:PPT 页数:80 大小:459.50KB
返回 下载 相关 举报
关系数据库语言SQL(ch3-1)课件_第1页
第1页 / 共80页
关系数据库语言SQL(ch3-1)课件_第2页
第2页 / 共80页
关系数据库语言SQL(ch3-1)课件_第3页
第3页 / 共80页
关系数据库语言SQL(ch3-1)课件_第4页
第4页 / 共80页
关系数据库语言SQL(ch3-1)课件_第5页
第5页 / 共80页
点击查看更多>>
资源描述

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

1、数据库管理系统,第3章 关系数据库语言SQL,3.1 SQL的体系结构 3.2 SQL的数据定义 3.3 SQL的数据查询 3.4 SQL的数据更新 3.5 视图 3.6 嵌入式SQL 3.7 存储过程与SQL/PSM,3.1 SQL的体系结构,3.1.1 SQL的产生与发展 3.1.2 SQL数据库的体系结构 3.1.3 SQL的组成 3.1.4 SQL的特点,SQL的产生与发展,1970年,美国IBM研究中心的E.F.Codd连续发表多篇论文,提出关系模型. 1972年SQUARE (Specifying Queries As Relational Expression )语言. 1974

2、年,SEQUEL (Structured English QUEry Language )结构式查询语言,SQL的发音仍为“sequel”. 现在SQL已经成为一个标准 .,SQL的产生与发展,SQL的特点: 综合统一 高度非过程化 面向集合的操作方式 同一种语法结构提供两种使用方法 语言简洁,易学易用,表3.1 SQL语言的动词,5. 语言简捷,易学易用,SQL数据库的体系结构,SQL数据库的体系结构,SQL的组成,核心SQL主要有四个部分: (1) 数据定义语言,即DDL. 用于定义SQL模式、基本表、视图、索引等结构. (2) 数据操纵语言,即DML. 数据操纵分成数据查询和数据更新两类

3、. (3) 嵌入式SQL语言的使用规定. 涉及到SQL语句嵌入到宿主语言程序中的规则. (4) 数据控制语言,即DCL. 包括对基本表和视图的授权、完整性规则的描述、事务控制等内容.,表3.2 SQL的数据定义语句,3.2 SQL的数据定义,SQL模式的创建和撤销,SQL模式的创建可用CREATE SCHEMA语句定义,基本句法如下: CREATE SCHEMA模式名AUTHORIZATION用户名 DROP语句的句法如下: DROP SCHEMA模式名CASCADERESTRICT 其方式有两种:CASCADE (级联式)方式. RESTRICT (约束式)方式.,基本数据类型,SQL提供的

4、主要数据类型( “域类型”)有: (1)数值型: INTEGER, SMALLINT, REAL, FLOAT(n), DOUBLE PRECISION, NUMERIC(p,d) (2)字符串型: CHAR(n), VARCHAR(n) (3)位串型 : BIT(n),BIT VARYING (n), (4)时间型: DATE, TIME,基本表的创建,CREATE TABLE ( ); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约 束条件 :涉及一个或多个属性列的完 整性约束条件,例 题,例: 建立一个“学生”表Student,它由学号Sno、 姓名Sn

5、ame、性别Ssex、年龄Sage、所在系Sdept五个属性组成.其中学号不能为空,值是唯一的,并且姓名取值也唯一.,CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15);,定义基本表(续),常用完整性约束 主码约束: PRIMARY KEY 唯一性约束: UNIQUE 非空值约束: NOT NULL 参照完整性约束:FOREIGN KEY * REFERENCES (*),例题 (续),例: 建立一个“学生选课”表SC,

6、它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码. CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade INT, Primary key (Sno, Cno) );,基本表的修改,增加新的列: ALTER TABLE ADD 删除原有的列: ALTER TABLE DROP CASCADERESTRICT CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除. RESTRICT方式表示:在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作.,ALTER

7、 TABLE MODIFY 例:在基本表S中增加一个地址(ADDRESS)列: ALTER TABLE S ADD ADDRESS VARCHAR(30) 注意: 新增加的列不能定义为“NOT NULL”. 因为原有元组在新增加的列上的值都被定义为空值(NULL).,修改原有列的类型、宽度用:,基本表的修改(例),直接/间接删除 在基本表S中删除年龄(AGE)列,并且把引用该列的所有视图和约束也一起删除,可用下列语句: ALTER TABLE S DROP AGE CASCADE; 在基本表S中S# 的长度修改为6: ALTER TABLE S MODIFY S# CHAR(6);,基本表的撤

8、销,基本表的撤销 撤销语句的句法如下: DROP TABLE CASCADERESTRICT 此处的CASCADE、RESTRICT的语义同前面句法中的语义一样.,注:基本表删除后,数据、表上的索引都删除; 但表上的视图往往仍然保留,但无法引用.,例 题,例:删除Student表.,DROP TABLEStudent ;,例:撤销基本表S,但只有在没有视图或约束引用基本表S中的列时才能撤销,否则拒绝撤销.,DROP TABLE S RESTRICT;,建立与删除索引,建立索引是加快查询速度的有效手段 建立索引 DBA或表的属主(即建立表的人)根据需要建立 有些DBMS自动建立以下列上的索引 P

9、RIMARY KEY UNIQUE 维护索引 DBMS自动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引,建立索引,语句格式: CREATE UNIQUE INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC. (缺省值:ASC) UNIQUE表明此索引的每一个索引值只对应唯一的数据记录,例题,例:为学生-课程数据库中的Student,Course,SC 三个表建立索引. 其中Student表按学号升序建 唯一索引,Course表按课程号升序建唯一索引 SC表按学号升

10、序和课程号降序建唯一索引. CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,建立索引 (续),唯一值索引 对于已含重复值的属性列不能建UNIQUE索引 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值. 这相当于增加了一个UNIQUE约束.,删除索引,DROP INDEX ; 删除索引时,系统会从数据字典中删去有关该索引的描述.,

11、DROP INDEX Stusname,例: 删除Student表的Stusname索引.,3.3 SQL的数据查询,3.3.1 SELECT查询语句 3.3.2 SELECT语句完整的句法 3.3.3 数据查询中的限制和规定 3.3.4 条件表达式中的比较操作 3.3.5 嵌套查询的改进写法 3.3.6 基本表的连接操作,SELECT查询语句,SELECTFROMWHERE句型:,这里 为关系,F是公式, 为属性.,相应的SQL语句: SELECT A1,An FROM R1,Rm WHERE F,SELECT语句完整的句法,语句格式: SELECT ALL|DISTINCT , FROM

12、, WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,语句说明,SELECT子句:指定要显示的属性列. FROM子句: 指定查询对象(基本表或视图). WHERE子句:指定查询条件. GROUP BY子句:对查询结果按指定列的值分组,该属 性列值相等的元组为一个组. HAVING短语:筛选出只满足指定条件的组. ORDER BY子句:对查询结果表按指定列值的升序或降序 排序.,SELECT语句完整的句法,整个语句的执行过程如下: 读取FROM子句中基本表、视图的数据,执行笛卡尔积操作. 选取满足WHERE子句中的条件表达式的元组. 按GROUP子句中指定列的值

13、分组,同时提取满足HAVING子句中组条件表达式的那些组. 按SELECT子句中给出的列名或列表达式. ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列.,示例数据库,学生-课程数据库 Student(Sno,Sname,Ssex,Sage,Sdept) Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade),单表查询 连接查询 嵌套查询 集合查询,单表查询,查询仅涉及一个表,是一种最简单的查询操作 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用集函数 五、对查询结果分组,查询指定列,例1

14、 查询全体学生的学号与姓名. SELECT Sno,Sname FROM Student; 例2 查询全体学生的姓名、学号、所在系. SELECT Sname,Sno,Sdept FROM Student;,查询全部列,例3 查询全体学生的详细记录. SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student;,查询经过计算的值,SELECT子句的为表达式 算术表达式 字符串常量 (注:要加单引号) 函数 列别名等,查询经过计算的值,例4 查全体学生的姓名及其出生年份. SELECT Sname,2009-Sag

15、e FROM Student;,输出结果: Sname 2009-Sage - - 李勇 1976 刘晨 1977 王名 1978 张立 1978,查询经过计算的值,例5 查询全体学生的姓名、出生年份和所有 系,要求用小写字母表示所有系名. SELECT Sname, Year of Birth: , 2011-Sage , LOWER(Sdept) FROM Student;,例题(续),输出结果: Sname Year of Birth: 2011-Sage LOWER(Sdept) - - - - 李勇 Year of Birth: 1976 cs 刘晨 Year of Birth: 1977 is 王名 Year of Birth: 1978 ma 张立 Year of Birth: 1977 is,例5 使用列别名改变查询结果的列标题,SELECT Sname NAME, Year of Birth: BIRTH, 2011-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student;,输出结果: NAME BIRTH BIRTHDAY DEPARTMENT - - - -

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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