版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第10章关系数据库标准语言章关系数据库标准语言SQL第第1010章关系数据库标准语言章关系数据库标准语言SQLSQL第第10章关系数据库标准语言章关系数据库标准语言SQL教学目标教学目标掌握掌握SQL修改表结构的规则与方法修改表结构的规则与方法 ;掌握掌握SQL修改数据的规则与方法修改数据的规则与方法 ;掌握掌握SQL数据查询功能的语句规则和特点。数据查询功能的语句规则和特点。重点与难点:表定义中数据完整性规则的设定、多表连表定义中数据完整性规则的设定、多表连接查询的方法与使用规则、在分组查询中使用函数的规则和接查询的方法与使用规则、在分组查询中使用函数的规则和方法、使用嵌套子查询的方法和规
2、则、综合应用方法、使用嵌套子查询的方法和规则、综合应用SQL数据查数据查询功能完成实际问题的能力。询功能完成实际问题的能力。 第第10章关系数据库标准语言章关系数据库标准语言SQL 10.1 10.1 SQL SQL 概述概述 第第10章关系数据库标准语言章关系数据库标准语言SQL SQL是是Structured Query Language的缩写,即结的缩写,即结构化查询语言,是关系数据库的标准语言。构化查询语言,是关系数据库的标准语言。 主要特点:主要特点: SQL是一种功能齐全的一体化语言。是一种功能齐全的一体化语言。 SQL是一种高度非过程化的语言是一种高度非过程化的语言 。 SQL语
3、言简洁,易学易用。语言简洁,易学易用。 语言共享语言共享 。第第10章关系数据库标准语言章关系数据库标准语言SQL第第10章关系数据库标准语言章关系数据库标准语言SQL随着关系数据库系统和随着关系数据库系统和SQLSQL语言应用的日益广泛,语言应用的日益广泛,SQLSQL语言的语言的标准化工作也在紧张革进行着,十多年来已制订了多个标准化工作也在紧张革进行着,十多年来已制订了多个SQLSQL标准;标准;1. 19821. 1982年,美国国家标准化局(年,美国国家标准化局(AMERICAN NATIONAL AMERICAN NATIONAL STANDARD INSTITUTESTANDARD
4、 INSTITUTE,简称,简称ANSIANSI)开始制定)开始制定SQLSQL标准;标准;2. 19862. 1986年,美国国家标准化协会公布了年,美国国家标准化协会公布了SQLSQL语言的第一语言的第一个标准个标准SQL86SQL86;3. 19873. 1987年,国际标准化组织(年,国际标准化组织(ISOISO)通过了)通过了SQL86SQL86标准;标准;4. 19894. 1989年,国际标准化组织(年,国际标准化组织(ISOISO)对)对SQL86SQL86进行了补充,进行了补充,推出了推出了SQL89SQL89标准;标准;5. 19925. 1992年,年,ISOISO又推出
5、了又推出了SQL92SQL92标准,也称为标准,也称为SQL2SQL2;6. 6. 目前目前SQL99SQL99(也称为(也称为SQL3SQL3)在起草中,增加了面向对)在起草中,增加了面向对象的功能。象的功能。第第10章关系数据库标准语言章关系数据库标准语言SQLSQL语言可以分成以下几组:语言可以分成以下几组:数据定义语言数据定义语言DDL(Data Definition Language):包括定义、:包括定义、修改与删除基本表及建立与删除索引等。修改与删除基本表及建立与删除索引等。数据操纵语言数据操纵语言DML(Data Manipulation Language):包括:包括插入、修
6、改与删除数据等。插入、修改与删除数据等。数据查询语言数据查询语言DQL(Data Query Language):包括单表查询、:包括单表查询、连接查询、嵌套查询等各种查询功能。连接查询、嵌套查询等各种查询功能。 数据控制语言数据控制语言DCL(Data Control Language):包括数据的:包括数据的安全性控制、数据的完整性控制、数据库的恢复及并发控安全性控制、数据的完整性控制、数据库的恢复及并发控制等功能。制等功能。第第10章关系数据库标准语言章关系数据库标准语言SQL第第10章关系数据库标准语言章关系数据库标准语言SQLSQLSQL语言的基本概念语言的基本概念 首先介绍两个基本
7、概念:基本表和视图。首先介绍两个基本概念:基本表和视图。 基本表(基本表(BASE TABLEBASE TABLE):是独立存在的表,不):是独立存在的表,不是由其它的表导出的表。一个关系对应一个基是由其它的表导出的表。一个关系对应一个基本表,一个或多个基本表对应一个存储文件。本表,一个或多个基本表对应一个存储文件。 视图(视图(VIEWVIEW):是一个虚拟的表,是从一个或):是一个虚拟的表,是从一个或几个基本表导出的表。它本身不独立存在于数几个基本表导出的表。它本身不独立存在于数据库中,数据库中只存放视图的定义而不存放据库中,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在
8、导出视图视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。在从视图中查询出来的数据也随之改变。在ACCESSACCESS中查询所建立起来的中查询所建立起来的”表表”就是视图就是视图. .第第10章关系数据库标准语言章关系数据库标准语言SQL第第10章关系数据库标准语言章关系数据库标准语言SQL 10.2 10.2数据定义数据定义第第10章关系数据库标准语言章关系数据库标准语言SQL一一. .创建表创建表格式:格式: CREATE TABLE ( (长度长度) PRIMARY KEY NOT
9、NULL, (长度长度) NOT NULL) 功能:功能:创建一个数据表的结构。创建一个数据表的结构。说明:说明: :要创建的数据表的名字。:要创建的数据表的名字。 :要创建的数据表的字段名和字段类型。:要创建的数据表的字段名和字段类型。 字段长度仅限于文本及二进制字段。字段长度仅限于文本及二进制字段。 PRIMARY KEY:表示将该字段定义为主键。:表示将该字段定义为主键。 NOT NULL:不允许字段值为空,而:不允许字段值为空,而NULL允许字段值为空。允许字段值为空。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.1 在职工管理数据库中建立一个数据表在职工管理数据库中
10、建立一个数据表“职工职工”,表结构由,表结构由职工号、姓名、性别、职称、部门、出生日期、婚否等字段组职工号、姓名、性别、职称、部门、出生日期、婚否等字段组成。并设置成。并设置“职工号职工号”为主键。为主键。 操作步骤如下:操作步骤如下: 创建创建“职工管理职工管理”数据库。数据库。 在在“职工管理职工管理”数据库窗口中选择数据库窗口中选择“查询查询”对象。对象。 双击双击“在设计视图中创建查询在设计视图中创建查询”,关闭弹出的,关闭弹出的“显示表显示表”对对话框,打开查询设计视图窗口。话框,打开查询设计视图窗口。 选择选择“查询查询”菜单中菜单中“SQL特定查询特定查询”下的下的“数据定义数据
11、定义”命命令项,打开令项,打开“数据定义查询数据定义查询”窗口。窗口。 在在“数据定义查询数据定义查询”窗口中输入窗口中输入SQL语句,每个数据定义查语句,每个数据定义查询只能包含一条数据定义语句。询只能包含一条数据定义语句。第第10章关系数据库标准语言章关系数据库标准语言SQL CREATE DATABASE 职工管理职工管理 CREATE TABLE 职工职工(职工号职工号 TEXT(5) PRIMARY KEY,姓姓名名 TEXT(4),性别性别 TEXT(1),职称职称 TEXT(4),部门部门 TEXT(8),出生出生日期日期 DATE,婚否婚否 LOGICAL) 保存查询为保存查询
12、为“数据表定义查询(职工)数据表定义查询(职工)”,查询建立完毕。,查询建立完毕。 运行查询。在设计视图中,单击工具栏上的运行查询。在设计视图中,单击工具栏上的“运行运行”按钮,按钮,执行执行SQL语句,完成创建表的操作。语句,完成创建表的操作。 在数据库窗口中单击在数据库窗口中单击“表表”对象,可以看到在对象,可以看到在“表表”列表框列表框中多了一个中多了一个“职工职工”表,这就是用表,这就是用SQL的定义查询创建的表。的定义查询创建的表。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.2在职工管理数据库中建立一个数据表在职工管理数据库中建立一个数据表“工资工资”,并通过,并
13、通过“职工号职工号”字段建立与字段建立与“职工职工”表的关系。表的关系。 CREATE TABLE 工资工资(职工号职工号 TEXT(5) PRIMARY KEY REFERENCES 职工职工, 工资工资 Single, 津贴津贴 Single, 所得税所得税 Single, 公积金公积金 Single, 水电费水电费 Single,应扣,应扣 Single, 实发实发 Single) 其中的其中的“REFERENCES 职工职工”表示与表示与“职工职工”表建立关系。表建立关系。第第10章关系数据库标准语言章关系数据库标准语言SQL格式:格式: DROP TABLE 功能:功能:删除指定的数
14、据表文件。删除指定的数据表文件。说明说明:一定要慎用一定要慎用DROP TABLE语句,一旦使用以后就无法恢语句,一旦使用以后就无法恢复表或其中的数据,此表上建立的索引也将自动删除,并且无复表或其中的数据,此表上建立的索引也将自动删除,并且无法恢复。法恢复。二二. . 删除表删除表第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.3 删除例删除例10.2建立的工资表。操作步骤如下:建立的工资表。操作步骤如下: 打开打开“数据定义查询数据定义查询”窗口。窗口。 输入删除表的输入删除表的SQL语句:语句: DROP TABLE 工资工资 单击工具栏上的单击工具栏上的“运行运行”按钮,
15、完成删除表的操作,按钮,完成删除表的操作,“工资工资”表将从表将从“职工管理职工管理”数据库窗口消失。数据库窗口消失。第第10章关系数据库标准语言章关系数据库标准语言SQL三、修改表的结构三、修改表的结构格式一:格式一: ALTER TABLE ADD (长度长度) , (长度长度)DROP ,ALTER (长度长度) , (长度长度) 功能:功能:修改指定的数据表的结构。修改指定的数据表的结构。说明:说明: :要修改的数据表的名字。:要修改的数据表的名字。 ADD子句用于增加新的字段。子句用于增加新的字段。 DROP子句用于删除指定的字段。子句用于删除指定的字段。 ALTER子句用于修改原有
16、字段的定义,包括字段名、数据类型和字子句用于修改原有字段的定义,包括字段名、数据类型和字段的长度。段的长度。 应注意应注意ADD子句、子句、DROP子句和子句和ALTER子句不能同时使用。子句不能同时使用。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.4 为职工表增加一个电话号码字段。操作步骤如下:为职工表增加一个电话号码字段。操作步骤如下: 在在“职工管理职工管理”数据库窗口中选择数据库窗口中选择“查询查询”对象。对象。 双击双击“在设计视图中创建查询在设计视图中创建查询”,关闭弹出的,关闭弹出的“显示表显示表”对对话框,打开查询设计视图窗口。话框,打开查询设计视图窗口。
17、选择选择“查询查询”菜单中菜单中“SQL特定查询特定查询”下的下的“数据定义数据定义”命命令项,打开令项,打开“数据定义查询数据定义查询”窗口。窗口。 在在“数据定义查询数据定义查询”窗口中,输入修改表结构的窗口中,输入修改表结构的SQL语句:语句: ALTER TABLE 职工职工 ADD 电话号码电话号码 Text(8) 单击工具栏上的单击工具栏上的“运行运行”按钮,完成修改表结构的操作。按钮,完成修改表结构的操作。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.5 将职工表的姓名字段的宽度由原来的将职工表的姓名字段的宽度由原来的6改为改为8,SQL语句如下:语句如下: A
18、LTER TABLE 职工职工 ALTER 姓名姓名 Text(8)例例10.6 删除职工表删除职工表“电话号码电话号码”字段,字段,SQL语句如下:语句如下: ALTER TABLE 职工职工 DROP 电话号码电话号码第第10章关系数据库标准语言章关系数据库标准语言SQL 10.3 10.3 数据操作数据操作第第10章关系数据库标准语言章关系数据库标准语言SQL一一. . 插入记录插入记录格式:格式: INSERT INTO () VALUES ()功能:功能:在指定的数据表的尾部添加一条新记录。在指定的数据表的尾部添加一条新记录。说明:说明: :要插入数据的表的名字。:要插入数据的表的名
19、字。 为数据表要插入新值的字段。为数据表要插入新值的字段。 VALUES(表达式清单)为数据表要插入新值的各字段的数据值。(表达式清单)为数据表要插入新值的各字段的数据值。 和和VALUES子句中(表达式清单)的个数和数据类子句中(表达式清单)的个数和数据类型要完全一致。型要完全一致。 若省略若省略,则数据表中的所有字段必须在,则数据表中的所有字段必须在VALUES子句子句中都有相应的值。中都有相应的值。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.7 在职工表尾部添加一条新记录。操作步骤如下:在职工表尾部添加一条新记录。操作步骤如下: 在在“职工管理职工管理”数据库窗口中,
20、打开数据库窗口中,打开“数据定义查询数据定义查询”窗口。窗口。 输入输入SQL语句:语句:INSERT INTO 职工职工(职工号职工号,姓名姓名,性别性别,职称职称,部门部门,出生日期出生日期,婚否婚否)VALUES(01001,陈周陈周,男男,教授教授,计算机计算机,#1958-03-05#,yes) 单击工具栏上的单击工具栏上的“运行运行”按钮,完成插入数据的操作。按钮,完成插入数据的操作。例例10.8 在职工表尾部插入第二条记录,在职工表尾部插入第二条记录,SQL语句如下:语句如下:INSERT INTO 职工职工 VALUES(03021,刘杨刘杨,女女,副教授副教授,管理管理,#1
21、962-06-18#,no)第第10章关系数据库标准语言章关系数据库标准语言SQL格式:格式: UPDATE SET =表达式表达式1 ,=表达式表达式2WHERE 功能:功能:根据根据WHERE子句指定的条件,对指定记录的字段值进行更新。子句指定的条件,对指定记录的字段值进行更新。说明:说明: :要更新数据的表的名字。:要更新数据的表的名字。 =是指用是指用的值替代的值替代的值,一次的值,一次可更新多个字段的值。可更新多个字段的值。 若省略若省略WHERE子句,则更新全部记录。子句,则更新全部记录。 一次只能在单一的表中更新记录。一次只能在单一的表中更新记录。二二. . 更新数据更新数据第第
22、10章关系数据库标准语言章关系数据库标准语言SQL例例10.9 计算工资表中的应扣和实发数。计算工资表中的应扣和实发数。 在在“职工管理职工管理”数据库窗口中,打开数据库窗口中,打开“数据定义查询数据定义查询”窗口。窗口。 输入输入SQL语句:语句: UPDATE 工资工资 SET 应扣应扣=所得税所得税+公积金公积金+水电费水电费, 实发实发=工资工资+补贴补贴-应扣应扣 单击工具栏上的单击工具栏上的“运行运行”按钮,完成更新数据的操作。按钮,完成更新数据的操作。第第10章关系数据库标准语言章关系数据库标准语言SQL格式:格式: DELETE FROM WHERE 功能:功能:根据根据WHE
23、RE子句指定的条件,删除表中指定的记录。子句指定的条件,删除表中指定的记录。说明说明: :要删除数据的表的名字。:要删除数据的表的名字。 若省略若省略WHERE子句,则删除表中全部记录。子句,则删除表中全部记录。 DELETE语句删除的只是表中的数据,而不是表的结构。语句删除的只是表中的数据,而不是表的结构。三三. . 删除数据删除数据例例10.10将职工表中职工号为将职工表中职工号为“03021”的记录删除。的记录删除。 在在“职工管理职工管理”数据库窗口中,打开数据库窗口中,打开“数据定义查询数据定义查询”窗口。窗口。 输入输入SQL语句:语句: DELETE FROM 职工职工 WHER
24、E 职工号职工号= 03021 单击工具栏上的单击工具栏上的“运行运行”按钮,完成删除数据的操作。按钮,完成删除数据的操作。第第10章关系数据库标准语言章关系数据库标准语言SQL 10.4 10.4 数据查询数据查询第第10章关系数据库标准语言章关系数据库标准语言SQL一一. SELECT. SELECT查询命令查询命令格式:格式: SELECT ALL|DISTINCT|TOP n PERCENT |,FROM WHEREGROUP BY HAVING ORDER BY ASC | DESC, ASC | DESC 第第10章关系数据库标准语言章关系数据库标准语言SQL功能:功能: 从从FR
25、OM子句列出的表或查询中,选择满足子句列出的表或查询中,选择满足WHERE子句中给出的条件的记录,然后按子句中给出的条件的记录,然后按GROUP BY子句(分组子句(分组子句)中指定字段的值分组,再提取满足子句)中指定字段的值分组,再提取满足HAVING 子句中子句中过滤条件的那些组,按过滤条件的那些组,按SELECT子句给出的字段名或字段子句给出的字段名或字段表达式求值输出。表达式求值输出。ORDER BY子句(排序子句)是对输出子句(排序子句)是对输出的目标表进行重新排序,并可附加说明的目标表进行重新排序,并可附加说明ASC(升序)或(升序)或DESC(降序)排列。(降序)排列。 第第10
26、章关系数据库标准语言章关系数据库标准语言SQL说明:说明: ALL:查询的结果中包含数据源中的所有记录。:查询的结果中包含数据源中的所有记录。 DISTINCT:查询的结果中不包含数据源中重复行的记录。:查询的结果中不包含数据源中重复行的记录。 :指定查询结果输出的字段,如果要包含数据源中的所:指定查询结果输出的字段,如果要包含数据源中的所有字段,可以使用通配符有字段,可以使用通配符“*”。 AS :如果在输出时不希望使用原来的字段名,可以用列:如果在输出时不希望使用原来的字段名,可以用列名称重新设置。名称重新设置。 FROM :指出查询的数据来源。:指出查询的数据来源。 WHERE :说明查
27、询条件,即选择记录的条件。:说明查询条件,即选择记录的条件。二二. . 简单查询简单查询格式:格式: SELECT ALLDISTINCT AS , AS FROM WHERE 1. 1. 基本查询基本查询 第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.11查询学生表的全部字段。操作步骤如下:查询学生表的全部字段。操作步骤如下: 在在“学生成绩管理学生成绩管理”数据库窗口中选择数据库窗口中选择“查询查询”对象。对象。 双击双击“在设计视图中创建查询在设计视图中创建查询”,关闭弹出的,关闭弹出的“显示表显示表”对对话框,打开查询设计视图窗口。话框,打开查询设计视图窗口。 选择选
28、择“视图视图”菜单的菜单的“SQL视图视图”命令项,打开命令项,打开“选择查询选择查询”窗口。窗口。 输入输入SQL语句:语句: SELECT * FROM 学生学生 保存查询,查询建立完毕。保存查询,查询建立完毕。 运行查询。运行查询。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.12 查询学生表中所有学生的姓名和截至统计时的查询学生表中所有学生的姓名和截至统计时的年龄,去掉重名。年龄,去掉重名。SQL语句如下:语句如下: SELECT DISTINCT 姓名姓名, YEAR(DATE()-YEAR(出出生日期生日期) AS 年龄年龄 FROM 学生学生例例10.13 查询
29、学生表中所有已通过四级的男生记录。查询学生表中所有已通过四级的男生记录。SQL语句如下:语句如下: SELECT * FROM 学生学生 WHERE 性别性别=男男 AND 四级通过四级通过=yes第第10章关系数据库标准语言章关系数据库标准语言SQL2. 2. 带特殊运算符的条件查询带特殊运算符的条件查询 SELECT语句可以使用的特殊运算符有:语句可以使用的特殊运算符有:(1)BETWEENAND运算符运算符格式:格式: NOT BETWEEN AND BETWEEN运算符用于检测字段的值是否介于指定的范围内。运算符用于检测字段的值是否介于指定的范围内。(2)IN 运算符运算符格式:格式:
30、 NOT IN(,) IN运算符用于检测字段的值是否属于表达式集合或子查询。运算符用于检测字段的值是否属于表达式集合或子查询。(3)LIKE运算符运算符格式:格式: LIKE LIKE运算符用于检测字段的值是否与样式字符串匹配。运算符用于检测字段的值是否与样式字符串匹配。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.14:查询学生表中入学成绩在查询学生表中入学成绩在550570之间的学号、姓名、入之间的学号、姓名、入学成绩。学成绩。SQL语句如下:语句如下: SELECT 学号学号, 姓名姓名, 入学成绩入学成绩 FROM 学生学生 WHERE 入学成绩入学成绩 BETWEE
31、N 550 AND 570上述语句的功能相当于:上述语句的功能相当于: SELECT 学号学号, 姓名姓名, 入学成绩入学成绩 FROM 学生学生 WHERE 入学成绩入学成绩= 550 AND 入学成绩入学成绩=570第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.15:查询学生表中学号为查询学生表中学号为070102和和070401的记录。的记录。SQL语句语句如下:如下:SELECT * FROM 学生学生 WHERE 学号学号 IN(070102, 070401)上述语句的功能相当于:上述语句的功能相当于:SELECT * FROM 学生学生 WHERE 学号学号=07
32、0102 OR 学号学号= 070401第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.16:查询学生表中姓查询学生表中姓“王王”的学生的记录。的学生的记录。SQL语句如下:语句如下: SELECT * FROM 学生学生 WHERE 姓名姓名 LIKE 王王*通配符通配符“*”表示零个表示零个或多个字符或多个字符“?”表示一个字符表示一个字符 第第10章关系数据库标准语言章关系数据库标准语言SQL3.3.计算查询计算查询 函 数 功 能COUNT()对指定字段的值计算个数对指定字段的值计算个数COUNT( (* *) )计算记录个数计算记录个数SUM()计算指定的数值列的和计
33、算指定的数值列的和AVG()计算指定的数值列的平均值计算指定的数值列的平均值MAX()计算指定的字符、日期或数值列中的最大值计算指定的字符、日期或数值列中的最大值MIN()计算指定的字符、日期或数值列中的最小值计算指定的字符、日期或数值列中的最小值说明:说明:(字段名)可以是字段名,也可以是(字段名)可以是字段名,也可以是SQL表达式。表达式。 上述聚合函数可以用在上述聚合函数可以用在SELECT 短语中对查询结果进行计算,也可以短语中对查询结果进行计算,也可以在在HAVING子句中构造分组筛选条件。子句中构造分组筛选条件。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.17:
34、在学生表中统计学生人数。在学生表中统计学生人数。SQL语句如下:语句如下:SELECT COUNT(*) AS 学生人数学生人数 FROM 学生学生例例10.18:查询学生表中男生入学成绩字段的平均值、最大值和最查询学生表中男生入学成绩字段的平均值、最大值和最小值。小值。SQL语句如下:语句如下:SELECT “男男” AS 性别,性别,AVG(入学成绩入学成绩) AS 入学平均分入学平均分 MAX(入学成绩入学成绩) AS 入学最高分入学最高分, MIN(入学成绩入学成绩) AS 入学最低分入学最低分 FROM 学生学生 WHERE 性别性别=男男第第10章关系数据库标准语言章关系数据库标准
35、语言SQL4. 4. 分组与计算查询分组与计算查询格式:格式:GROUP BY , HAVING 说明:说明: 分组关键字是分组的依据分组关键字是分组的依据, 可以是字段名,也可以是可以是字段名,也可以是SQL函数表达式,还可以是字段序号(从函数表达式,还可以是字段序号(从1开始)。开始)。 HAVING是对分组进行筛选的条件。是对分组进行筛选的条件。HAVING只能与只能与GROUP BY一起出现,不能单独使用。一起出现,不能单独使用。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.19:分别统计男、女学生人数和入学成绩的最高分和平均分。分别统计男、女学生人数和入学成绩的最高
36、分和平均分。SELECT 性别性别, COUNT(性别性别) AS 人数,人数,MAX(入学成绩入学成绩) AS 入学最高分入学最高分, AVG(入学成绩入学成绩) AS 入学平均分入学平均分 FROM 学生学生 GROUP BY 性别性别例例10.20:在成绩表中统计有在成绩表中统计有6个以上学生选修的课程。个以上学生选修的课程。SQL语句如下:语句如下:SELECT 课程号课程号, COUNT(*) AS 选课人数选课人数 FROM 成绩成绩 GROUP BY 课程号课程号 HAVING COUNT(*)=6第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.21:对对1988
37、年以后出生的学生分别按专业统计入学成绩,并年以后出生的学生分别按专业统计入学成绩,并输出入学平均成绩在输出入学平均成绩在560分以上的组。分以上的组。SELECT 专业专业, AVG(入学成绩入学成绩) AS 入学平均分入学平均分 FROM 学生学生 WHERE 出生日期出生日期=#1988-01-01# GROUP BY 专业专业 HAVING AVG(入学成绩入学成绩)=560说明:说明: HAVING与与WHERE的区别在于:的区别在于:WHERE是对表中所有记录进行是对表中所有记录进行筛选,筛选,HAVING是对分组结果进行筛选。在分组查询中如果既选用了是对分组结果进行筛选。在分组查询
38、中如果既选用了WHERE,又选用了,又选用了HAVING,执行的顺序是先用,执行的顺序是先用WHERE限定记录,限定记录,然后对筛选后的记录按然后对筛选后的记录按GROUP BY指定的分组关键字分组,最后用指定的分组关键字分组,最后用HAVING子句限定分组。子句限定分组。第第10章关系数据库标准语言章关系数据库标准语言SQL5. 5. 排序排序格式:格式:ORDER BY ASC | DESC , ASC | DESC TOP PERCENT说明:说明: ASC表示对查询结果按指定字段升序排序。表示对查询结果按指定字段升序排序。 DESC表示对查询结果按指定字段降序排序;表示对查询结果按指定
39、字段降序排序;ASC|DESC缺省缺省时默认值是升序。时默认值是升序。 TOP必须与必须与ORDER BY短语同时使用,表示从第一条记录开始,短语同时使用,表示从第一条记录开始,显示满足条件的前显示满足条件的前N个记录。选择个记录。选择PERCENT短语时,数值表短语时,数值表达式表示百分比。达式表示百分比。 第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.22 :在学生表中查询入学成绩在前在学生表中查询入学成绩在前3名的学生信息。名的学生信息。SQL语语句如下:句如下: SELECT TOP 3 * FROM 学生学生 ORDER BY 入学成绩入学成绩 DESC例例10.2
40、3:显示年龄最小的显示年龄最小的30%的学生的信息。的学生的信息。SQL语句如下:语句如下: SELECT TOP 20 PERCENT * FROM 学生学生 ORDER BY 出生日期出生日期 DESC第第10章关系数据库标准语言章关系数据库标准语言SQL SELECT命令支持多表之间的连接查询,并提供了专门的命令支持多表之间的连接查询,并提供了专门的JOIN子句。子句。格式:格式:SELECT FROM INNER JOIN ON WHERE 其中:其中:INNER JOIN用来连接左右两个用来连接左右两个指定的表,指定的表,ON用来指用来指定连接条件。定连接条件。三三. .连接查询连接
41、查询第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.24:在职工管理数据库中查询高级职称(教授或副教授)教师的姓名、在职工管理数据库中查询高级职称(教授或副教授)教师的姓名、基本工资、津贴和所得税。基本工资、津贴和所得税。SQL语句如下:语句如下: SELECT 姓名姓名, 工资工资, 津贴津贴, 所得税所得税 FROM 职工职工 INNER JOIN 工资工资 ON 职工职工.职工号职工号=工资工资.职工号职工号 WHERE 职称职称 IN(“教授教授”,“副教授副教授”) 或者:或者: SELECT 姓名姓名, 工资工资, 津贴津贴, 所得税所得税 FROM 职工职工, 工
42、资工资 WHERE 职工职工.职工号职工号=工资工资.职工号职工号 AND 职称职称 IN(“教授教授”,“副教副教授授”)“职工号职工号”是职工表和工资表的公共字段,是职工表和工资表的公共字段,“职工职工.职工号职工号=工资工资.职工职工号号”是连接条件。是连接条件。INNER JOIN 子句还可以嵌套,即在一个子句还可以嵌套,即在一个 INNER JOIN 之中,可以嵌套多个之中,可以嵌套多个INNER ON 子句。子句。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.25:输出所有学生每门课程的综合成绩单,要求给出学号、姓名、课程名和综合输出所有学生每门课程的综合成绩单,
43、要求给出学号、姓名、课程名和综合成绩信息。成绩信息。SQL语句如下:语句如下: SELECT 学生学生.学号学号, 姓名姓名, 平时平时*0.1+期中期中*0.2+期末期末*0.7 AS 综合成绩综合成绩 FROM 学生学生 INNER JOIN (成绩成绩 INNER JOIN 课程课程 ON 成绩成绩.课程号课程号=课程课程.课程号课程号) ON 学生学生.学号学号=成绩成绩.学号学号 或者:或者: SELECT 学生学生.学号学号,姓名姓名,课程名课程名,平时平时*0.1+期中期中*0.2+期末期末*0.7 AS 综合成绩综合成绩 FROM 学生学生,成绩成绩,课程课程 WHERE 学生
44、学生.学号学号=成绩成绩.学号学号 AND 成绩成绩.课程号课程号=课程课程.课程号课程号说明:说明:由于学号字段在两个表中都出现,为了防止二义性,在其列名前加上由于学号字段在两个表中都出现,为了防止二义性,在其列名前加上表名作为前缀,以示区别。如果列名是唯一的,则不必加前缀。表名作为前缀,以示区别。如果列名是唯一的,则不必加前缀。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.26:按各门课程期末平均成绩的降序输出每位学生的学号和期末平按各门课程期末平均成绩的降序输出每位学生的学号和期末平均成绩(保留小数均成绩(保留小数1位)。位)。SQL语句如下:语句如下: SELECT
45、成绩成绩.学号学号, ROUND(Avg(成绩成绩.期末期末),1) AS 期末平均成绩期末平均成绩 FROM 学生学生 INNER JOIN 成绩成绩 ON 学生学生.学号学号=成绩成绩.学号学号 GROUP BY 成绩成绩.学号学号 ORDER BY 2 DESC第第10章关系数据库标准语言章关系数据库标准语言SQL在在SQL语言中,当一个查询是另一个查询的条件时,即在一个语言中,当一个查询是另一个查询的条件时,即在一个SELECT语句的语句的WHERE子句中出现另一个子句中出现另一个SELECT语句,这语句,这种查询称为嵌套查询。种查询称为嵌套查询。通常把内层的查询语句称为子查询,调用子
46、查询的查询语句称通常把内层的查询语句称为子查询,调用子查询的查询语句称为父查询。为父查询。SQL语言允许多层嵌套查询,即一个子查询中还可语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。以嵌套其他子查询。子查询的子查询的SELECT语句中不能使用语句中不能使用ORDER BY子句,子句,ORDER BY子句只能对最终查询结果排序。子句只能对最终查询结果排序。四四. .嵌套查询嵌套查询第第10章关系数据库标准语言章关系数据库标准语言SQL1带有比较运算符的子查询带有比较运算符的子查询 带有比较运算符的子查询是指父查询与子查询之间用比较运带有比较运算符的子查询是指父查询与子查询之间用比较运
47、算符(算符(、=、=、)进行连接。)进行连接。例例10.27:查询所有参加查询所有参加“计算机计算机”课程考试的学生的学号。课程考试的学生的学号。SELECT 学号学号 FROM 成绩成绩 WHERE 课程号课程号= ( SELECT 课程号课程号 FROM 课程课程 WHERE 课程名课程名= 计算机计算机 )第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.28:检索所有入学成绩高于于海涛的学生的学号、姓名、性别和检索所有入学成绩高于于海涛的学生的学号、姓名、性别和入学成绩。入学成绩。 SELECT 姓名姓名, 性别性别, 入学成绩入学成绩 FROM 学生学生 WHERE 入
48、学成绩入学成绩 ( SELECT 入学成绩入学成绩 FROM 学生学生 WHERE 姓名姓名=于海涛于海涛) 例例10.29:显示入学成绩高于男生平均入学成绩的女生的学号、姓名和显示入学成绩高于男生平均入学成绩的女生的学号、姓名和平均成绩。平均成绩。 SELECT 学号学号, 姓名姓名, 入学成绩入学成绩 FROM 学生学生 WHERE 性别性别=“女女” AND入学成绩入学成绩= ( SELECT AVG(入学成绩入学成绩) FROM 学生学生 WHERE 性别性别=“男男”) 第第10章关系数据库标准语言章关系数据库标准语言SQL2带有带有IN谓词的子查询谓词的子查询格式:格式:NOT I
49、N()IN是属于的意思,是属于的意思,指定的字段内容属于子查询中任何一指定的字段内容属于子查询中任何一个值,运算结果都为真。个值,运算结果都为真。 例例10.30:查询所有参加查询所有参加“计算机计算机”课程考试的学生的学号、姓名课程考试的学生的学号、姓名和性别。和性别。 SELECT 学号学号, 姓名姓名, 性别性别 FROM 学生学生 WHERE 学号学号 IN ( SELECT 学号学号 FROM 成绩成绩 WHERE 课程号课程号= ( SELECT 课程号课程号 FROM 课程课程 WHERE 课程名课程名= 计算机计算机 )第第10章关系数据库标准语言章关系数据库标准语言SQL3带
50、有带有ANY或或ALL谓词的子查询谓词的子查询格式:格式: ANY | ALL()注意:注意:使用使用ANY或或ALL谓词时必须同时使用比较运算符谓词时必须同时使用比较运算符。例例10.31:查询入学成绩高于女生最低入学成绩的男生的学号、姓查询入学成绩高于女生最低入学成绩的男生的学号、姓名和入学成绩,名和入学成绩,SQL语句如下:语句如下: SELECT 学号学号, 姓名姓名, 性别性别, 入学成绩入学成绩 FROM 学生学生 WHERE 性别性别=“男男”AND 入学成绩入学成绩ANY ( SELECT 入学成绩入学成绩 FROM 学生学生 WHERE 性别性别=“女女”)用聚合函数来实现:
51、用聚合函数来实现:SELECT 学号学号, 姓名姓名, 性别性别, 入学成绩入学成绩 FROM 学生学生WHERE 性别性别=“男男” AND 入学成绩入学成绩= ( SELECT MIN(入学成绩入学成绩) FROM 学生学生 WHERE 性别性别=“女女”) 用聚合函数实现子查询通常比直接用用聚合函数实现子查询通常比直接用ANY或或ALL查询效率要高。查询效率要高。第第10章关系数据库标准语言章关系数据库标准语言SQL4带有带有EXISTS谓词的子查询谓词的子查询格式:格式:NOT EXISTS ()带有带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值谓词的子查询不返回任何数据,
52、只产生逻辑真值(true)或逻辑假值()或逻辑假值(false),即是否存在相应的记录。),即是否存在相应的记录。例例10.32:查询参加了查询参加了A02课程考试的学生学号和姓名。课程考试的学生学号和姓名。SQL语句语句如下:如下:SELECT 学号学号, 姓名姓名 FROM 学生学生WHERE EXISTS ( SELECT * FROM 成绩成绩 WHERE 成绩成绩.学号学号=学生学生.学号学号 AND 成绩成绩.课程号课程号= A02 );带带EXISTS的子查询只返回真值或假值,其输出项通常都用的子查询只返回真值或假值,其输出项通常都用 * 。第第10章关系数据库标准语言章关系数据库标准语言SQL例例10.33:查询参加了全部课程考试的学生学号和姓名。可将题目的意查询参加了全部课程考试的学生学号和姓名。可将题目的意思转换成:查询这样的学生,没有一门课程他没有成绩。思转换成:查询这样的学生,没有一门课程他没有成绩。SELECT 学号学号, 姓名姓名 FROM 学生学生WHERE NOT EXISTS ( SELECT *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西上饶市信州中等专业学校招聘编外聘用教师8人笔试题库汇编附答案详解
- 2026年西安碑林区图书馆就业见习招聘(8人)考前冲刺试卷(夺冠)附答案详解
- 2026浙江台州市中医院招聘后勤保障部-保安编外人员2人模拟试卷及参考答案详解(考试直接用)
- 2026财达证券股份有限公司河北分公司招聘6人模拟试卷及答案详解一套
- 2026云南中复连众(玉溪)复合材料有限责任公司招聘1人备考题库附参考答案详解AB卷
- 2026云南红河州蒙自惠源人力资源有限责任公司社会救助经办人员招聘1人备考题库附答案详解(能力提升)
- 浙江省宁波市2026届高三一模考试化学试卷(含答案)
- 2026年西咸新区泾河第七小学招聘教师(5人)模拟试卷(各地真题)附答案详解
- 2026年蒲江县面向社会公开招聘园区产业发展服务专员的(5人)备考题库含答案详解【培优B卷】
- 2026年华蓥市增量政策性岗位招募的(55人)考前冲刺密卷及完整答案详解(夺冠)
- 颅内占位切除术护理
- 散瞳相关知识
- 2024年陕西工业职业技术学院教师招聘笔试真题
- 2011桂林奥林匹克花园项目发展战略及2012年推广报告2
- 钢结构厂房的施工方案
- 公司售电业务管理制度
- JBT 7784-2024 隐极同步发电机用交流励磁机 技术规范(正式版)
- 《风电场工程规划报告编制规程》(NB-T 31098-2016)
- 园林绿化修剪培训课件
- 人教版七年级数学下册尖子生培优必刷题专题5.8平行线的性质与判定大题专项提升训练(基础篇重难点培优30题)(原卷版+解析)
- 山东省广播电视有线网络安全播出规章制度样本
评论
0/150
提交评论