数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA

上传人:E**** 文档编号:89471618 上传时间:2019-05-25 格式:PPT 页数:98 大小:381KB
返回 下载 相关 举报
数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA_第1页
第1页 / 共98页
数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA_第2页
第2页 / 共98页
数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA_第3页
第3页 / 共98页
数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA_第4页
第4页 / 共98页
数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA》由会员分享,可在线阅读,更多相关《数据库原理及应用-孙浩军 第3章关系数据库SQL语言PartA(98页珍藏版)》请在金锄头文库上搜索。

1、数据库原理及应用 The Principle of Database and applications 第三章 关系数据库SQL语言 Part A,第三章 关系数据库SQL语言,3-1 SQL语言概况 3-2 SQL的数据定义 3-3 SQL的数据查询 3-4 SQL的数据更新 3-5 视图 3-6 SQL的数据控制功能 3-7 嵌入式SQL 3-8 存储过程,3-1 SQL语言概况,3-1-1 SQL发展 3-1-2 SQL语言的功能 3-1-3 SQL语言特点 3-1-4 SQL数据库的体系结构,3-1-1 SQL发展,SQL是结构化查询语言(Structured Query Langua

2、ge)的简称 l974年由Boyce和Chamberlin提出的,并在IBM公司San Jose研究实验室所研制的关系数据库管理系统System R上实现了这种语言 SQL语言在1986年被美国国家标准协会(American National Standard Institute,ANSI)批准为关系数据库语言的国家标准,1987年又被国际标准化组织(International Standard Organization,ISO)批准为国际标准,此标准也于1993年被我国批准为中国国家标准。 存在不同的数据库管理系统厂商开发的不同类型的SQL,这些不同类型的SQL语言也称为SQL方言。,3-1

3、-2 SQL语言的功能,三类功能 数据定义功能 SQL的数据定义功能通过DDL(Data Definition Language,数据定义语言)实现,它用来定义关系数据库的模式、外模式和内模式,以实现对基本表、视图以及索引文件的定义、修改和删除等操作。 数据操纵功能 SQL的数据操纵功能通过DML(Data Manipulation Language,数据操纵语言)实现。DML包括数据查询和数据更新两种数据操作语句。其中数据查询指对数据库中的数据查询、统计、分组、排序等操作,数据更新指数据的插入、修改、删除等数据维护操作。 数据控制功能 SQL的数据控制功能通过DCL(Data Control

4、 Language,数据控制语言)实现。DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。,3-1-3 SQL的特点,1. 综合统一 2. 高度非过程化 3. 面向集合的操作方式 4. 语言简洁,易学易用,1功能一体化,SQL语言提供了完备的数据定义、数据操纵及数据控制功能,它将非关系型数据库系统的DDL、DML、DCL集于一体,为数据库应用系统的开发提供了良好的环境。 利用SQL可以实现数据库生命周期中的各种活动,包括对数据库的建立及重构,对表模式的定义及表的模式演变,对数据的加载、查询、修改、删除等操作,以及对数据库的维护与安全性控制等。

5、由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个DBMS转到另一个。所有用SQL编写的程序都是可以移植的。,2非过程化的语言,SQL是一种高度非过程化的语言。在使用这种语言进行数据操作时,用户只需指出“做什么(what)”就可以了,而无须指明“怎么做(How)”。 而非关系模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径,简化了应用的开发,也有助于提高数据的独立性。 SQL不要求用户指定对数据的存取方法。所有SQL语句使用查询优化器,它是RDBMS(关系数据库管理系统)的一部分,由它决定对指定数据存取的最快速度的手段。,3。面向集合的操作方

6、式,SQL却是一种集合级(Set Level)的语言,其处理对象是元组的集合。一条查询语句返回的结果是符合查询条件的元组集合。类似地,插入、删除、修改操作也可以同时对元组的集合进行操作。而非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。例如查询操作,用户必须一条一条地把满足条件的记录找出来,通常要说明具体的处理过程。,4. 语言简捷,易学易用,3-1-4 SQL数据库的体系结构,SQL语言支持关系数据库的三级模式结构。 外模式对应于视图和部分基本表, 模式对应于基本表, 内模式对应于存储文件。 SQL的操作对象既可以是基本表,也可以是视图。从用户的观点看,基本表和视图一样,都是关

7、系,而存储文件对用户是透明的。,SQL支持三级模式结构,3-2 SQL的数据定义,通过SQL语言的数据定义功能,可以完成基本表、视图、索引的定义。视图是基于基本表的虚表,索引是依附于基本表的,因此SQL通常不提供修改视图定义和修改索引定义的操作。用户如果想修改视图定义或索引定义,只能先将它们删除掉,然后再重建。 3-2-1 定义基本表 3-2-2 基本表的修改与删除 3-2-3 索引的建立和删除,3-2-1 定义基本表,数据类型,定义基本表,定义语句格式,CREATE TABLE ( , , ); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约束条件 :涉及一

8、个或多个属性列的完整性约束条件,例题,例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) CONSTRAINT U1 UNIQUE, Ssex CHAR(1) CONSTRAINT C1 CHECK(Ssex IN(M,F), Sage INT, Sdept CHAR(15);,定义基本表(续),常用完整性约束 主码约束: PRIMAR

9、Y KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 外键约束:POREIGN KEY 检查约束:CHECK 见p39-41 例3.2-例3.6,例题 (续),例2 建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。 CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade int, Primary key (Sno, Cno);,例题 (续),CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade int, Constrain

10、t PK_SC Primary key (Sno, Cno), Constraint FK_Sno Foreign key (Sno) References Student(Sno), Constraint FK_Cno Foreign key (Cno) References Course(Cno);,3-2-2 基本表的修改与删除,1. 修改基本表 ALTER TABLE ADD 完整性约束 DROP ALTER COLUMN ; :要修改的基本表 ADD子句:增加新列和新的完整性约束条件 DROP子句:删除指定的完整性约束条件 ALTER COLUMN子句:用于修改列名和数据类型,例题,

11、增加列或完整性约束 通过ADD选项向已存在的基本表中添加新列或完整性约束条件。 【例3.7】向学生表Student中添加一个新列NativePlace(籍贯)。 ALTER TABLE Student ADD NativePlace CHAR(40); 【例3.8】向学生表Student中添加一个列StudentNO为主键的主键约束。 ALTER TABLE Student ADD CONSTRAINT PK_Student PRIMARY KEY(StudentNO); 也可以省去约束名 ALTER TABLE Student ADD PRIMARY KEY(StudentNO);,例题,删

12、除列或完整性约束 通过DROP选项可以删除存在的基本表中的列或已定义完整性约束条件。 【例3.9】删除例3.7中新添加的列。 ALTER TABLE Student DROP COLUMN NativePlace; 【例3.10】删除例3.8中新添加的约束。 ALTER TABLE Student DROP PK_Student; 修改列定义 通过ALTER COLUMN选项可以修改基本表中的列定义,通常情况下是增加列的宽度。注意不能修改列名,如果已经有数据的话,减小列的宽度可能会破坏原有的数据。 【例3.11】把基本表Student的列Dept的列宽增加到30个字符。 ALTER TABLE

13、 Student ALTER COLUMN Dept CHAR(30);,2基本表的删除,当数据库某个基本表不再使用时,可以将其删除。当一个基本表被删除后,该表中的所有数据连同在该表上所建立的索引都被删除。由该表导出的视图的定义并不被删除,但却无法使用。 删除基本表的格式为: DROP TABLE ; 【例3.12】删除学生表Student。 DROP TABLE Student;,3-2-3 索引的建立与删除,建立索引是加快查询速度的有效手段 建立索引 DBA或表的属主(即建立表的人)根据需要建立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS自

14、动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引,1、建立索引,语句格式 CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引,例题,【例3.13】为学生表Student在列Dept上建立聚簇索引,索引名为Dept_INDEX。 CREATE CLUSTER INDEX Dept_INDEX ON Studen

15、t(Dept); 【例3.14】为学生表Student和选课表SC建立索引。其中学生表Student按学号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX StudentNO_INDEX ON Student(StudentNO); CREATE UNIQUE INDEX SCNO_INDEX ON SC(StudentNO ASC,CourseNO DESC);,建立索引 (续),对于索引要注意以下几点: 在改变表中的数据时,相关的索引自动更新。 当使用已建立索引的列进行查询时,自动使用索引。 索引可以提高查询效率,但数目过多会影响数据的更新效

16、率。对于更新频繁的表建立索引要慎重。,2、删除索引,DROP INDEX ; 删除索引时,系统会从数据字典中删去有关该索引的描述。 【例3.15】删除在学生表Student上所建立的索引StudentNO_INDEX DROP INDEX StudentNO_INDEX; 删除索引时,系统会同时从数据字典中删除有关该索引的描述,3-3 SQL的数据查询,SELECT语句的一般格式 3-3-1 单表查询 3-3-2 连接查询 3-3-3 嵌套查询 3-3-4 集合查询,SELECT语句的一般格式,语句格式 SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,SELECT语句的一般格式,SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或视图) WHER

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

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

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