第4章结构化查询语言SQL.ppt
《第4章结构化查询语言SQL.ppt》由会员分享,可在线阅读,更多相关《第4章结构化查询语言SQL.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章结构化查询语言SQL Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望主要内容SQL概述概述 SQL的数据定义的数据定义SQL的数据查询的数据查询 数据更新数据更新 嵌入式嵌入式SQL Transact SQL语言概述语言概述 重点重点v(1)使用使用CREATE语句和语句和DROP语句创建或撤消数据库、基语句创建或撤消数据库、基本表、视图。本表、视图。v(2)使用使用SELECT语句表达式查询(联结、嵌套、存在量词语句表达式查询(联结、嵌套、存在量词方式书写
2、查询语句)。方式书写查询语句)。v(3)使用使用INSERT、DELETE、UPDATE语句更新操作。语句更新操作。v(4)正确叙述正确叙述SQL语句(定义、查询和更新)。语句(定义、查询和更新)。v(5)正确理解嵌入式正确理解嵌入式SQL语句所表示的意义。语句所表示的意义。难点难点v(1)对对SELECT查询语句的理解。查询语句的理解。v(2)对视图更新操作的限制。对视图更新操作的限制。v(3)涉及游标的涉及游标的SQL DML的使用方式的使用方式。本章重点与难点本章概述结构化查询语言结构化查询语言SQL(Structured Query Language)是关系数据库的标准语言,对关)是关
3、系数据库的标准语言,对关系模型的发展和商用系模型的发展和商用DBMS的研制起着重要的的研制起着重要的作用。作用。SQL语言是介乎于关系代数和元组演算语言是介乎于关系代数和元组演算之间的一种语言。之间的一种语言。本章详细介绍本章详细介绍SQL的核心部分内容:数据定义、的核心部分内容:数据定义、数据查询、数据更新和嵌入式数据查询、数据更新和嵌入式SQL。4.1 SQL概述 11/16/20225主要内容SQL的产生与发展的产生与发展SQL的组成及特点的组成及特点SQL的产生与发展 19701970年,美国年,美国IBMIBM研究中心的研究中心的E.F.CoddE.F.Codd连续发表多篇论连续发表
4、多篇论文,提出关系模型。文,提出关系模型。19721972年,年,IBMIBM公司开始研制实验型关系数据库管理系统公司开始研制实验型关系数据库管理系统SYSTEM RSYSTEM R,配制的查询语言称为,配制的查询语言称为SQUARE(Specifying SQUARE(Specifying Queries As Relational Expression)Queries As Relational Expression)语言,在语言中语言,在语言中使用了较多的数学符号。使用了较多的数学符号。19741974年,年,BoyceBoyce和和ChamberlinChamberlin把把SQUAR
5、ESQUARE修改为修改为SEQUEL SEQUEL(Structured English QueryLanguage)(Structured English QueryLanguage)语言。后来语言。后来SEQUELSEQUEL简称为简称为SQL(Structured Query Language)SQL(Structured Query Language),即,即“结构式查询语言结构式查询语言”,SQLSQL的发音仍为的发音仍为“sequel”“sequel”。现。现在在SQLSQL已经成为一个标准已经成为一个标准 。SQLSQL有两个标准:有两个标准:ANSI SQLANSI SQL和
6、和19921992年通过的修改版本年通过的修改版本SQL-92SQL-92(简称(简称SQL2SQL2)。还有一个新的标准)。还有一个新的标准SQL3SQL3,它扩充,它扩充了了SQL2SQL2,引入了递归、触发器和对象等概念和机制。,引入了递归、触发器和对象等概念和机制。SQL的组成及特点 SQL语言从功能上可以分为四部分:数据查(语言从功能上可以分为四部分:数据查(Data Query)、数据操纵()、数据操纵(Data Manipulation)、数据)、数据定义(定义(Data Definition)和数据控制()和数据控制(Data Control)。)。核心核心SQL主要有四个部分
7、主要有四个部分:v(1)数据定义语言,即数据定义语言,即SQL DDL,用于定义,用于定义SQL模式、基模式、基本表、视图、索引等结构。本表、视图、索引等结构。v(2)数据操纵语言,即数据操纵语言,即SQL DML。数据操纵分成数据查询。数据操纵分成数据查询和数据更新两类。其中数据更新又分成插入、删除和修改三和数据更新两类。其中数据更新又分成插入、删除和修改三种操作。种操作。v(3)嵌入式嵌入式SQL语言的使用规定。这一部分内容涉及到语言的使用规定。这一部分内容涉及到SQL语句嵌入在宿主语言程序中的规则。语句嵌入在宿主语言程序中的规则。v(4)数据控制语言,即数据控制语言,即SQL DCL,这
8、一部分包括对基本表,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。和视图的授权、完整性规则的描述、事务控制等内容。SQL的核心动词 SQL有两种使用方式:一是联机交互使用,另一种是有两种使用方式:一是联机交互使用,另一种是嵌入到某种高级语言程序设计语言中去使用。嵌入到某种高级语言程序设计语言中去使用。SQL是一种第四代语言(是一种第四代语言(4GL),用户只需提出),用户只需提出“干干什么什么”,无需具体指明,无需具体指明“怎么干怎么干”,像存取路径选择,像存取路径选择和具体处理操作等,均有系统自动完成。和具体处理操作等,均有系统自动完成。功 能动 词数据库查询SELEC
9、T数据定义CREATE,DROP数据操纵INSERT,UPDATE,DELECT数据控制GRANT,REVOKE数据库的创建与撤销数据库的创建与撤销定义、修改与删除基本表定义、修改与删除基本表建立与删除索引建立与删除索引创建与删除视图创建与删除视图4.2 SQL的数据定义SQL的数据定义操作对象操 作 方 式创 建删 除修 改数据库CREATE DATABASEDROP DATABASE表CREATE TABLEDROP TABLEALTER TABLE索 引CREATE INDEXDROP INDEX视 图CREATE VIEWDROP VIEWSQL的数据定义功能包括数据库定义、表定义、视
10、图和索引的定义。的数据定义功能包括数据库定义、表定义、视图和索引的定义。SQL的数据定义(2)例例4.1 定义一个定义一个教务管理数据库教务管理数据库JWGL,它包,它包含含3个表:个表:v学生表:S(SNO,SNAME,SEX,AGE,SDEPT)v课程表:C(CNO,CNAME,CPNO,CCREDIT)v学生选课表:SC(SNO,CNO,GRADE)学生表实例与选课表实例学号SNO课程号CNO成绩GRADE200915121200915121200915121200915122200915122123239285889080学号SNO姓名SNAME性别SEX年龄AGE所在系SDEPT20
11、0915121200915122200915123200915125李小勇刘 晨王洪敏张 力MFFM20191819CSCSMAIS学生表实例学生表实例选课表实例选课表实例课程表实例课程号CNO课程名CNAME先修课CPNO学分CCREDIT1234567数据库数学信息系统操作系统数据结构数据处理C语言516764243424课程表实例课程表实例数据库的创建对数据库的创建可用对数据库的创建可用CREATE语句实现,句法如下:语句实现,句法如下:vCREATE DATABASE AUTHORIZATION v其中其中AUTHORIZATION 是指该用户获得授予创建是指该用户获得授予创建和使用数
12、据库的权限。和使用数据库的权限。例如,下面语句定义了教务管理数据库的模式:例如,下面语句定义了教务管理数据库的模式:vCREATE DATABASE JWGL AUTHORIZATION张铭张铭 v创建的数据库名为创建的数据库名为JWGL,拥有者为张铭。,拥有者为张铭。数据库的撤销使用使用DROP语句撤消数据库。语句撤消数据库。DROP语句的句法如下:语句的句法如下:DROP DATABASE CASCADE|RESTRICT撤消的方式有以下两种撤消的方式有以下两种:vCASCADE(连锁式)方式:执行(连锁式)方式:执行DROP语句时,把数据库语句时,把数据库及其下属的基本表、视图、索引等所
13、有元素全部撤消。及其下属的基本表、视图、索引等所有元素全部撤消。vRESTRICT(约束式)方式:执行(约束式)方式:执行DROP语句时,只有当数语句时,只有当数据库中没有任何下属元素时,才能撤消数据库,否则拒绝执据库中没有任何下属元素时,才能撤消数据库,否则拒绝执行行DROP语句。语句。例如,要撤消数据库例如,要撤消数据库JWGL及其下属所有的元素,可及其下属所有的元素,可用下列语句实现:用下列语句实现:vDROP DATABASE JWGL CASCADE 基本表的定义、修改与删除数据类型数据类型 一个属性选用哪种数据类型要根据实际情况来一个属性选用哪种数据类型要根据实际情况来决定,一般要
14、从两个方面来考虑,决定,一般要从两个方面来考虑,v一是取值范围,一是取值范围,v二是要做哪些运算。二是要做哪些运算。数据类型数据类型含 义CHAR(n)VARCHAR(n)INTSMALLINTNUMERIC(p,d)REALDOUBLE PRECISIONFLOAT(n)DATETIME度为n的定长字符串 最大长度为n的变长字符串长整数(也可以写作INTEGER)短整数定点数,由P位数字(不包括符号、小数点)组成,小数后面有d位数字取决于机器精度的浮点数取决于机器精度的双精度浮点数浮点数,精度至少为n位数字日期,包含年、月、日,格式为YYYY-MM-DD 时间,包含一日的时、分、秒,格式为H
15、H:MM:SS不同的不同的RDBMS中支持的数据类型不完全相同中支持的数据类型不完全相同 定义基本表定义基本表,就是创建基本表的结构。其一般格式为:定义基本表,就是创建基本表的结构。其一般格式为:CREATE TABLE (列级完整性约束条件列级完整性约束条件 ,列级完整性约束条列级完整性约束条件件 ,););建表的同时通常还可以定义与该表有关的完整性约束建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由当用户操作表中数据时由RDBMS自动检查该操作是自动检查该操作是否违背这些完整
16、性约束条件。否违背这些完整性约束条件。CREATE TABLE S(SNO CHAR(9)PRIMARY KEY,/*列级完整性约束条件,列级完整性约束条件,SNO是主码是主码*/SNAME CHAR(20)UNIQUE,/*SNAME取唯一值取唯一值*/SEX CHAR(1),AGE SMALLINT,SDEPT CHAR(20);系统执行上面的系统执行上面的CREATE TABLE语句后,就在数据语句后,就在数据库中建立一个新的空的库中建立一个新的空的“学生学生”表表S,并将有关,并将有关“学学生生”表的定义及有关约束条件存放在数据字典中。表的定义及有关约束条件存放在数据字典中。例:建立学
17、生表例:建立学生选课表CREATE TABLE SC (SNO CHAR(9),CNO CHAR(4),GRADE SMALLINT,PRIMARY KEY(SNO,CNO),/*主码由两个属性构成,必须作为表级完整性进行定义主码由两个属性构成,必须作为表级完整性进行定义*/FOREIGN KEY(SNO)REFERENCES S(SNO),/*表级完整性约束条件,表级完整性约束条件,SNO是外码,被参照表是是外码,被参照表是S*/FOREIGN KEY(CNO)REFERENCES C(CNO)/*表级完整性约束条件,表级完整性约束条件,CNO是外码,被参照表是是外码,被参照表是C*/);修
18、改基本表SQL语言用语言用ALTER TABLE语句修改基本结构表,格式为:语句修改基本结构表,格式为:ALTER TABLE ADD 完整性约束完整性约束DROP ALTER COLUMN ;其中其中是要修改的基本表。是要修改的基本表。vADD子句用于增加新列和新的完整性约束条件;子句用于增加新列和新的完整性约束条件;vDROP子句用于删除指定的完整性约束条件;子句用于删除指定的完整性约束条件;vALTER COLUMN子句用于修改原有的列定义。包括修改列名和子句用于修改原有的列定义。包括修改列名和数据类型。数据类型。例如例如,向向S表增加表增加“入学时间入学时间”列,其数据类型为日期型。列
19、,其数据类型为日期型。vALTER TABLE S ADD S_ENTRANCE DATE;v不论基本表中原来是否已有数据,新增加的列一律为空值。不论基本表中原来是否已有数据,新增加的列一律为空值。删除基本表用用DROP TABLE语句删除基本表。格式为:语句删除基本表。格式为:DROP TABLE RESTRICT|CASCADE;v若选择若选择RESTRICT:则该表的删除是有限制条件的。欲删除:则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用(如的基本表不能被其他表的约束所引用(如CHECK,FOREIGN KEY等约束),不能有视图,不能有触发器等约束),不能有视图,
20、不能有触发器(trigger),不能有存储过程或函数等。如果存在这些依),不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。赖该表的对象,则此表不能被删除。v若选择若选择CASCADE:则该表的删除没有限制条件。在删除基:则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。本表的同时,相关的依赖对象,例如视图,都将被一起删除。v缺省情况是缺省情况是RESTRICT。例例4.8 删除删除S表。表。DROP TABLE S CASCADE;建立索引建立索引使用建立索引使用CREATE INDEX语句,格式为:语句,格式为:CREATE UNI
21、QUECLUSTER INDEX ON(,);v其中,其中,是要建索引的基本表的名字。索引可以建立在该表是要建索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个的一列或多列上,各列名之间用逗号分隔。每个后面还可后面还可以用以用指定索引值的排列次序,可选指定索引值的排列次序,可选ASC(升序)或(升序)或DESC(降序),缺省值为(降序),缺省值为ASC。vUNIQUE表明此索引的每一个索引值只对应唯一的数据记录。表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引表示要建立的索引是聚簇索引。所谓聚簇索引是指索
22、引项的顺序与表中记录的物理顺序一致的索引组织。项的顺序与表中记录的物理顺序一致的索引组织。例:例:CREATE CLUSTER INDEX STUSNAME ON S(SNAME);将会在将会在S表的表的SNAME(姓名)列上建立一个聚簇索引,而且(姓名)列上建立一个聚簇索引,而且S表表中的记录将按照中的记录将按照SNAME值的升序存放。值的升序存放。删除索引索引一经建立,就由系统使用和维护它,不需用户索引一经建立,就由系统使用和维护它,不需用户干预。建立索引是为了减少查询操作的时间,但如干预。建立索引是为了减少查询操作的时间,但如果数据增删改频繁,系统会花费许多时间来维护索果数据增删改频繁,
23、系统会花费许多时间来维护索引,从而降低了查询效率。这时,可以删除一些不引,从而降低了查询效率。这时,可以删除一些不必要的索引。必要的索引。删除索引使用删除索引使用DROP INDEX语句,其一般格式为语句,其一般格式为 DROP INDEX;例:例:删除删除S表的表的STUSNAME索引。索引。DROP INDEX STUSNAME;删除索引时,系统会同时从数据字典中删去有关该删除索引时,系统会同时从数据字典中删去有关该索引的描述。索引的描述。视图视图是从一个或几个基本表(或视图)导出的视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库中表。它与基本表不同,是一个虚
24、表。数据库中只存放视图的定义,而不存放视图对应的数据,只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。这些数据仍存放在原来的基本表中。建立视图用用CREATE VIEW命令建立视图,格式为:命令建立视图,格式为:CREATE VIEW (,)AS WITH CHECK OPTION;其中,子查询可以是任意复杂的其中,子查询可以是任意复杂的SELECT语句,但通语句,但通常不允许含有常不允许含有ORDER BY子句和子句和DISTINCT短语。短语。WITH CHECK OPTION表示对视图进行表示对视图进行UPDATE,INSERT和和DELETE操作时要保证更新、
25、插入或删除操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件的行满足视图定义中的谓词条件(即子查询中的条件表达式)。表达式)。组成视图的属性列名或者全部省略或者全部指定,如果省略了视图的组成视图的属性列名或者全部省略或者全部指定,如果省略了视图的各个属性列名,则隐含该视图由子查询中各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段子句目标列中的诸字段组成。但在下列三种情况下必须明确指定组成视图的所有列名:组成。但在下列三种情况下必须明确指定组成视图的所有列名:v某个目标列不是单纯的属性名,而是聚集函数或列表达式;某个目标列不是单纯的属性名,而是聚集函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 查询 语言 SQL
限制150内