关系数据库标准语言-SQL.ppt
《关系数据库标准语言-SQL.ppt》由会员分享,可在线阅读,更多相关《关系数据库标准语言-SQL.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统原理数据库系统原理韶关学院计算机科学与技术系第第5 5章章 关系数据库标准语言关系数据库标准语言SQLSQL5.1SQL概述及特点概述及特点5.2数据定义语句数据定义语句 5.3数据查询语句数据查询语句5.4数据更新语句数据更新语句5.5嵌入式嵌入式SQL5.6数据控制机制和语句数据控制机制和语句5.1 SQL5.1 SQL概述及特点概述及特点1.SQL1.SQL的主要功能的主要功能(1)(1)数据定义功能数据定义功能 定定义关义关系系数数据据库库的模式、外模式和的模式、外模式和内内模式,以模式,以实现实现对对基本表、基本表、视图视图以及索引文件的定以及索引文件的定义义、修改和、修改
2、和删删除等操除等操作。作。(2)(2)数据操纵功能数据操纵功能 包括包括数数据据查询查询和和数数据更新据更新两种数两种数据操作据操作语语句:句:数数据据查询查询指指对数对数据据库库中的中的数数据据查询查询、统计统计、分、分组组、排序操作;、排序操作;数数据更新指据更新指数数据的据的插插入、入、删删除、修改等除、修改等数数据据维护维护操作。操作。(3)(3)数据控制功能数据控制功能 通通过对数过对数据据库库用用户户的授的授权权和收和收权权命令命令来实现来实现有有关数关数据的存取控制,以保据的存取控制,以保证数证数据据库库的安全性。的安全性。2.SQL2.SQL的特点的特点 (1)SQL(1)SQ
3、L具有自含式和嵌入式两种形式。具有自含式和嵌入式两种形式。(2)SQL(2)SQL具有语言简洁、易学易用的特点。具有语言简洁、易学易用的特点。(3)SQL(3)SQL支持三级模式结构。支持三级模式结构。全体基本表构成了数据库的模式。全体基本表构成了数据库的模式。视图和部分基本表构成了数据库的外模式。视图和部分基本表构成了数据库的外模式。数据库的存储文件和它们的索引文件构成了关系数据数据库的存储文件和它们的索引文件构成了关系数据库的内模式。库的内模式。5.2 5.2 数据定义语句数据定义语句5.2.1 5.2.1 基本表的定义和维护基本表的定义和维护1.1.定义基本表定义基本表定义基本表语句的一
4、般格式为:定义基本表语句的一般格式为:CREATE TABLE CREATE TABLE 库名库名 表名表名(列名数据类型列名数据类型 列级完整性约束条件列级完整性约束条件 ,列名数据类型列名数据类型 列级完整性约束条件列级完整性约束条件 ,nn ,表级完整性约束条件,表级完整性约束条件 ,n)n);类型表示类型表示类型说明类型说明数值型数值型数据数据SMALLINT半字长二进制整数。半字长二进制整数。15bits数据数据INTEGER或或INT全字长(四字长)整数。全字长(四字长)整数。31bits数据数据DECIMAL(p,q)十进制数,共十进制数,共p位,其中小数点后位,其中小数点后q位
5、。位。0qp,q=0时可省略不写时可省略不写FLOAT双字长浮点数双字长浮点数字符型字符型数据数据CHARTER(n)或或CHAR(n)长度为长度为n的定长字符串的定长字符串VARCHAR(n)最大长度为最大长度为n的变长字符串的变长字符串特殊数据类型特殊数据类型GRAPHIC(n)长度为长度为n的定长图形字符串的定长图形字符串VARGRAPHIC(n)最大长度为最大长度为n的变长图形字符串的变长图形字符串日期时日期时间型间型DATE日期型,格式为日期型,格式为YYYY-MM-DDTIME时间型,格式为时间型,格式为HH.MM.SSTIMESTAMP日期加时间日期加时间(1)SQL(1)SQL
6、支持的数据类型支持的数据类型(2)(2)列级完整性的约束条件列级完整性的约束条件针对属针对属性性值设值设置的限制置的限制条条件。件。1)NOT NULL1)NOT NULL或或NULLNULL约束。约束。NOT NULLNOT NULL约束不允许字段值为空,约束不允许字段值为空,而而NULLNULL约束允许字段值为空。约束允许字段值为空。2)UNIQUE2)UNIQUE约束。惟一性约束,即不允许列中出现重复的属约束。惟一性约束,即不允许列中出现重复的属性值。性值。3)DEFAULT3)DEFAULT约束。默认值约束。约束。默认值约束。DEFAULTDEFAULT约约束名默束名默认值认值FORF
7、OR列名列名4)CHECK4)CHECK约束。检查约束。约束。检查约束。CONSTRAINTCONSTRAINT约约束名束名CHECK(CHECK(约约束束条条件表件表达达式式)(3)(3)表级完整性约束条件表级完整性约束条件 涉及到关系中多个列的限制条件。涉及到关系中多个列的限制条件。1)UNIQUE1)UNIQUE约束。惟一性约束。约束。惟一性约束。2)PRIMARY KEY2)PRIMARY KEY约束。定义主码,保证惟一性和非空性。约束。定义主码,保证惟一性和非空性。CONTRAINT CONTRAINT约束名约束名PRIMARY KEY CLUSTERED(PRIMARY KEY C
8、LUSTERED(列组列组)3)FOREIGN KEY3)FOREIGN KEY约束。用于定义参照完整性。约束。用于定义参照完整性。CONTRAINTCONTRAINT约束名约束名FOREIGN KEY(FOREIGN KEY(外码外码)REFERENCESREFERENCES被参照表名被参照表名(与外码对应的主码名与外码对应的主码名)CREATE TABLE CREATE TABLE 学生学生(学号学号 CHAR(5)NOT NULL UNIQUE CHAR(5)NOT NULL UNIQUE,姓名姓名 CHAR(8)NOT NULL CHAR(8)NOT NULL,年龄,年龄 SMALLI
9、NT SMALLINT,性别性别 CHAR(2)CHAR(2),所在系,所在系 CHAR(20)CHAR(20),DEFAULT C1 20 FOR DEFAULT C1 20 FOR 年龄,年龄,CONSTRAINT C2 CHECK(CONSTRAINT C2 CHECK(性别性别 IN(IN(男男,女女);CREATE TABLE CREATE TABLE 课程课程(课程号课程号 CHAR(5)PRIMARY KEY CHAR(5)PRIMARY KEY,课程名课程名 CHAR(20)CHAR(20),先行课,先行课 CHAR(5)CHAR(5);CREATE TABLE CREATE
10、TABLE 选课选课(学号学号 CHAR(5)CHAR(5),课程号,课程号 CHAR(5)CHAR(5),成绩成绩 SMALLINT SMALLINT,CONSTRAINT C3 CHECK(CONSTRAINT C3 CHECK(成绩成绩 BETWEEN 0 AND 100)BETWEEN 0 AND 100),CONSTRAINT C4 PRIMARY KEY(CONSTRAINT C4 PRIMARY KEY(学号,课程号学号,课程号),CONSTRAINT C5 FOREIGN KEY(CONSTRAINT C5 FOREIGN KEY(学号学号)REFERENCES)REFEREN
11、CES 学生学生(学号学号),CONSTRAINT C6 FOREIGN KEY(CONSTRAINT C6 FOREIGN KEY(课程号课程号)REFERENCES)REFERENCES 课程课程(课程号课程号);【例【例5-15-1】建立基本表:建立基本表:学生学生(学号,姓名,年龄,性别,所在系学号,姓名,年龄,性别,所在系);课课程程(课程号,课程名,先行课课程号,课程名,先行课);选课选课(学号,课程号,成绩学号,课程号,成绩).).2.2.修改基本表和删除基本表修改基本表和删除基本表 ALTER TABLEALTER TABLE表名表名 ADD(ADD(新列名新列名数数据据类类型
12、型 完整性完整性约约束束 ,n)n)DROP DROP完整性完整性约约束名束名 MODIFY(MODIFY(列名列名数数据据类类型型,n)n);(1)(1)使用使用ADDADD子句增加新列子句增加新列【例【例5-25-2】向】向课课程表中增加程表中增加“学时学时”字段。字段。ALTER TABLE ALTER TABLE 课课程程 ADD ADD 学时学时 SMALLINT SMALLINT;(2)(2)使用使用MODIFYMODIFY子句修改列的原定子句修改列的原定义义(3)(3)使用使用DROPDROP子句子句删删除指定的完整性除指定的完整性约约束束条条件件【例【例5-35-3】删删除除学
13、学生表中生表中对对年年龄龄的默的默认值认值的定的定义义。ALTER TABLE ALTER TABLE 学学生生 DROP C1 DROP C1;删删除基本表的一般格式除基本表的一般格式为为:DROP TABLE DROP TABLE表名;表名;5.2.2 5.2.2 索引的定义和维护索引的定义和维护1.索引的作用1)1)使用索引可以明显地加快数据查询的速度。使用索引可以明显地加快数据查询的速度。2)2)使用索引可保证数据的惟一性。使用索引可保证数据的惟一性。3)3)使用索引可以加快连接速度。使用索引可以加快连接速度。2.建立索引的原则1)1)索引的建立和维护由索引的建立和维护由DBADBA和
14、和DBMSDBMS完成。完成。2)2)大表应当建索引,小表则不必建索引。大表应当建索引,小表则不必建索引。3)3)对于一个基本表,不要建立过多的索引。对于一个基本表,不要建立过多的索引。4)4)根据查询要求建索引。根据查询要求建索引。3.3.建立和删除索引的格式建立和删除索引的格式建立格式建立格式为为:CREATE UNIQUE CLUSTER INDEXCREATE UNIQUE CLUSTER INDEX索引名索引名 ON ON表名表名(列名列名 次序次序,列名,列名 次序次序);删删除索引格式除索引格式为为:DROP INDEX DROP INDEX 索引名;索引名;【例【例5-45-4
15、】为学为学生生_ _课课程程数数据据库库中的中的学学生、生、课课程和程和选课选课三三个个表建表建立索引。其中,立索引。其中,学学生表按生表按学号学号升序建立索引;升序建立索引;课课程表按程表按课课程程号号升序建惟一索引;升序建惟一索引;选课选课表按表按学号学号升序和升序和课课程程号号降序建惟一降序建惟一索引。索引。CREATE UNIQUE INDEX CREATE UNIQUE INDEX 学号学号ON ON 学学生生(学号学号);CREATE UNIQUE INDEX CREATE UNIQUE INDEX 课课程程号号 ON ON 课课程程(课课程程号号);CREATE UNIQUE I
16、NDEX CREATE UNIQUE INDEX 选课号选课号 ON ON 选课选课(学号学号 ASC ASC,课课程程号号 DESC)DESC);5.2.3 5.2.3 视图的定义和维护视图的定义和维护1.1.视图的优点视图的优点1)1)视图能够简化用户的操作。视图能够简化用户的操作。2)2)视图机制可以使用户以不同的方式看待同一数据。视图机制可以使用户以不同的方式看待同一数据。3)3)视图对数据库的重构提供了一定程度的逻辑独立性。视图对数据库的重构提供了一定程度的逻辑独立性。4)4)视图可以对机密的数据提供安全保护。视图可以对机密的数据提供安全保护。2.2.视图定义的格式视图定义的格式一般
17、格式为:一般格式为:CREATE VIEW CREATE VIEW视图名视图名(列名组列名组)AS AS子查询子查询 WITH CHECK OPTION WITH CHECK OPTION;视图举例视图举例【例【例5-65-6】建立】建立计计算机系算机系学学生的生的视图视图。CREATE VIEW CREATE VIEW 计计算机系算机系学学生生 AS SELECT AS SELECT 学号学号,姓名,年,姓名,年龄龄 FROM FROM 学学生生 WHERE WHERE 所在系所在系=计计算机系算机系;【例【例5-75-7】由】由学学生、生、课课程和程和选课选课三三个个表,定表,定义义一一个
18、计个计算机系的算机系的学学生成生成绩视图绩视图,其,其属属性包括性包括学号学号、姓名、姓名、课课程名和成程名和成绩绩。CREATE VIEW CREATE VIEW 学学生成生成绩绩(学号学号,姓名,姓名,课课程名,成程名,成绩绩)AS SELECT AS SELECT 学学生生.学号学号,学学生生.姓名,姓名,课课程程.课课程名,程名,选课选课.成成绩绩 FORM FORM 学学生,生,课课程,程,选课选课 WHERE WHERE 学学生生.学号学号=选课选课.学号学号 AND AND 程程.课课程名程名=选课选课.课课程程号号 AND AND 学学生生.所在系所在系=计计算机系算机系;3.
19、3.视图的删除视图的删除 、查询和维护、查询和维护视图删除语句的一般格式为:视图删除语句的一般格式为:DROP VIEW DROP VIEW视图名;视图名;视图可以和基本表一样被查询,其使用方法与基本表视图可以和基本表一样被查询,其使用方法与基本表相同,但利用视图进行数据增、删、改操作,会受到相同,但利用视图进行数据增、删、改操作,会受到一定的限制。一定的限制。5.3 5.3 数据查询语句数据查询语句 5.3.1 5.3.1 数数据据查询查询的基本的基本语语法法1.SELECT1.SELECT语句的语法语句的语法SELECTSELECT目目标标列列组组 FROM FROM数数据源据源 WHER
20、E WHERE元元组选择条组选择条件件 GROUP BY GROUP BY分列分列组组HAVING HAVING 组选择条组选择条件件 ORDER BY ORDER BY排序列排序列1 1排序要求排序要求1 1 ,nn;语法说明语法说明(1)(1)SELECTSELECT子子句句:指指明明目目标标列列(字字段段、表表达达式式、函函数数表表达达式式、常量)。基本表中相同的列名表示常量)。基本表中相同的列名表示为为:表名:表名.列名列名(2)(2)FROMFROM子子句句:指指明明数数据据源源。表表间间用用“,”分分割割。数数据据源源不不在在当当前前数数据据库库中中,使使用用“数数据据库库名名.表
21、表名名”表表示示。一一表表多用,用多用,用别别名名标识标识。定。定义义表表别别名:表名名:表名别别名名(3)WHERE(3)WHERE子句:子句:元元组选择条组选择条件。件。(4)(4)GROUP GROUP BYBY子子句句:结结果果集集分分组组。当当目目标标列列中中有有统统计计函函数数,则则统统计计为为分分组组统统计计,否否则则为为对对整整个个结结果果集集统统计计。子子句句后后带带上上HAVINGHAVING子句表子句表达组选择条达组选择条件(件(带带函函数数的表的表达达式)。式)。(5)(5)ORDER ORDER BYBY子子句句:排排序序。当当排排序序要要求求为为ASCASC时时升升
22、序序排排序序;排序要求排序要求为为DESCDESC时时降序排列。降序排列。2.SELECT2.SELECT语句的操作符语句的操作符(1)(1)算术操作符算术操作符+(加号)、(减号)、(加号)、(减号)、*(乘号)和(乘号)和/(除号)。(除号)。(2)(2)比较操作符比较操作符=(等于)、(等于)、(大于)、(大于)、(小于)、(小于)、=(大于等于)、(大于等于)、!=!=(不等于)、(不等于)、(小于(小于大于)、大于)、!(不大于)和(不大于)和!、=、=9090;例子例子(2)(2)自身自身连连接接例如,例如,课课程表中的先行程表中的先行课课是在上是在上学学期期应开设应开设的,先行的
23、,先行课课的先行的先行课课,即即间间接先行接先行课应课应提前一提前一学学年年开设开设。如果求。如果求查询查询某某门课门课的的间间接先行接先行课课或全部或全部课课程的程的间间接先行接先行课课,就需要,就需要对课对课程表程表进进行自身行自身连连接。接。课程号课程号课程名课程名先行课先行课C1计算机引论计算机引论C2PASCAL语言语言C1C3数据结构数据结构C2C4数据库数据库C3C5软件工程软件工程C4课程的先行关系链为:课程的先行关系链为:C5C4C3C2C1,课程的间接关系链为:课程的间接关系链为:C5C3C1。课程号课程号课程名课程名先行课先行课课程号课程号课程名课程名先行课先行课C1计算
24、机引论计算机引论C1计计 算算 机机 引引论论C2Pascal语言语言C1C2Pascal语言语言C1C3数据结构数据结构C2C3数据结构数据结构C2C4数据库数据库C3C4数据库数据库C3C5软件工程软件工程C4C5软件工程软件工程C4A.课程号课程号A.课程名课程名B.先行课先行课C2Pascal语言语言C3数据结构数据结构C1C4数据库数据库C2C5软件工程软件工程C3AB结果【例【例5-185-18】查询每一门课的间接先行课。SELECT A.SELECT A.课程号,课程号,A.A.课程名,课程名,B.B.先行课先行课 FROM FROM 课程课程 A A,课程,课程 B B WHE
25、RE A.WHERE A.先行课先行课=B.=B.课程号课程号(3)(3)外部连接外部连接 左外部连接操作是在结果集中保留连接表达式左表中的非匹配记录;右外部左外部连接操作是在结果集中保留连接表达式左表中的非匹配记录;右外部连接操作是在结果集中保留连接表达式右表中的非匹配记录。外部连接符号连接操作是在结果集中保留连接表达式右表中的非匹配记录。外部连接符号为为“*=”“*=”,右外部连接符号为,右外部连接符号为“=*”“=*”。外部连接中不匹配的分量用。外部连接中不匹配的分量用NULLNULL表示。表示。职工职工号号姓名姓名性别性别年龄年龄所在部所在部门门部门部门号号部门名部门名称称电话电话10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 语言 SQL
限制150内