关系数据库语言(2)ppt课件_第1页
关系数据库语言(2)ppt课件_第2页
关系数据库语言(2)ppt课件_第3页
关系数据库语言(2)ppt课件_第4页
关系数据库语言(2)ppt课件_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3 3章章 关系数据库言语关系数据库言语SQL SQL 本章重要概念 1SQL数据库的体系构造,数据库的体系构造,SQL的组成。的组成。2SQL的数据定义:的数据定义:SQL方式、根本表和索引的方式、根本表和索引的创建和撤销。创建和撤销。3SQL的数据查询;的数据查询;SELECT语句的句法,语句的句法,SELECT语句的三种方式及各种限定,根本表语句的三种方式及各种限定,根本表的衔接操作,的衔接操作,SQL3中的递归查询。中的递归查询。4SQL的数据更新:插入、删除和修正语句。的数据更新:插入、删除和修正语句。5视图的创建和吊销,对视图更新操作的限制。视图的创建和吊销,对视图更新操作的限

2、制。6嵌入式嵌入式SQL:预处置方式,运用规定,运用技:预处置方式,运用规定,运用技术,卷游标,动态术,卷游标,动态SQL语句。语句。7存储过程与存储过程与SQL/PLM。本章概述本章概述lSQL是关系数据库的规范言语,对关系模是关系数据库的规范言语,对关系模型的开展和商用型的开展和商用DBMS的研制起着重要的的研制起着重要的作用。作用。SQL言语是介乎于关系代数和元组言语是介乎于关系代数和元组演算之间的一种言语。本章详细引见演算之间的一种言语。本章详细引见SQL的中心部分内容:的中心部分内容:l 数据定义数据定义l 数据查询数据查询l 数据更新数据更新l 嵌入式嵌入式SQL 关系数据库言语关

3、系数据库言语SQLSQLl3.1 SQL简介简介 l3.2 SQL的数据定义的数据定义 l3.3 SQL的数据查询的数据查询l3.4 SQL的数据更新的数据更新 l3.5 视图的定义和对视图的操作视图的定义和对视图的操作 l3.6 嵌入式嵌入式SQL l3.7 存储过程与存储过程与SQL/PSMl3.8 小结小结3.1 SQL3.1 SQL简介简介 l3.1.1 SQL开展史开展史 l3.1.2 SQL数据库的体系构造数据库的体系构造 l3.1.3 SQL的组成的组成l3.1.4 SQL的特点的特点3.1.1 SQL3.1.1 SQL开展史开展史1 1 l19701970年,美国年,美国IBM

4、IBM研讨中心的研讨中心的E.F.CoddE.F.Codd延续发延续发表多篇论文,提出关系模型。表多篇论文,提出关系模型。l19721972年,年,IBMIBM公司开场研制实验型关系数据库公司开场研制实验型关系数据库管理系统管理系统SYSTEM RSYSTEM R,配制的查询言语称为,配制的查询言语称为SQUARESQUARE言语。言语。l19741974年,把年,把SQUARESQUARE修正为修正为SEQUELSEQUEL言语。言语。l19781978年,年,SEQUELSEQUEL简称为简称为SQLSQL,即,即“构造式查询构造式查询言语。言语。lSQLSQL的发音仍为的发音仍为“seq

5、uelsequel。如今。如今SQLSQL曾经成为曾经成为一个规范一个规范 ,其发音更倾向于发,其发音更倾向于发“ess-cue-ell ess-cue-ell 。3.1.1 SQL3.1.1 SQL开展史开展史2 2 l19861986年年1010月,月,ANSI SQLANSI SQL规范规范l19871987年年6 6月,月,ISO SQLISO SQL规范规范l19921992年年8 8月,月,ISO SQLISO SQL规范规范SQL2SQL2l19991999年,年,ISO SQLISO SQL规范规范SQL3SQL3l在未来很长一段时间里,在未来很长一段时间里,SQLSQL仍将是

6、关系数仍将是关系数据库领域的主流言语。在软件工程、人工智据库领域的主流言语。在软件工程、人工智能领域,能领域,SQLSQL已显示出相当大的潜力。已显示出相当大的潜力。SQL86SQL863.1.2 SQL3.1.2 SQL数据库的体系构造数据库的体系构造1 1 用户用户1用户用户2用户用户3用户用户4视图视图1视图视图2根本表根本表1根本表根本表2根本表根本表3根本表根本表4存储文件存储文件1存储文件存储文件2存储文件存储文件3存储文件存储文件4图图3.1 SQL数据库的体系构造数据库的体系构造SQL用户用户ViewBase tableStored file3.1.2 SQL3.1.2 SQL

7、数据库的体系构造数据库的体系构造2 2l1 1 一个一个SQLSQL方式方式 Schema Schema 是表和约束的集是表和约束的集合。合。l2 2 一个表由行集构成,一行是列的序列一个表由行集构成,一行是列的序列 。l3 3 表有三种类型表有三种类型: : 根本表、视图和导出表。根本表、视图和导出表。 l4 4 根本表与存储文件间的联络是根本表与存储文件间的联络是M:NM:N。每个存。每个存储储l 文件与外部存储器上一个物理文件对应。文件与外部存储器上一个物理文件对应。l5 5 用户可以用用户可以用SQLSQL语句对根本表和视图进展查语句对根本表和视图进展查询等操作。在用户看来,两者是一样

8、的,都是表。询等操作。在用户看来,两者是一样的,都是表。l6 6 SQL SQL用户可以是运用程序,也可以是终端用用户可以是运用程序,也可以是终端用户。户。l虽然虽然SQLSQL是国际公认的关系数据库规范,但规范的是国际公认的关系数据库规范,但规范的SQLSQL文档中并没有运用文档中并没有运用“关系和关系和“数据库这两个名数据库这两个名词。词。3.1.3 SQL3.1.3 SQL的组成的组成 l中心中心SQL主要有四个部分主要有四个部分:l1 数据定义言语,即数据定义言语,即SQL DDL,用于定义,用于定义l SQL方式、根本表、视图、索引等构造。方式、根本表、视图、索引等构造。l2 数据支

9、配言语,即数据支配言语,即SQL DML。l 数据支配分成数据查询和数据更新两类。其数据支配分成数据查询和数据更新两类。其中中l 数据更新又分成插入、删除和修正三种操作。数据更新又分成插入、删除和修正三种操作。l3 嵌入式嵌入式SQL言语的运用规定。言语的运用规定。l SQL语句嵌入在宿主言语程序中的规那么。语句嵌入在宿主言语程序中的规那么。l4 数据控制言语,即数据控制言语,即SQL DCL,这一部分包,这一部分包括授括授l 权、完好性规那么的描画、事务控制等内容。权、完好性规那么的描画、事务控制等内容。 3.1.4 SQL3.1.4 SQL的特点的特点 l1 1SQLSQL具有非常灵敏和强

10、大的查询功能,其具有非常灵敏和强大的查询功能,其SELECTSELECT语句能完成相当复杂的查询操作。语句能完成相当复杂的查询操作。l2 2SQLSQL不是一个运用开发言语,它只提供对数不是一个运用开发言语,它只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能。报表生成等功能。l3 3SQLSQL是国际规范言语,有利于各种数据库之是国际规范言语,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现规范化。的数据独立性,有利于实现规范化。l4 4SQLSQL

11、的词汇不多,完成中心功能只用了的词汇不多,完成中心功能只用了9 9个英个英语动词,它的语法构造接近英语,因此容易学习和语动词,它的语法构造接近英语,因此容易学习和运用。运用。3.2 SQL3.2 SQL的数据定义的数据定义 l3.2.1 SQL方式的创建和撤销方式的创建和撤销 l3.2.2 根本数据类型根本数据类型 l3.2.3 根本表的创建、修正和撤销根本表的创建、修正和撤销 l3.2.4 索引的创建和撤销索引的创建和撤销 3.2.1 SQL3.2.1 SQL方式的创建和撤销方式的创建和撤销 lSQLSQL方式的创建可用方式的创建可用CREATE SCHEMACREATE SCHEMA语句定

12、义,其根语句定义,其根本句法如下:本句法如下:l CREATE SCHEMA CREATE SCHEMA方式名方式名AUTHORIZATIONAUTHORIZATION用户用户名名 lDROPDROP语句的句法如下:语句的句法如下:lDROP SCHEMADROP SCHEMA方式名方式名CASCADERESTRICTCASCADERESTRICTl其方式有两种:其方式有两种:lCASCADE CASCADE 级联式方式。级联式方式。lRESTRICT RESTRICT 约束式方式。约束式方式。 3.2.2 3.2.2 根本数据类型根本数据类型 lSQLSQL提供的主要数据类型也称为提供的主要

13、数据类型也称为“域域类型有:类型有:l1 1数值型:数值型:INTEGER,SMALLINTINTEGER,SMALLINTl NUMERIC NUMERICp,dp,dl2 2字符串型:字符串型:CHARCHARn nl 3 3 位串型位串型l 4 4 时间型时间型3.2.33.2.3根本表的创建、修正和撤销根本表的创建、修正和撤销1 1l1.1.根本表的创建根本表的创建 l例例3.13.1l 根本表根本表 T TT#T#,TNAMETNAME,TITLETITLE可用以下语句创可用以下语句创建:建:lCREATE TABLE TCREATE TABLE TlT#T# CHARCHAR4 4

14、 NOT NULLNOT NULL,l TNAME TNAME CHARCHAR8 8 NOT NULLNOT NULL,l TITLETITLECHARCHAR1010,l PRIMARYPRIMARY KEYKEYT#T#;3.2.33.2.3根本表的创建、修正和撤销根本表的创建、修正和撤销2 2l CREATE TABLE C CREATE TABLE ClC#C#CHARCHAR4 4,l CNAMECNAMECHARCHAR1010 NOT NULLNOT NULL,l T#T#CHARCHAR4 4,l PRIMARY PRIMARY KEYKEYC#C#,l FOREIGNKEY

15、 FOREIGNKEY T#T# REFERENCES TREFERENCES TT#T#;l CREATE TABLE SCREATE TABLE SlS#S#CHARCHAR4 4 NOT NULLNOT NULL,l SNAME SNAME CHARCHAR8 8 NOT NULLNOT NULL,l AGEAGESMALLINTSMALLINT,l SEX SEX CHARCHAR1 1, ,l PRIMARY PRIMARY KEYKEYS#S#;3.2.33.2.3根本表的创建、修正和撤销根本表的创建、修正和撤销3 3l CREATE TABLE SC CREATE TABLE S

16、ClS# S# CHARCHAR4 4,l C# C# CHARCHAR4 4,l SCORE SCORE SMALLINTSMALLINT,l PRIMARYPRIMARYKEYKEYS#S#,C#C#,l FOREIGN KEYFOREIGN KEYS#S#REFERENCES SREFERENCES SS#S#,l FOREIGN KEYFOREIGN KEYC#C#REFERENCES CREFERENCES CC#C#;3.2.33.2.3根本表的创建、修正和撤销根本表的创建、修正和撤销4 4l2 2根本表构造的修正根本表构造的修正l 对根本表的构造进展修正,即添加新的列、删除对根本

17、表的构造进展修正,即添加新的列、删除原有的列或修正数据类型、宽度等。原有的列或修正数据类型、宽度等。l1 1添加新的列用添加新的列用“ALTERADDALTERADD语句,其句法语句,其句法如下:如下:l ALTER TABLE ALTER TABLE ADD ADD l2 2删除原有的列用删除原有的列用“ALTERDROPALTERDROP语句,句语句,句法:法:l ALTER TABLE ALTER TABLE DROP DROP CASCADERESTRICTCASCADERESTRICTl3 3修正原有列的类型、宽度的句法如下:修正原有列的类型、宽度的句法如下:l ALTER TABL

18、E ALTER TABLE MODIFY MODIFY 3.2.33.2.3根本表的创建、修正和撤销根本表的创建、修正和撤销5 5l例例3.23.2lALTER TABLE S ADD ADDRESS VARCHARALTER TABLE S ADD ADDRESS VARCHAR3030;l例例3.3 3.3 lALTER TABLE S DROP AGE CASCADEALTER TABLE S DROP AGE CASCADE; l例例3.43.4l ALTER TABLE S MODIFY S# CHAR ALTER TABLE S MODIFY S# CHAR6 6; 3.2.33.

19、2.3根本表的创建、修正和撤销根本表的创建、修正和撤销6 6l根本表的撤销根本表的撤销l撤销语句的句法如下:撤销语句的句法如下:lDROP TABLE DROP TABLE CASCADERESTRICTCASCADERESTRICTl 此处的此处的CASCADECASCADE、RESTRICTRESTRICT的语义同前面句法中的语义同前面句法中的语义一样。的语义一样。 l例例3.5 3.5 需求撤销根本表需求撤销根本表S S。但只需在没有视图或约。但只需在没有视图或约束援用根本表束援用根本表S S中的列时才干撤销,否那么回绝撤中的列时才干撤销,否那么回绝撤销。可用以下语句实现:销。可用以下语

20、句实现:lDROP TABLE S RESTRICTDROP TABLE S RESTRICT;3.2.4 3.2.4 索引的创建和撤销索引的创建和撤销1 1 l索引的创建索引的创建l创建索引可用创建索引可用“CREATE INDEXCREATE INDEX语句实现。其句法如语句实现。其句法如下:下:lCREATE CREATE UNIQUEUNIQUE INDEX INDEX lON ON 列名表列名表 l索引的吊销索引的吊销l当索引不需求时,可以用当索引不需求时,可以用“DROP INDEXDROP INDEX语句吊语句吊销,其句法如下:销,其句法如下:l DROP INDEX DROP

21、INDEX 3.2.4 3.2.4 索引的创建和撤销索引的创建和撤销2 2 l例例3.6 lCREATE UNIQUE INDEX S#_INDEX ON SS#;lCREATE UNIQUE INDEX SC_INDEX l ON SCS# ASC,C# DESC;l例例3.7 l DROP INDEX S#_INDEX,SC_INDEX;3.3 SQL3.3 SQL的数据查询的数据查询 l3.3.1 SELECT查询语句的根本构造查询语句的根本构造l3.3.2 SELECT语句完好的构造语句完好的构造 l3.3.3 数据查询中的限制和规定数据查询中的限制和规定l3.3.4 条件表达式中的比

22、较操作条件表达式中的比较操作l3.3.5 嵌套查询的改良写法嵌套查询的改良写法l3.3.6 根本表的联接操作根本表的联接操作 l3.3.7 SQL3中的递归查询中的递归查询 3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造1 1 lSELECTFROMWHERESELECTFROMWHERE句型句型l在关系代数中最常用的式子是以下表达式:在关系代数中最常用的式子是以下表达式:lA1,AnA1,AnFFR1R1RmRml l针对上述表达式,针对上述表达式,l SQL SQL为此设计了为此设计了SELECTFROMWHERESELECTFROMWHERE句型:句

23、型:lSELECT A1SELECT A1,AnAnlFROM R1FROM R1,RmRmlWHERE FWHERE F3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造2 2在在WHEREWHERE子句的条件表达式子句的条件表达式F F中可运用以下运算符:中可运用以下运算符:算术比较运算符:,或!。算术比较运算符:,或!。逻辑运算符:逻辑运算符:ANDAND,OROR,NOTNOT。集合成员资历运算符:集合成员资历运算符:ININ,NOT INNOT IN。谓词:谓词:EXISTSEXISTS,ALLALL,SOMESOME,UNIQUEUNIQUE。聚合

24、函数:聚合函数:AVGAVG,MINMIN,MAXMAX,SUMSUM,COUNTCOUNT。F F中运算对象还可以是另一个中运算对象还可以是另一个SELECTSELECT语句,即语句,即SELECTSELECT语句可以语句可以嵌套。嵌套。另外,另外,SELECTSELECT语句的查询结果之间还可以进展集合的并、交、语句的查询结果之间还可以进展集合的并、交、差操作,其运算符是:差操作,其运算符是:UNIONUNION,INTERSECTINTERSECT,EXCEPTEXCEPT。SELECTSELECT语句能表达一切的关系代数表达式。语句能表达一切的关系代数表达式。3.3.1 SELECT3

25、.3.1 SELECT查询语句的根本构造查询语句的根本构造3 3lSELECTSELECT句型运用实例句型运用实例l例例3.8 3.8 教学数据中有四个根本表:教学数据中有四个根本表:l T TT#T#,TNAMETNAME,TITLETITLElC CC#C#,CNAMECNAME,T#T#lS SS#S#,SNAMESNAME,AGEAGE,SEXSEXlSCSCS#S#,C#C#,SCORESCOREl用户有一个查询语句用户有一个查询语句: : 检索学习课程检索学习课程号为号为C2C2课程的学生学号与姓名。课程的学生学号与姓名。l这个查询要从根本表这个查询要从根本表S S和和SCSC中检

26、索数据,中检索数据,因此可以有下面三种写法。因此可以有下面三种写法。3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造4 4l第一种写法衔接查询:第一种写法衔接查询:lSELECT S.S#, SNAMESELECT S.S#, SNAMElFROM S,SCFROM S,SClWHERE S.S#WHERE S.S#SC.S# AND C#SC.S# AND C#C2C2;l第二种写法嵌套查询:第二种写法嵌套查询:lSELECT S#SELECT S#,SNAMESNAMElFROM SFROM SlWHERE S# IN WHERE S# IN SELEC

27、T S#SELECT S#l FROM SC FROM SCl WHERE C# WHERE C#C2C2;不相关子查询不相关子查询3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造5 5l第二种写法嵌套查询另一种写法:第二种写法嵌套查询另一种写法:lSELECT S#SELECT S#,SNAME FROM S SNAME FROM S lWHERE C2 INWHERE C2 INSELECT C#SELECT C#l FROM SC FROM SCl WHERE S# WHERE S#S.S# S.S# ;l第三种写法运用存在量词的嵌套查询:第三种写法运

28、用存在量词的嵌套查询:lSELECT S#SELECT S#,SNAME FROM SSNAME FROM SlWHERE EXISTSWHERE EXISTSSELECT SELECT * * FROM SC FROM SCl WHERE SC.S# WHERE SC.S#S.S#S.S#l AND C# AND C#C2C2;相关子查询相关子查询3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造6 6l例例3.9 3.9 对于教学数据库中四个根本表对于教学数据库中四个根本表T T、C C、S S、SCSC,下面用,下面用SELECTSELECT语句表达语句

29、表达第第2 2章中例章中例2.62.6的各个查询语句。的各个查询语句。l 检索学习课程号为检索学习课程号为C2C2的学生学号的学生学号与成果。与成果。lSELECT S#SELECT S#,SCORESCORElFROM SCFROM SClWHERE C#WHERE C#C2C2;l 该语句已在例该语句已在例3.83.8中引见过。中引见过。3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造7 7l 检索至少选修检索至少选修LIULIU教师所授课程中一门课教师所授课程中一门课程的学生学号与姓名。程的学生学号与姓名。lSELECT S.S#SELECT S.S#

30、,SNAMESNAMElFROM SFROM S,SCSC,C C,T TlWHERE S.S#WHERE S.S#SC.S# AND SC.C#SC.S# AND SC.C#C.C# C.C# l AND C.T# =T.T# AND TNAME =LIU AND C.T# =T.T# AND TNAME =LIU;l与一样,本例也由多种写法,与一样,本例也由多种写法,l 例如,嵌套查询写法。例如,嵌套查询写法。3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造8 8l检索选修课程号为检索选修课程号为C2C2或或C4C4的学生学号。的学生学号。lSELECT

31、 S#SELECT S#lFROM SCFROM SClWHERE C# =C2 OR C# =C4WHERE C# =C2 OR C# =C4;l检索至少选修课程号为检索至少选修课程号为C2C2和和C4C4的学生学号。的学生学号。lSELECT X.S#SELECT X.S#lFROM SC AS XFROM SC AS X,SC AS YSC AS YlWHERE X.S# =Y.S# AND X.C# =C2 WHERE X.S# =Y.S# AND X.C# =C2 AND Y.C# =C4 AND Y.C# =C4;3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查

32、询语句的根本构造9 9l 检索不学检索不学C2C2课程的学生姓名与年龄。课程的学生姓名与年龄。lSELECT SNAMESELECT SNAME,AGE FROM SAGE FROM Sl WHERE S# NOT INWHERE S# NOT INSELECT S# FROM SCSELECT S# FROM SCl WHERE C#=C2WHERE C#=C2;l或者:或者:l SELECT SNAMESELECT SNAME,AGEAGE FROM SFROM SlWHERE NOT EXISTSWHERE NOT EXISTSlSELECT SELECT * * FROM SC FRO

33、M SCl WHERE SC.S#=S.S# AND C#=C2 WHERE SC.S#=S.S# AND C#=C2;l这个查询不能运用衔接查询写法。这个查询不能运用衔接查询写法。3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造1010l 检索学习全部课程的学生姓名。检索学习全部课程的学生姓名。l在表在表S S中找学生,要求这个学生学了全部课程。中找学生,要求这个学生学了全部课程。l换言之,在表换言之,在表S S中找学生,在中找学生,在C C中不存在一门课程,中不存在一门课程,这个学生没有学。这个学生没有学。l按照此语义,就可写出查询语句的按照此语义,就可

34、写出查询语句的SELECTSELECT表达方式:表达方式:lSELECT SNAMESELECT SNAMEFROM SFROM Sl WHERE NOT EXISTS WHERE NOT EXISTS / /* * C C表中不存在一门课程表中不存在一门课程 * */ /lSELECT SELECT * * FROM C FROM Cl WHERE NOT EXISTS WHERE NOT EXISTS / /* * 该学生没有学该学生没有学 * */ /l SELECT SELECT * *FROM SCFROM SCl WHERE SC.S#=S.S# AND SC.C#=C.C# WH

35、ERE SC.S#=S.S# AND SC.C#=C.C#;3.3.1 SELECT3.3.1 SELECT查询语句的根本构造查询语句的根本构造1111l 检索所学课程包含学号为检索所学课程包含学号为S3S3学生所学课程的学号。学生所学课程的学号。l 在在SCSC表中找一个学生表中找一个学生S#S#,l不存在不存在S3S3学的一门课学的一门课C#C#,l该学生没有学。该学生没有学。lSELECT DISTINCT S# FROM SC AS XSELECT DISTINCT S# FROM SC AS XlWHERE NOT EXISTSWHERE NOT EXISTS / /* * 不存在不

36、存在S3S3学的一门课学的一门课 * */ /lSELECT SELECT * * FROM SC AS Y FROM SC AS Yl WHERE Y.S#=S3 WHERE Y.S#=S3l AND NOT EXISTS AND NOT EXISTS/ /* * 该学生没有学该学生没有学 * */ /lSELECT SELECT * * FROM SC AS Z FROM SC AS Zl WHERE Z.S#=X.S# AND Z.C#=Y.C# WHERE Z.S#=X.S# AND Z.C#=Y.C#;SELECT语句的图示方式1l例例3.10 3.10 对于例对于例3.93.9中的

37、八个查询语句的图示中的八个查询语句的图示方式如下所述。方式如下所述。l 检索学习课程号为检索学习课程号为C2C2的学生学号与成果。的学生学号与成果。图中图中“P.P.即即printprint表示用户需求的数据,表示用户需求的数据,“C2C2为常量。为常量。SCS#C#SCOREP.C2P.SELECTSELECT语句的图示方式语句的图示方式2 2 检索学习课程号为检索学习课程号为C2C2的学生学号与姓名。的学生学号与姓名。图中,图中,“_X_X表示表格等值联接的条件。表示表格等值联接的条件。SS#SNAME AGE SEXSC S#C#SCOREP._XP._XC2SELECTSELECT语句

38、的图示方式语句的图示方式3 3 检索至少选修检索至少选修LIULIU教师所授课程中一门课程教师所授课程中一门课程 的学生学号与姓名。的学生学号与姓名。 S S#SNAMEAGESEXSCS#C#SCOREP._XP._X_YCC#CNAMET#TT# TNAME TITLE_Y_Z_ZLIUSELECTSELECT语句的图示方式语句的图示方式4 4 检索选修课程号为检索选修课程号为C2C2或或C4C4的学生学号。的学生学号。 检索至少选修课程号为检索至少选修课程号为C2C2和和C4C4的学生学号。的学生学号。SCS#C#SCOREP.C2P.C4SCS#C#SCOREP._XC2 _XC4SE

39、LECTSELECT语句的图示方式语句的图示方式5 5 检索不学检索不学C2C2课程的学生姓名与年龄。课程的学生姓名与年龄。 检索学习全部课程的学生姓名。检索学习全部课程的学生姓名。 SS#SNAME AGE SEXSC S#C#SCORE_XP.P. _XC2S S# SNAME AGE SEXC C#CNAME T#SC S# C# SCORE_XP. _Y _X _YSELECTSELECT语句的图示方式语句的图示方式6 6 检索所学课程检索所学课程 包含学生包含学生S3S3所学课程的学号。所学课程的学号。SCS#C#SCOREP._X S3_Y _X_Y3.3.2 SELECT3.3.

40、2 SELECT语句完好的构造语句完好的构造 1 1 1. 1. 聚合函数聚合函数 COUNTCOUNT* * 计算元组的个数计算元组的个数COUNTCOUNT列名列名 对一列中的值计算个数对一列中的值计算个数SUMSUM列名列名 求某一列值的总和此列的求某一列值的总和此列的 值必需是数值型值必需是数值型AVGAVG列名列名 求某一列值的平均值此列求某一列值的平均值此列 的值必需是数值型的值必需是数值型MAXMAX列名列名 求某一列值的最大值求某一列值的最大值MINMIN列名列名 求某一列值的最小值求某一列值的最小值3.3.2 SELECT3.3.2 SELECT语句完好的构造语句完好的构造

41、2 2l例例3.113.11l求男学生的总人数和平均年龄。求男学生的总人数和平均年龄。lSELECT COUNTSELECT COUNT* *,AVGAVGAGEAGElFROM SFROM SlWHERE SEX=MWHERE SEX=M;l统计选修了课程的学生人数。统计选修了课程的学生人数。lSELECT COUNTSELECT COUNTDISTINCT S#DISTINCT S#lFROM SCFROM SC;3.3.2 SELECT3.3.2 SELECT语句完好的构造语句完好的构造 3 32.SELECT2.SELECT语句完好的句法如下:语句完好的句法如下: SELECT SEL

42、ECT 目的表的列名或列表达式序列目的表的列名或列表达式序列 FROM FROM 根本表名和或视图序列根本表名和或视图序列 WHERE WHERE 行条件表达式行条件表达式 GROUP BY GROUP BY 列名序列列名序列 HAVING HAVING 组条件表达式组条件表达式 ORDER BY ORDER BY 列名列名ASC|DESCASC|DESC,3.3.2 SELECT3.3.2 SELECT语句完好的构造语句完好的构造 4 4l整个语句的执行过程如下:整个语句的执行过程如下:l1 1读取读取FROMFROM子句中根本表、视图的数据,子句中根本表、视图的数据,执行笛卡儿积操作。执行

43、笛卡儿积操作。l2 2选取满足选取满足WHEREWHERE子句中给出的条件表达子句中给出的条件表达式的元组。式的元组。l3 3按按GROUPGROUP子句中指定列的值分组,同时子句中指定列的值分组,同时提取满足提取满足HAVINGHAVING子句中组条件表达式的那些组。子句中组条件表达式的那些组。l4 4按按SELECTSELECT子句中给出的列名或列表达式子句中给出的列名或列表达式求值输出。求值输出。l5 5ORDERORDER子句对输出的目的表进展排序,子句对输出的目的表进展排序,按附加阐明按附加阐明ASCASC升序陈列,或按升序陈列,或按DESCDESC降序陈列。降序陈列。3.3.2 S

44、ELECT3.3.2 SELECT语句完好的构造语句完好的构造 5 5l例例3.12 3.12 对教学数据库的根本表对教学数据库的根本表l T T、C C、S S、SCSC中数据进展查询中数据进展查询和计算。和计算。l 统计每门课程的学生选修人数,要求显统计每门课程的学生选修人数,要求显示课程号、课程名和学生人数。示课程号、课程名和学生人数。lSELECT C.C#SELECT C.C#,CNAMECNAME,COUNTCOUNTS#S#lFROM CFROM C,SCSClWHERE C.C#=SC.C#WHERE C.C#=SC.C#lGROUP BY C.C#GROUP BY C.C#,

45、CNAMECNAME;3.3.2 SELECT3.3.2 SELECT语句完好的构造语句完好的构造 6 6 求每一教师每门课程的学生选修人数超求每一教师每门课程的学生选修人数超越越5050人,要求显示教师工号、课程号和学人,要求显示教师工号、课程号和学生人数。显示时,查询结果按人数升序陈列,生人数。显示时,查询结果按人数升序陈列,人数一样按工号升序、课程号降序陈列。人数一样按工号升序、课程号降序陈列。SELECT T#SELECT T#,C.C#C.C#,COUNTCOUNTS#S#FROM CFROM C,SCSCWHERE C.C#=SC.C#WHERE C.C#=SC.C#GROUP B

46、Y T#GROUP BY T#,C.C#C.C# HAVING COUNT HAVING COUNT* * 50 50ORDER BY 3ORDER BY 3,T#T#,C.C# DESCC.C# DESC;3.3.3 3.3.3 数据查询中的限制和规定数据查询中的限制和规定1 1l1. SELECT1. SELECT子句中的规定子句中的规定l SELECT SELECT子句描画查询输出的表格构造,子句描画查询输出的表格构造,即输出值的列名或表达式。其方式如下:即输出值的列名或表达式。其方式如下:lSELECTALL|DISTINCTSELECTALL|DISTINCT|* *l例例3.13

47、3.13 在根本表在根本表SCSC中检索男同窗选中检索男同窗选修的课程号。修的课程号。lSELECT DISTINCT C#SELECT DISTINCT C#lFROM SFROM S,SCSClWHERE S.S#=SC.S# AND SEX=MWHERE S.S#=SC.S# AND SEX=M;l 检索每个学生的出生年份。检索每个学生的出生年份。lSELECT S#SELECT S#,SNAMESNAME,2006AGE2006AGElFROM SFROM S;3.3.3 3.3.3 数据查询中的限制和规定数据查询中的限制和规定2 2l2 2列和根本表的改名操作列和根本表的改名操作l例

48、例3.14 3.14 在根本表在根本表S S中检索每个学生的出生中检索每个学生的出生年份,输出的列名为年份,输出的列名为STUDENT_NAMESTUDENT_NAME和和BIRTH_YEARBIRTH_YEAR。lSELECT SNAME AS STUDENT_NAME,SELECT SNAME AS STUDENT_NAME,l 2006-AGE AS BIRTH_YEAR 2006-AGE AS BIRTH_YEARlFROM SFROM S;3.3.3 3.3.3 数据查询中的限制和规定数据查询中的限制和规定3 3l3. 3. 集合的并、交、差操作集合的并、交、差操作lSELECTSE

49、LECT查询语句查询语句1 1 SELECTSELECT查询语句查询语句1 1l UNIONUNION UNION ALL UNION ALLl SELECTSELECT查询语句查询语句2 2 SELECTSELECT查询语句查询语句2 2lSELECTSELECT查询语句查询语句1 1 SELECTSELECT查询语句查询语句1 1l INTERSECTINTERSECT INTERSECT INTERSECT ALLALLl SELECTSELECT查询语句查询语句2 2 SELECTSELECT查询语句查询语句2 2lSELECTSELECT查询语句查询语句1 1 SELECTSELEC

50、T查询语句查询语句1 1l EXCEPTEXCEPT EXCEPT ALL EXCEPT ALLl SELECTSELECT查询语句查询语句2 2 SELECTSELECT查询语句查询语句2 23.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作1 1运算符运算符名称名称符号及格式符号及格式说说 明明算术比较算术比较判断判断 2比较两个表达式的值比较两个表达式的值之间判断之间判断 NOT BETWEEN1NOT BETWEEN AND AND 3搜索不在给定范围内的搜索不在给定范围内的数据数据一样判断一样判断 NOT LIKE NOT LIKE 查找不包含给定形式的查找不包含给

51、定形式的值值空值判断空值判断 IS NOT NULL IS NOT NULL判断某值是否为空值判断某值是否为空值之内判断之内判断 NOT IN NOT IN 判断某元组是否在某集合内判断某元组是否在某集合内限定比较限定比较判断判断 ALL|SOME|ANYALL|SOME|ANY 元组与集合中每某一个元组与集合中每某一个元组满足元组满足比较比较存在判断存在判断 NOT EXISTS NOT EXISTS 判断集合是否至少存在一个判断集合是否至少存在一个元组元组唯一判断唯一判断 NOT UNIQUE NOT UNIQUE 判断集合是否没有反复元组判断集合是否没有反复元组3.3.4 3.3.4 条

52、件表达式中的比较操作条件表达式中的比较操作2 2l1. 1. 算术比较操作算术比较操作l 条件表达式中可呈现条件表达式中可呈现符符, , , , ,!,!,也可以用,也可以用“BETWEEN AND BETWEEN AND 比比较运算符限定一个值的范围。较运算符限定一个值的范围。l例例3.15 3.15 在根本表在根本表S S中检索中检索18182020岁的学生姓岁的学生姓名。名。 SELECT SNAME FROM SSELECT SNAME FROM SlWHERE AGEWHERE AGE18 AND AGE18 AND AGE2020;l假设运用假设运用“BETWEEN AND BET

53、WEEN AND ,就更容易了,就更容易了解了:解了:lSELECT SNAME FROM SSELECT SNAME FROM SlWHERE AGE BETWEEN 18 AND 20WHERE AGE BETWEEN 18 AND 20;3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作3 3l2. 2. 字符串的匹配操作字符串的匹配操作l条件表达式中字符串匹配操作条件表达式中字符串匹配操作符是符是“LIKELIKE。l在表达式中可运用两个通配符:在表达式中可运用两个通配符:l 百分号百分号% %: :与零个或多个字符组成与零个或多个字符组成的字符串匹配。的字符串匹配。

54、l 下划线下划线_ _: :与单个字符匹配。与单个字符匹配。l例例3.16 3.16 在在S S中检索以字符中检索以字符D D打头的学生打头的学生姓名。姓名。lSELECT SNAMESELECT SNAMElFROM SFROM SlWHERE SNAME LIKE D%WHERE SNAME LIKE D%;3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作4 4l3. 3. 空值的比较操作空值的比较操作lSQLSQL中允许列值为空,空值用关键字中允许列值为空,空值用关键字NULLNULL表示。表示。l例例3.17 3.17 在表在表S S中检索年龄为空值的学中检索年龄为

55、空值的学生姓名。生姓名。lSELECT SNAMESELECT SNAMElFROM SFROM SlWHERE AGE IS NULLWHERE AGE IS NULL;l在聚合函数中遇到空值时,除了在聚合函数中遇到空值时,除了COUNTCOUNT* *外,都跳过空值而去处置非空值。外,都跳过空值而去处置非空值。3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作5 5l4. 4. 集合成员资历的比较集合成员资历的比较l其方式如下:其方式如下:l元组元组 ININ集合集合l元组元组 NOT INNOT IN集合集合l例例3.18 3.18 在根本表在根本表S S和和SCSC中

56、检索至少不中检索至少不学学C2C2和和C4C4两门课程的学生学号。两门课程的学生学号。l SELECT S# FROM SSELECT S# FROM Sl WHERE S# NOT IN WHERE S# NOT INSELECT S# FROM SELECT S# FROM SCSCl WHERE C# IN WHERE C# IN C2,C4C2,C4;3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作6 6l5. 5. 集合成员的算术比较集合成员的算术比较l 其方式如下:其方式如下:l元组元组 SOME SOME集合集合l元组元组 ALL ALL集合集合l这里应该留意

57、,元组比较操作与字符串这里应该留意,元组比较操作与字符串比较类似。例如比较类似。例如a1a1,a2a2b1b1,b2b2,其意义与,其意义与l a1a1b1b1ORORa1a1b1b1ANDANDa2a2b2b2l等价。等价。3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作7 7l例例3.19 3.19 对根本表对根本表S S、SCSC、C C的数据进展检索。的数据进展检索。l 检索学检索学C2C2课程的学号与姓名。课程的学号与姓名。l SELECT S# SELECT S#,SNAME FROM SSNAME FROM Sl WHERE S# = SOME WHERE S

58、# = SOMESELECT S# FROM SCSELECT S# FROM SCl WHERE C# =C2 WHERE C# =C2;l 检索至少有一门成果超越学生检索至少有一门成果超越学生S4S4一门成果的学一门成果的学l 生学号。生学号。l SELECT DISTINCT S# FROM SC SELECT DISTINCT S# FROM SCl WHERE SCORE SOME WHERE SCORE SOMESELECT SCORE FROM SELECT SCORE FROM SCSCl WHERE S#=S4 WHERE S#=S4;3.3.4 3.3.4 条件表达式中的比

59、较操作条件表达式中的比较操作8 8 检索不学检索不学C2C2课程的学生姓名与年龄。课程的学生姓名与年龄。SELECT SNAMESELECT SNAME,AGE FROM SAGE FROM SWHERE S# ALLWHERE S# ALLSELECT S# FROM SCSELECT S# FROM SC WHERE C#= C2 WHERE C#= C2; 检索平均成果最高的学生学号。检索平均成果最高的学生学号。SELECT S# FROM SCSELECT S# FROM SCGROUP BY S#GROUP BY S# HAVING AVG SCORE = HAVING AVG SC

60、ORE = ALLALLSELECT AVGSELECT AVGSCORESCORE FROM SC FROM SC GROUP BY S# GROUP BY S#;3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作9 9l6 6集合空否的测试集合空否的测试l 其方式如下:其方式如下:lEXISTS EXISTS 集合集合lNOT EXISTS NOT EXISTS 集合集合l这些操作在例这些操作在例3.83.8、例、例3.93.9中已运用中已运用过,此处不再举例。过,此处不再举例。3.3.4 3.3.4 条件表达式中的比较操作条件表达式中的比较操作1010l7 7集合中反复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论