[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3

上传人:我**** 文档编号:184561793 上传时间:2021-06-22 格式:PPTX 页数:44 大小:138.46KB
返回 下载 相关 举报
[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3_第1页
第1页 / 共44页
[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3_第2页
第2页 / 共44页
[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3_第3页
第3页 / 共44页
[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3_第4页
第4页 / 共44页
[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3》由会员分享,可在线阅读,更多相关《[精选]北京邮电大学软件工程研究生的课程-数据库设计开发-0-3(44页珍藏版)》请在金锄头文库上搜索。

1、1.3 SQL,自从20世纪80年代以来,SQL就是一个通用的、功能极强的关系数据库语言。现在,SQL语言正从关系形式(ANSI SQL-92标准)转向对象-关系形式(ANSI SQL-99标准,1999年颁布)。 SQL语言是1974年由Boyce和Chamberlin提出。1986年10月美国国家标准局(ANSl)批准了SQL作为关系数据库语言的美国标准。同年公布了SQL标准文本(简称SQL-86)。1987年6月国际标准化组织(ISO)也采纳了此标准。1989年,美国国家标准局(ANSI)采纳了新的规范SQL-89标准,取代SQL-86,同时SQL-89标准也被国际标准化组织(ISO)采

2、纳。1992年,ANSI/ISO颁布了SQL2版本,标准的名称为SQL-92。SQL-92分称几个顺序级别:从代表SQL-89最小扩展集的“Entry”到“Intermediate”和“Full”。完成于己于1999年的SQL-99具有更加高级的特征(包括对象-关系特性),亦称SQL3。,郭文明 2003.06.05,1.3 SQL,主要的几个数据库生产厂商并不可能完全遵守SQL-99(以及更老的SQL-92)。我们一般更加关注在产品中已经实现的SQL-99特征。 1.3.1 SQL特点 1.3.2数据定义 1.3.2.1 SQL模式的创建和删除 1.3.2.2 SQL提供的基本数据类型 1.

3、3.2.3 定义、删除与修改基本表 1.3.2.4 建立与删除索引 1.3.2.5 视图的创建和删除 1.3.3 数据查询 1.3.3.1 简单查询 1.3.3.2 子查询 1.3.3.3 UNION运算和FOR ALL条件,1.3.3.4 高级SQL语法 1.3.3.5 集合函数 1.3.3.6 行分组 1.3.4 数据更新 1.3.4.1 插入数据 1.3.4.2 修改数据 1.3.4.3 删除数据,郭文明 2003.06.05,1.3.1 SQL特点,1)综合统一 2)高度非过程化 3)面向集合的操作方式 4)以同一种语法结构提供两种使用方式 5)语言简捷,易学易用 和关系代数相比,就查

4、询能力而言,SQL并没有根本的改进,在关系代数查询方面的经验可以成为用SQL来实现查询的良好借鉴。在构造查询时SQL的select语句比关系代数要灵活.,郭文明 2003.06.05,1.3.2数据定义,SQL的数据定义功能包括对模式(Schema)、表(关系,Table)、视图(View)和索引(Index) 的创建、删除和修改操作。如下表所示。,郭文明 2003.06.05,1.3.2.1 SQL模式的创建和删除,在SQL-99中,模式是表、索引及其他数据库对象的集合。模式名通常是一个用户名。在Core SQL-99和当前大多数产品中,当用户的数据库帐户建立时,其模式在用户名之后给出,他们

5、不能再建立其他模式。SQL-99的扩展特性允许用户建立附加模式,一个SQL模式由模式名和模式拥有者的用户名或账号来确定。 SQL模式的创建可用CREATE语句实现,其句法如下: CREATE SCHEMA AUTHORIZATION 目前只有DB2 UDB允许用户建立附加模式。其它产品中模式用用户名替代。,郭文明 2003.06.05,1.3.2.1 SQL模式的创建和删除,在SQL中还有一个“目录”概念。目录是SQL环境中所有模式的集合。包含数据库中定义的对象的信息的表,由系统维护。ORACLE叫数据字典,DB2 UDB叫目录表,INFORMIX叫系统目录。目录表在建立数据库时建立,用户不能

6、更新,但DBA可以用select获取这些信息。 当一个SQL模式及其所属的基本表、视图等元素都不需要时,可以用DROP语句撤消这个SQL模式。DROP语句的句法如下: DROP SCHEMA CASCADE|RESTRICT,郭文明 2003.06.05,1.3.2.2 SQL提供的基本数据类型,郭文明 2003.06.05,1.3.2.3 定义、删除与修改基本表,建立数据库最重要的一步就是定义一些基本表。SQL语言使用CREATE TABLE语句定义基本表,一般格式如下: CREATE TABLE (列级完整性约束条件 ,列级完整性约束条件 ,); 例:CREATE TABLE Studen

7、t (Sno CHAR(5) PRIMARY KEY, Sname CHAR(8) NOT NULL, Sage SMALLINT CHECK(Sage BETWEEN 17 AND 22), Ssex CHAR(2) CHECK(Ssex IN(男,女), Sdept CHAR(20) DEFAULT(软件学院); 创建学生表:Sno为主键(非空唯一),Sname非空,Sage在17到20之间取值,Ssex只能取男或女,Sdept默认值为软件学院.,郭文明 2003.06.05,1.3.2.3 定义、删除与修改基本表,实际使用时要有用户ID和密码,进入交互式环境,才能完成数据库操作。 修改基

8、本表 ALTER TABLE ADD完整性约束 DROP MODIFY; 其中是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIPY子句用于修改原有的列定义,包括修改列名和数据类型。,郭文明 2003.06.05,1.3.2.3 定义、删除与修改基本表,删除基本表 DROP TABLE 基本表一旦删除,表中的数据、此表上建立的索引和视图都将自动被删除掉。因此执行删除基本表的操作一定要格外小心。 注意:有的系统,如Oracle,删除基本表后建立在此表上的视图定义仍然保留在数据字典中。但是,当用户引用时就报错。,郭文明 2003.06.

9、05,1.3.2.4建立与删除索引,索引的功能表现在以下3方面。 (1)使用索引可以明显地加快数据查询的速度 (2)使用索引可保证数据的唯一性 (3)使用索引可以加快连接速度 建立索引的原则 (1)索引的建立和维护由DBA和DBMS完成 (2)大表应当建索引,小表则不必建索引 (3)对于一个基本表,不要建立过多的索引 (4)根据查询要求建索引,郭文明 2003.06.05,1.3.2.4建立与删除索引,CREATE UNIQUE CLUSTER INDEX ON (,); 如果数据增加删改频繁,系统会花费许多时间来维护索引。这时,可以删除一些不必要的索引。 DROP INDEX ;,郭文明 2

10、003.06.05,1.3.2.5视图的创建和删除,视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图一经定义,就可以和基本表一样被查询、被删除,我们也可以在一个视图之上再定义新的视图,但对视图的更新(增加、删除、修改)操作则有一定的限制。 CREAT VIEW (列名,.) AS WITH CHECK OPTION; 其中子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。WITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查

11、询中的条件表达式) 。,郭文明 2003.06.05,1.3.2.5视图的创建和删除,DROP VIEW ; 视图删除后视图的定义将从数据字典中删除。但是由该视图导出的其他视图定义仍在数据字典中,不过该视图已失效。用户使用时会出错,要用DROP VIEW语句将它们一一删除。 DBMS执行CREATE VIEW语句的结果只把视图的定义存入数据字典,并不执行其中的SELECT。在关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能的有意义的转换成对基本表的更新。行列子集视图是可更新的。各个DBMS对视图的更新有自己的规定。,郭文明 2003.06.05,1.3.3 数据查询,数据查询

12、是数据库的核心操作。SQL语言的数据查询只有一条SELECT语句: SELECTALL|DISTINCT*|,. FROM, WHERE GROUP BY,HAVING ORDER BYASC|DESC,ASC|DESC ;,郭文明 2003.06.05,1.3.3 数据查询,Select语句的执行过程可以理解为: 首先,对FROM子句中的所有表做关系乘积 接着,删除不满足WHERE子句的行 根据GROUP BY子句对剩余的行进行分组 然后删除不满足HAVING子句的组 求出SELECT子句选择列表的表达式的值 若有关键词DISTINCT存在,则删除重复的行 Select中的标识符:一般的SQ

13、L标识符是大小写无关的。实际上SQL在解释以前会把它们转化为大写形式。一个标识符必须以一个字母打头,Entry SQL-92和Core SQL-99将一个标识符字节数限制在18个以内。,郭文明 2003.06.05,1.3.3 数据查询,表达式可以是数值表达式、字符串表达式和日期表达式等。 数值表达式由常数、表属性、算术运算符、算术函数所组成。 字符串表达式由常数、表属性、字符串运算符、字符串函数所组成。 日期表达式由常数、表属性、日期运算符、日期函数所组成 WHERE中使用谓词来表示条件。一般情况谓词运算结果为TRUE或FALSE,但如果遇到空值时,可能为UNKNOWN。 SQL查询的一个争

14、议点即:对于同一个查询会存在众多不同的构造方法。,郭文明 2003.06.05,1.3.3 ORACLE、INFORMIX、DB2 UDB 中的一些数学函数,郭文明 2003.06.05,1.3.3一些标准的和特定产品的串处理函数,郭文明 2003.06.05,1.3.3 SQL中的标准谓词,郭文明 2003.06.05,1.3.3.1 简单查询,例:检索定货记录中所有pid值: select pid from orders -结果中有重复的pid select distinct pid from orders -结果中pid唯一 select缺省为all,distinct没有出现时允许重复行

15、,缺省情况不遵守行唯一性规则。 例:在orders表上生成每笔业务的利润profit(收入减去60%的成本、顾客的折扣以及代理商的酬金): select ordno,x.cid,x.aid,x.pid,.40*(x.qty*p.price)- .01*(c.discnt+a.percent)*(x.qty*p.price) as profit from orders as x,customer as c,agents as a,products as p where c.cid=x.cid and a.aid=x.aid and p.pid=x.pid;,乘积,投影,选择,郭文明 2003.0

16、6.05,1.3.3.1 简单查询,注:1)SQL-99规定FROM子句中执行连接运算,但大多数产品通过笛卡尔积运算并且在WHERE子句中包含表示参与连接的列值相等的条件来模拟连接运算,具体实现方法(执行计划,查询优化)各不相同。 2)FROM中AS被省略,SQL仍能识别表别名。ORACLE和INFORMIX使用别名或表别名,DB2 UDB使用相关名。 3)列表达式的列名可以通过AS指明,ORACLE中称列别名,INFORMIX中称显示标签,DB2 UDB中简单称为列名。如果没有AS,ORACLE中将完整表达式文本作为列名。,郭文明 2003.06.05,1.3.3.2 子查询,每个Select查询都会生成一张表,但我们不能像关系代数表达式那样任意将一个Select语句嵌入另一个Select语句。这是SQL与关系代数的一个很重要的不同点。例如:from子句中不能出现select(SQL-99标准已去掉该限制,但数据库产品中并未完全实现),where子句中显然可以出现select。 出现在另一个select语句之内的select语句形式称为子查询。一个子查询能以许多种方式出现在另一个se

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

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

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