数据库原理及应用教学辅助第05章-关系数据库的结构化查询语言SQL课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库原理及应用教学辅助第05章-关系数据库的结构化查询语言SQL课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 教学 辅助 05 关系 结构 查询 语言 SQL 课件
- 资源描述:
-
1、 本章主要内容本章介绍关系数据库标准语言SQL。主要内容包括:数据定义、数据操纵、数据控制和数据约束等。(1)SQL数据库的体系结构,SQL的组成。(2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。(3)SQL的数据查询:SELECT语句的句法,SELECT语句的几种形式及各种限定,基本表的联接操作。(4)SQL的数据更新:插入、删除和修改语句。(5)视图的创建和撤消,对视图更新操作的限制。(6)嵌入式SQL:预处理方式,使用规定,使用技术,卷游标,动态SQL语句。关系数据库的结构化查询语言SQL5.1 SQL概述5.2 SQL的数据定义语言 5.3 SQL数据查询 5.4 SQL
2、聚集函数(Aggregation)5.5 SQL数据更新 5.6 SQL中的视图 5.7 嵌入式SQL 本章小结 5.1 SQL概述1)SQL的发展历程SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统System R上实现。1986年10月,经美国国家标准局(ANSI)的数据库委员会批准了SQL作为关系数据库语言的美国标准,并公布了标准SQL文本。1987年6月国际标准化组织(ISO)将其采纳为国际标准,称为“SQL86”。相继出现了“SQL89”、“SQL2(SQL92)”、“SQL3”。SQL已成为关系数据库领域中的一个主流语言:首先,各个
3、数据库产品厂家纷纷推出了自己的支持SQL的软件或与SQL接口的软件。其次,SQL在数据库以外的其他领域也受到了重视。不少软件产品将SQL的数据检索功能与面向对象技术、图形技术、软件工程工具、软件开发工具、人工智能语言等相结合,开发出功能更强的软件产品。2)SQL数据库的体系结构视图视图V1用户用户1视图视图V2基本表基本表B1基本表基本表B2基本表基本表B3基本表基本表B4存储文件存储文件S1存储文件存储文件S2存储文件存储文件S3存储文件存储文件S4用户用户2用户用户3用户用户4SQL用户用户外模式外模式模式模式内模式内模式SQL数据库的体系结构的特征:一个SQL模式是表和约束的集合。一个表
4、(TABLE)是行的集合。每行是列的序列,每列对应一个数据项。一个表可以是一个基本表,也可以是一个视图。一个基本表可以跨一个或多个存储文件,一个存储文件也可存储一个或多个基本表。用户可以用SQL语句对视图和基本表进行查询等操作。SQL用户可以是应用程序,也可以是终端用户。3)SQL的组成(1)数据定义语言(Data Definition Language,简称DDL)用于定义SQL模式、基本表、视图和索引。(2)查询语言(Query Language,简称QL)用于数据查询。(3)数据操纵语言(Data Manipulation Language,简称DML)用于数据的增、删、修改。(4)数据
5、控制语言(Data Control Language,简称DCL)用于数据访问权限的控制。5.2SQL的数据定义语言 5.2.1 数据类型 5.2.2 基本表模式的定义 5.2.3 基本表的修改和删除 5.2.4 域 5.2.5 索引的建立和删除 5.2.1 数据类型 数据类型数据类型说明符说明符备注备注定义字符串定义字符串CHAR(n)按固定长度按固定长度n存储字符串,如果实际字符串长度长小于存储字符串,如果实际字符串长度长小于n,后,后面填空格符;如果实际字符串长大于面填空格符;如果实际字符串长大于n,则报错。,则报错。变长字符串变长字符串VARCHAR(n)按实际字符串长度存储,但字符长
6、度不得超过按实际字符串长度存储,但字符长度不得超过n,则报错。,则报错。整数整数INT常见的长整数,字长常见的长整数,字长32位位短整数短整数SMALLINT字长字长16位位十进制数十进制数DECIMAL(n,d)n为十进制数总位数为十进制数总位数(不包括小数点不包括小数点),d为小数据点后的十进为小数据点后的十进制位数制位数浮点数浮点数FLOAT一般指双精度浮点数,即字长一般指双精度浮点数,即字长64位位定长位串定长位串BIT(n)二进制位串,长度为二进制位串,长度为n,n的缺省值为的缺省值为1变长位串变长位串BITVARING(n)按实际二进制位串存储,但最长不得超过按实际二进制位串存储,
7、但最长不得超过n位,否则报错位,否则报错日期日期DATE格式为格式为“yyyymmdd”,yyyy表示年份,范围为表示年份,范围为00019999;mm表示月份,范围为表示月份,范围为112;dd表示日,范围为表示日,范围为131。时间时间TIME格式为格式为“hhmmss”,hh表示小时,范围为表示小时,范围为024;mm为分钟,为分钟,ss表示秒,范围都是表示秒,范围都是059。时标时标TIMESTAMP格式为格式为“yyyymmddhhmmssnnnnnn”,其中,其中“nnnnnn”表示表示微秒,范围为微秒,范围为099999,其他符号的意义同上。,其他符号的意义同上。5.2.2 数据
8、表模式的定义 1)定义数据库的语句格式为:CREATE DATABASE database_name ON (NAME=file_name,FILENAME=os_file_name ,SIZE=size ,MAXSIZE=max_size|UNLIMITED ,FILEGROWTH=growth_increment )LOG ON (NAME=logical_ file_name,FILENAME=os_file_name ,SIZE=size ,MAXSIZE=max_size|UNLIMITED ,FILEGROWTH=growth_increment )事例 CREATE DATABA
9、SE studb ON (NAME=studb_dat,FILENAME=d:studb.mdf,SIZE=4,MAXSIZE=10,FILEGROWTH=1)LOG ON (NAME=studb_log,FILENAME=d:studb_log.LDF,SIZE=1,FILEGROWTH=10%);2)基本表SQL定义语句格式 定义基本表的语句格式为:CREATE TABLE(NOT NULL UNIQUE ,属性名2类型2 NOT NULL UNIQUE)其他参数;例5-1:学生成绩数据库含有三张表:学生关系:S(SNO,SNAME,SEX,AGE,DNAME)课程关系:C(CNO,CNA
10、ME,CREDIT,PRE_CNO)选课关系:SC(SNO,CNO,SCORE)可用下列SQL语句来实现:SQL事例 CREATE TABLE S (SNO CHAR(6)PRIMARY KEY,SNAME CHAR(8)NOT NULL,AGE SMALLINT,SEX CHAR(1),DNAME VARCHAR(12);CREATE TABLE C (CNO CHAR(2)NOT NULL,CNAME VARCHAR(24)NOT NULL,CREDIT SMALLINT,PRE_CNO CHAR(2),PRIMARY KEY(CNO);CREATE TABLE SC (SNO CHAR(
11、6)NOT NULL,CNO CHAR(2)NOT NULL,SCORE SMALLINT,PRIMARY KEY(SNO,CNO),FOREIGN KEY(SNO)REFERENCES S ON DELETE CASCADE,FOREIGN KEY(CNO)REFERENCES C ON DELETE RESTRICT);3)主关键字定义 方法1:一个关系的主关键字由一个或几个属性构成,在CREATE TABLE中使用保留字PRIMARY KEY声明主关键字:(1)在列出关系模式的属性时,在属性及其类型后加上保留字PRIMARY KEY,表示该属性是主关键字;(2)在列出关系模式的所有属性后
12、,再附加一个声明:PRIMARY KEY(,)如果关键字由多个属性构成,则必须使用方法(2)。SQL事例 CREATE TABLE S (SNO CHAR(6)PRIMARY KEY,/*第一种方式第一种方式*/SNAME CHAR(8)NOT NULL,AGE SMALLINT,SEX CHAR(1),DNAME VARCHAR(12);CREATE TABLE C (CNO CHAR(2)NOT NULL,CNAME VARCHAR(24)NOT NULL,CREDIT SMALLINT,PRE_CNO CHAR(2),PRIMARY KEY(CNO);/*第二种方式第二种方式*/CREA
13、TE TABLE SC (SNO CHAR(6)NOT NULL,CNO CHAR(2)NOT NULL,SCORE SMALLINT,PRIMARY KEY(SNO,CNO),/*第二种方式第二种方式*/FOREIGN KEY(SNO)REFERENCES S ON DELETE CASCADE,FOREIGN KEY(CNO)REFERENCES C ON DELETE RESTRICT);主关键字定义 方法2:使用保留字UNIQUE来说明关键字。它可以出现在PRIMARY KEY出现的任何地方,可以在同一个关系模式中出现多次。例如,在不出现同名同姓的情况下也可以将上面的定义改写为:CRE
14、ATE TABLE S (SNO CHAR(6)UNIQUE,SNAME CHAR(8)UNIQUE,SEX CHAR(1),AGE SMALLINT,DNAME VARCHAR(12);4)外部关键字的定义 在SQL中,有两种方法用于说明一个外部关键字:方法1:在表的属性名和类型后面直接用REFERENCES说明它参照了某个表的某些属性(必须是主关键字),其格式为:REFERENCES 表名(属性)这种方法主要在外部关键字只有一个属性时可以使用。方法2:在CREATE TABLE语句的属性列表后面增加一个或几个外部关键字说明,其格式为:FOREIGN KEY 属性 REFERENCES 表名
15、()其中,第一个“属性”是外部关键字,第二个“属性”是被参照的属性。CREATE TABLE SC (SNO CHAR(6)NOT NULL,CNO CHAR(2)NOT NULL,SCORE SMALLINT,PRIMARY KEY(SNO,CNO),FOREIGN KEY(SNO)REFERENCES S ON DELETE CASCADE,FOREIGN KEY(CNO)REFERENCES C ON DELETE RESTRICT);基本表定义格式图示 CREATE TABLE表表名名 1(列列名名 1类类型型 1DEFAULT字字值值USERNULLNOT NULLUNIQUE,PR
16、IMARY KEY(列列表表名名 1),FOREIGN KEY(列列表表名名 2 2)外外键键名名REFERENCES表表名名 2ON DELETERESTRICTCASCADESET NULL,CHECK(条条件件)(;5.2.3 基本表的修改和删除 1)增加新的属性 ALTER TABLE 表的创建者名.表名 ADD属性名类型;例如:在表S中增加属性“BIRTHDATE”,“HOSTADDR”和“COMMADDR”:ALTER TABLE S ADD BIRTFIDATE DATE;ALTER TABLE S ADD HOSTADDR VARCHAR(32);ALTER TABLE S A
17、DD COMMADDR VARCHAR(32);2)删除原有属性的语句为 ALTER TABLE 表名表名DROP属性名属性名 CASCADE|RESTRICT;例如:在表S中删除“AGE”:ALTER TABLE S DROP AGE;3)基本表的删除在SQL中删除一个无用表的操作是非常简单的,其语句格式为:DROP TABLE 表名;主键修改4)补充定义主键 由于SQL并不要求每个表都定义主键,在需要时可以通过补充定义主键命令来定义主键。ALTER TABLE 表名 ADD PRIMARY KEY();5)撤销主键定义利用下列的主键撤销命令可以暂时撤销主键定义:ALTER TABLE 表名
18、 DROP PRIMARY KEY;外键修改6)补充定义外键ALTER TABLE 表名 ADD FOREIGN KEY 属性 REFERENCES 表名()ON DELETE RESTRICT|CASCADE|SET NULL;7)撤消外键定义 ALTER TABLE 表名 DROP FOREIGN KEY 5.2.4 域 定义一个域的方法是:CREATE DOMAIN 域名 AS 数据类型;通过已定义域名来说明一个属性类型,其格式是:属性名1,属性名2,域名;例如:为表S的HOSTADDR和COMMADDR定义一个域ADDRDOMAIN:CREATE DOMAIN ADDRDOMAIN A
19、S VARCHAR(36)DEFAULT unknow;用域“ADDRDOMAIN”来说明属性“HOSTADDR”和“COMMADDR”的类型。HOSTADDR,COMMADDR ADDRDOMAIN;删除一个域定义的语句是:DROP DOMAIN域名;5.2.5 索引的建立和删除建立索引的语句格式为:CREATE UNIQUE INDEX 索引名 ON 基本表名(ASC|DESC,ASC|DESC);例如,对表S建立以下索引 CREATE UNIQUE INDEX SNO_INDEX ON S(SNO);CREATE UNIQUE INDEX SNAME_ADDR_INDEX ON S(SN
20、AME ASC,HOSTADDR DESC);删除索引的语句格式:DROP INDEX 索引名;5.3 SQL数据查询 5.3.1 ALPHA关系演算语言5.3.2 SQL查询语句格式 5.3.3 简单查询 5.3.4 复杂查询 5.3.1 ALPHA关系演算语言语名的基本格式是:操作语句工作空间名(表达式):操作条件(1)简单检索 例查询所有被选修课程的课程号。GETW(SC.SNO)例查询所有学生的数据。GETW(STUDENT)(2)限定的检索 例查询计算机系中年龄小于20岁的学生的学号和年龄。GETW(STUDENT.SNO,STUDENT.AGE):STUDENT.DNAME=计算机
21、 STUDENT.AGE20ALPHA关系演算语言(3)带排序的检索 例查询计算机系学生的学号、年龄,并按降序排序。GET W(STUDENT.SNO,STUDENT.AGE):STUDENT.DNAME=计算机 DOWN STUDENT.AGE(4)带定额的检索例取出一个计算机系学生的学号。GET W(1)(STUDENT.SNO):STUDENT.DNAME=计算机所谓带定额的检索是指检索出指定个数的元组,方法是在W后括号中加上定额数量。排序和定额可以一起使用。例查询计算机系年龄最大的3个学生的学号及年龄。GETW(3)(STUDENT.SNO,STUDENT.AGE):STUDENT.D
22、NAME=计算机 DOWN STUDENT.AGEALPHA关系演算语言(5)用元组变量的检索因为元组变量是在某一关系范围内变化的,所以元组变量又称为范围变量。元组变量主要有两个方面的用途:简化关系名。操作条件中使用量词时必须用元组变量。例查询计算机系学生的姓名。RANGEStudentXGET W(X.SNAME):X.DNAME=计算机这里元组变量X的作用是简化关系名Student。(6)用存在量词的检索 例查询选修C2课程的学生姓名。RANGESCX GET W(STUDENT.SNAME):存在X(X.SNO=Student.SNO X.CNO=C2)例查询选修了其直接先行课程为C2课
23、程的学生学号。RANGECourseCX GET W(SC.SNO):存在CX(CX.SNO=SC.SNO CX.PRE_CNO=C2)例查询至少选修一门其先行课程为C1课程的学生姓名。RANGECourseCX SCSCX GET W(Student.SNAME):存在存在SCX(SCX.SNO=Student.SNO存在存在CX(CX.CNO=SC.CNOCX.PRE_CNO=C1)本例中的元组关系演算公式可以变换为前束范式的形式:GET W(Student.SNAME):存在存在SCX存在存在CX(SCX.SNO=Student.SNO CX.CNO=SC.CNOCX.PRE_CNO=C
24、1)(7)带有多个关系的表达式的检索上面所举的各个例子中,虽然查询时可能会涉及多个关系,即公式中可以涉及多个关系,但查询都只在一个关系中,即表达式中只有一个关系。表达式中可以有多个关系的。例查询成绩为90分以上的学生姓名和课程名。本查询所要求的结果学生姓名和课程名分别在Student和Course两个关系中。RANGESCSCXGET W(Student.SNAME,Course.CNAME):存在SCX(SCX.SCORE90SCX.SNO=Student.SNOCourse.CNO=SCX.CNO)(8)用全称量词的检索 例查询没有选修C1课程的学生姓名。本查询所要求的结果学生姓名和课程名
25、分别在Student和Course两个关系中。RANGECourseCXGET W(Student.SNAME):任意SCX(SCX.SNOStudent.SNOSCX.CNOC1)本例实际上可以用存在量词来表示:GET W(Student.SNAME):存在SCX(SCX.SNOStudent.SNOSCX.CNOC1)(9)用两种量词的检索 例查询了选修全部课程的学生姓名。RANGECourseCX SC SCX GET W(Student.SNAME):任意 CX 存在 SCX(SCX.SNOStudent.SNOSCX.CNOCX.CNO)(10)用蕴函的检索 例查询至少选修了学生S1
展开阅读全文