- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统原理(第三章) 四川大学计算机学院 张天庆 2005.9 第三章 关系数据库标准语言SQL SQL是Structured Query Language的缩写 最新的标准是SQL99,或称SQL3 包含了很多核心SQL以外的包 增加对递归查询、临时视图的支持 增加对触发器的支持 现在商品化DBMS一般都支持SQL92规范的超集/子集。 3.1 SQL概述 SQL介于关系代数与关系演算之间 3.1.1 SQL的特点 SQL集数据查询、数据操纵、数据定义和数据控制功能于一体。 其综合、强大、简洁使其称为国际标准。 综合统一 SQL集DDL、DML、DCL功能于一体。 SQL数据操作符的统一。(查询、插入、删除、修改都只有一种操作符。) 二. 高度非过程化 SQL进行数据操作,只要提出“What to do”,无需告诉系统“How to do” 充分体现关系系统的特点和优势 有利于提高数据的独立性 三. 面向集合的操作方式 关系运算“一次一集合”方式的体现。 四. 一种语法结构、两种使用方式 既是自含式语言,又是嵌入式语言。 五. 语言简捷,易学易用 SQL设计巧妙,核心功能只需9个动词。在语言上接近英语。 3.1.2 SQL语言的基本概念 SQL对象与三级模式结构的对应关系 外模式--视图、部分基本表 模式 --基本表 内模式--存储文件 基本表是本身独立存在的表,在SQL中一个关系就对应一个表。 一些DBMS中一个基本表对应一个存储文件,有的DBMS一个数据库中的多个基本表对应一个存储文件 一个表可以带若干索引,索引也存放在存储文件中 存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理文件结构是任意的。 视图是从基本表或其他视图中导出的表 它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。 用户可以用SQL语言对视图和基本表进行查询。在用户眼中,视图和基本表都是关系,而存储文件对用户是透明的。 3.2 数据定义 对基本表、视图、索引的定义、删除和修改(7种组合,不能修改视图和索引) 3.2.1 定义、删除和修改基本表 定义基本表一般格式CREATE TABLE 表名 (列名1数据类型[列级完整性约束条件] [,列名2数据类型[列级完整性约束条件]] ... [,表级完整性约束条件]); 例1:书p69给出了IBM DB2定义学生表的方法。 下面的例子一般为标准SQL。 CREATE TABLE student( sno char(5) PRIMARY KEY, sname varchar(20) UNIQUE, sgender char(1), sage int, sdept varchar(15) ); 略去course表,下面定义SC表 CREATE TABLE SC( sno char(5), cno char(5), grade int, PRIMARY KEY (sno,cno), FOREIGN KEY (sno) REFERENCES student, FOREIGN KEY (cno) REFERENCES course ); 约束更完整的形式: CREATE TABLE SC( sno char(5), cno char(5), grade int, CONSTRAINT PK_sno_cno PRIMARY KEY (sno,cno), CONSTRAINT FK_sno FOREIGN KEY (sno) REFERENCES student, CONSTRAINT FK_cno FOREIGN KEY (cno) REFERENCES course, CONSTRAINT CK_grade CHECK (grade=0 and grade =100) ); 上述例子可以看出SQL基本表定义的概貌。 应注意完整性约束的定义 主码:PRIMARY KEY关键字。 外码:FOREIGN KEY关键字。 用户定义:CHECK关键字。 二. 修改基本表 可增加新列,删除列上的完整性约束,修改列名及数据类型 但不能删除属性列! ALTER TABLE [ADD 新列名数据类型[完整性约束]] [DROP 完整性约束名] [MODIFY 列名数据类型]; 三. 删除基本表 DROP TABLE 表名; 删除基本表后,引用建立在此表上的视图可能出现问题。 3.2.2 建立和删除索引 作用:提高查询速度。 如从O(n)到O(log2n) 常需要建立索引的属性 常作为连接属性
文档评论(0)