1 / 346

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

第三章 关系数据库标准语言 SQL. 3.1 SQL 概述 3.2 数据定义 3.3 查询 3.4 数据更新 3.5 视图 3.6 数据控制 3.7 程序接口式 SQL. 3.1 SQL 概述. 1974 年由 Boyce 和 Chamberlin 提出的。 1975 年至 1979 年 IBM 公司 san Jose Research Laboratory 研制的关系数据库管理系统原形系统 System R 实现了这种语言。. 3.1 SQL 概述.

hiero
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章关系数据库标准语言SQL 3.1 SQL概述 3.2 数据定义 3.3 查询 3.4 数据更新 3.5 视图 3.6 数据控制 3.7 程序接口式SQL

  2. 3.1 SQL概述 • 1974年由Boyce和Chamberlin提出的。 • 1975年至1979年IBM公司san Jose Research Laboratory 研制的关系数据库管理系统原形系统System R 实现了这种语言。

  3. 3.1 SQL概述 • 结构化查询语言(structured query language,简称SQL)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制4个方面,是一个通用、功能极强的关系数据库语言。目前已成为关系数据库的标准语言 • 大多数数据库均用SQL作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作有了共同的基础。

  4. 3.1 SQL概述 • 第一个SQL标准是1986年10月由美国国家标准局(American National Standard institute,简称ANSI)公布的,所以也称该标准为SQL-----86。 • 1989年国际标准化组织(International Organization for Standardization,简称ISO)标准(SQL-89) • 1992年又公布了SQL-92标准。 • 目前 新的SQL标准:SQL3

  5. 3.1 SQL概述

  6. 3.1 SQL概述 3.1.1 SQL的特点 3.1.2 SQL语言的基本概念

  7. 3.1.1 SQL的特点 • 1. 综合统一 • 非关系模型的数据语言一般都分为: • 模式数据定义语言(schemadata definition language:DDL):用于定义模式、外模式、内模式 • 数据存储有关的描述语言(data strorage description language,简称DSDL):进行数据的存取 • 数据操纵语言(data manipulation language,简称DML)进行数据的处置 • SQL语言集DDL、 DSDL、 DML于一体,风格一致

  8. 3.1.1 SQL的特点 • 2. 高度非过程化 • 只提“做什么”,不必指明“怎么做”——用户无需了解存取路径及物理地址——减轻用户负担,提高效率。 • 3. 面向集合的操作方式 • 不仅查找结果可以是集合,插入,删除, 更新也可以是元组,比非关系DBMS优越

  9. 3.1.1 SQL的特点 • 4. 以同一种语法结构提供两种使用方法 • 自含式:联机交互使用 • 程序接口:与高级语言联合 • 5. 语言简洁,易学易用

  10. 3.1.1 SQL的特点

  11. 3.1 SQL概述 3.1.1 SQL的特点 3.1.2 SQL语言的基本概念

  12. 3.1.2 SQL语言的基本概念 • SQL语言支持关系数据库三级模式结构 • 其中外模式对于视图(view)和部分基本表(base table),模式对应于基本表,内模式对应用存储文件。

  13. SQL 视图1 视图2 外模式 基本表1 基本表2 基本表3 基本表4 模式 存储文件1 存储文件2 存储模式 3.1.2 SQL语言的基本概念

  14. 3.1.2 SQL语言的基本概念 1.基本表是本身独立存在的表,即实际存在DB中的表,而不是从其它表导出的。 特性: • 在关系数据库中一个关系对应一个表 • 基本表可以有若干个索引 • 存储特点: • 一个基本表可以跨一个或若干个存储文件 • 一个存储文件可以存储一个或多个基本表 • 一个存储文件与外存储器上的一个物理文件相对应 • 存储文件和相关索引组成了关系的内模式(存储模式) • 基本表的集合组成关系模型,即全局概念模型

  15. 3.1.2 SQL语言的基本概念 2.视图(View):从一个或几个基本表或其它视图导出来的表。 特性: • 视图本身并不独立存储数据,系统只保存视图的定义 • 从用户的观点出发,基本表和视图都是关系,用SQL一样访问,只是对视图的修改受到一定限制  • 视图可以当作用户按照应用需要定义的外模式,即用户的局部数据—逻辑结构。

  16. 第三章关系数据库标准语言SQL 3.1 SQL概述 3.2 数据定义 3.3 查询 3.4 数据更新 3.5 视图 3.6 数据控制 3.7程序接口式SQL

  17. 3.2 数据定义 • 关系数据库的基本对象是表、视图和索引。 • SQL的数据定义功能包括定义表、定义视图和定义索引。

  18. 3.2 数据定义 3.2.1 定义、删除与修改基本表 3.2.2 建立与删除索引 3.2.3 建立FOREIGN KEY

  19. 3.2.1 定义、删除与修改基本表

  20. 3.2.1 定义、删除与修改基本表 1.定义基本表 CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] ); • <表名>:所要定义的基本表的名字 • <列名>:组成该表的各个属性(列) • <列级完整性约束条件>:涉及相应属性列的完整性约束条件 • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

  21. 3.2.1 定义、删除与修改基本表 [例1] 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15));

  22. 3.2.1 定义、删除与修改基本表 • 常用完整性约束 • 主码约束: PRIMARY KEY • 唯一性约束:UNIQUE • 非空值约束:NOT NULL • 参照完整性约束 PRIMARY KEY与UNIQUE的区别?

  23. 3.2.1 定义、删除与修改基本表 • [例2] 建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。 • CREATE TABLE SC( • Sno CHAR(5) , • Cno CHAR(3) , • Grade int, • Primary key (Sno, Cno));

  24. 3.2.1 定义、删除与修改基本表

  25. 标识符列 • 标识符列是唯一标识表中每一行数据的符号。 • 在Microsoft SQL Server 2008系统中,可以创建两种类型的标识符列 • IDENTITY列 • ROWGUIDCOL列

  26. IDENTITY • 使用IDENTITY属性的列是IDENTITY列,每一个表中最多只能有一个IDENTITY列。 • 定义IDENTITY属性时需要指定两个值:种子值和增量值。 • 表中第一行的IDENTITY列的值是种子值,其他行IDENTITY列的值是在前一行的值的基础上增加一个增量值得到的。 • IDENTITY属性的语法形式如下所示: • IDENTITY (seed, increment)

  27. 创建具有IDENTITY属性的表

  28. ROWGUIDCOL • ROWGUIDCOL列是全局唯一标识符列。 • 每一个表中最多允许创建一个ROWGUIDCOL列。 • 从理论上来看,分布在Internet上的两个不同的计算机中的ROWGUIDCOL列的值出现相同的现象的概率是微乎其微的。 • 在创建表时,可以使用UNIQUEIDENTIFIER数据类型定义ROWGUIDCOL列。

  29. 创建具有ROWGUIDCOL列的表

  30. 查看表的信息 • 表创建之后,可以使用许多函数、存储过程查看有关表的各种信息。 • COLUMNPROPERTY函数用于查看有关表中的列的信息,这些信息包括是否为空、是否是计算得到的列、是否具有IDENTITY属性、是否ROWGUIDCOL列等。 • sp_depends存储过程用于查看指定表的依赖对象,这些依赖对象包括依赖于表的视图、存储过程等。 • sp_help存储过程用于查看有关表结构的信息

  31. 3.2.1 定义、删除与修改基本表 • 不同数据库系统支持的数据类型不同。 • 如IBM DB2支持的数据类型(常用): CHAR(n) 字符 INTEGER 全字长整数 SMALLINT 半字长整数 DECIMAL(x,y)十进制数 FLOAT(x,y)双字长浮点数 Date 日期 作业:写出SQL Server支持的5种数据类型

  32. 3.2.1 定义、删除与修改基本表 2.修改基本表 • 随着应用环境和用户需求的变化,有时需要修改已建立好的基本表,包括增加新列、增加新的完整性约束条件、修改原有的列定义或删除已有的完整性约束条件等。

  33. 3.2.1 定义、删除与修改基本表 ALTER TABLE <表名> [ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ MODIFY <列名> <数据类型> ]; • <表名>:要修改的基本表 • ADD子句:增加新列和新的完整性约束条件 • DROP子句:删除指定的完整性约束条件 • MODIFY子句:用于修改列名和数据类型

  34. 3.2.1 定义、删除与修改基本表 [例2] 向Student表增加“入学时间”列,其数据类型为日期型。 ALTER TABLE Student ADD Scome DATE; • 不论基本表中原来是否已有数据,新增加的列一律为空值。

  35. 增加或删除列 • 当用户向表中增加一个新列时,Microsoft SQL Server为表中该列在已有数据的每一行中的相应位置插入一个数据值。 • 因此,向表中增加一个新列时,最好为该列定义一个默认约束,使该列有一个默认值。如果该新列没有默认约束,并且表中已经有了其他数据,那么必须指定该新列允许空值,否则,系统将产生一个错误信息。

  36. 在表中新增列

  37. 新增列不允许空值时产生的错误消息

  38. [例3] 将年龄的数据类型改为半字长整数。 ALTER TABLE Student MODIFY Sage SMALLINT; • 注:修改原有的列定义有可能会破坏已有数据 [例4] 删除学生姓名必须取唯一值的约束。 ALTER TABLE Student DROP UNIQUE(Sname);

  39. 更改空表中的列的数据类型

  40. 更改非空表中的列的数据类型

  41. 3.2.1 定义、删除与修改基本表 • 删除属性列 直接/间接删除 • 把表中要保留的列及其内容复制到一个新表中 • 删除原表 • 再将新表重命名为原表名 直接删除属性列:(新) 例:ALTER TABLE Student Drop Scome;

  42. 3.2.1 定义、删除与修改基本表 3.删除基本表 DROP TABLE <表名>; 基本表删除 数据、表上的索引都删除 表上的视图往往仍然保留,但 无法引用 删除基本表时,系统会从数据字典中删去有关该 基本表及其索引的描述 (标准中没有,认为表建立后就永久存在)

  43. 3.2.1 定义、删除与修改基本表 [例5] 删除Student表 DROP TABLEStudent ;

  44. 3.2 数据定义 3.2.1 定义、删除与修改基本表 3.2.2 建立与删除索引 3.2.3 建立FOREIGN KEY

  45. 3.2.2 建立与删除索引 • 创建索引可以大大提高系统的性能 • 创建唯一性索引,可以保证每一行数据的唯一性 • 可以大大加快数据的检索速度 • 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义 • 在使用ORDER BY和GROUP BY子句进行数据检索时,可以显著减少查询中分组和排序的时间 • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

  46. 3.2.2 建立与删除索引 • 在Microsoft SQL Server系统中,可管理的最小空间是页。一个页是8KB字节的物理空间。插入数据的时候,数据就按照插入的时间顺序被放置在数据页上。 • 一般地,放置数据的顺序与数据本身的逻辑关系之间没有任何联系。 • 从数据之间的逻辑关系方面来讲,数据是乱七八糟堆放在一起的。 • 数据的这种堆放方式称为堆。当一个数据页上的数据堆放满之后,数据就得堆放在另外一个数据页上,称为页分解。

  47. 3.2.2 建立与删除索引 堆结构示意图

  48. 3.2.2 建立与删除索引 • 索引机制 • 索引表 • 检索机制 • 维护机制 • 索引不利的一面 • 创建索引和维护索引要耗费时间 • 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引,需要的空间就会更大 • 对表中的数据进行增加、删除和修改时,索引也要动态地维护,这样就降低了数据的维护速度。

  49. 3.2.2 建立与删除索引 • 两种基本的索引类型: • 聚集索引 • 非聚集索引 • 除此之外,还有唯一性索引、包含性列索引、索引视图、全文索引、XML索引等。 • 堆 • 是不含聚集索引的表,表中的数据没有任何的顺序

  50. 3.2.2 建立与删除索引 • 聚集索引(簇索引) • 一种数据表的物理顺序与索引顺序相同的索引 • 每个表只允许建立一个簇索引,由于在建立簇索引时要改变表中数据行的物理顺序,所以应在其它非簇索引建立之前建立簇索引,以免引起SQL Server重新构造非簇索引

More Related