第三章 关系数据库查询语言SQL
SQL多表查询-语句

Sno 200215121 200215122 Sname 李勇 刘晨 Sdept CS CS
An Introduction to Database System
带有IN谓词的子查询(续)
将第一步查询嵌入到第二步查询的条件中
SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= „ 刘晨 ’); 此查询为不相关子查询。
1 6 7
6
自身连接(续)
查询结果:
Cno
1 3 5
Pcno
7 5 6
An Introduction to Database System
连接查询(续)
一、等值与非等值连接查询 二、自身连接 三、外连接 四、复合条件连接
An Introduction to Database System
三、外连接
嵌套查询求解方法
不相关子查询:
子查询的查询条件不依赖于父查询
由里向外 逐层处理。即每个子查询在上一级查询处理 之前求解,子查询的结果用于建立其父查询的查找条 件。
An Introduction to Database System
嵌套查询求解方法(续)
相关子查询:子查询的查询条件依赖于父查询
表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个
元组与该元组拼接起来,形成结果表中一个元组。 重复上述操作,直到表1中的全部元组都处理完毕
An Introduction to Database System
排序合并法(SORT-MERGE)
常用于=连接
首先按连接属性对表1和表2排序
关系数据库操作语言SQL(三)_真题(含答案与解析)-交互

关系数据库操作语言SQL(三)(总分100, 做题时间90分钟)一、选择题1.以下叙述正确的是______。
• A.字符串数据由英文字母、数字和各种符号组成• B.字符串数据由汉字、英文字母和数字组成• C.字符串数据由汉字、英文字母和各种符号组成• D.字符串数据由汉字、英文字母、数字和各种符号组成SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] 字符串数据由汉字、英文字母、数字和各种符号组成,因此本题答案为D。
2.SQL Server支持的准确型数据类型不包括______。
•**•**•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] 准确型数值是指在计算机中能够精确存储的数,SQL Server支持的准确型数据类型包括:Bigint、Int、Smallint、Tinyint、Bit、numeric(p,q)或decimal(p,q)。
近似型是用于表示浮点型数据的近似数据类型,包括float 和real。
所以本题的答案为D。
3.SQL Server支持的普通编码字符串的数据类型不包括______。
•**(n)•**(n)•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] SQL Server支持的普通编码字符串的数据类型包括char(n)、varchar(n)和text。
所以本题的答案为D。
4.设在SQL Server 2000中,某关系表需要存储职工的工资信息,工资的范围为2000~10000,设用整型类型存储。
下列数据类型中最合适的是______。
•**•**•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:B[解析] int数据类型所表示的数值范围从-231到231-1,也就是说,你可以用int数据类型来表达-2,147,483,648到2,147,483,647(即大约正负二十亿)之间的整数。
第5次课 关系数据库标准语言SQL_2_12.4

复合条件连接(续)
[例] 查询李江老师所教课程的课程名及最高分。
SELECT Cname 课程名,Max(Grade) 最高分 FROM Teacher ,Course ,SC /*多表连接*/ WHERE Teacher.Tno = Course.Tno
AND o = o AND Tname= ’李江’ ;
( SELECT Grade FROM SC WHERE Sno=‘201415122’ AND Cno=2)
ORDER BY Grade DESC
32
带有比较运算符的子查询(续)
例:查询“杨旭”教师所授课程的学生成绩表, 并按成绩从高到低排序。
SELECT Cno,Sno,Grade FROM SC WHERE Cno
[例] 查询选修2号课程且成绩在90分以上的所有学生学号 及姓名。
SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND
/* 连接谓词*/ o= ’2’ AND SC.Grade > 90;
/* 其他限定条件 */
▪ 子查询的限制 ➢不能使用ORDER BY子句,ORDER BY子句只能 对最终结果排序。
▪ 有些嵌套查询可以用连接运算替代
24
3.4.3 嵌套查询
一、 带有IN谓词的子查询
二、 带有比较运算符的子查询 三、 带有ANY(SOME)或ALL谓词的子查询 四、 带有EXISTS谓词的子查询
25
一、带有IN谓词的子查询
HAVING短语的条件中的查询称为嵌套查询。
22
嵌套查询(续)
SELECT Sname
关系数据库语言SQL(ch3-2)

left [outer] join 左外连接
左边表和右边表满足连接条件的记录取出为结果集,加上 左边表和右边表满足连接条件的记录取出为结果集, 左边表未匹配的记录
right [outer] join 右外连接
左边表和右边表满足连接条件的记录取出为结果集, 左边表和右边表满足连接条件的记录取出为结果集,加上 右边表未匹配的记录
SELECT Sno,Sname,Sdept , , FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= ‘ 刘晨 ’); ;
(8)带有ANY谓词的子查询 )带有 谓词的子查询
[例] 查询其他系中比信息系任意一个(其中某一个) 例 查询其他系中比信息系任意一 其中某一 学生年龄小的学生姓名和年龄. 学生年龄小的学生姓名和年龄 SELECT Sname,Sage , FROM Student WHERE Sage < ANY (SELECT Sage FROM Student WHERE Sdept= ' IS ') AND Sdept <> ' IS ' ; /* 注意这是父查询块中的条件 */
(3)自身连接 )
[例] 查询每一门课的间接先修课 即先修课的先修课 例 查询每一门课的间接先修课,
Course表结构为:Cno,Cname,Cpno,Ccredit 表结构为: 表结构为
SELECT o,SECOND.Cpno , FROM Course FIRST,Course SECOND , WHERE FIRST.Cpno = o; ;
(11) 带有 带有EXISTS谓词的子查询 谓词的子查询
第三章 结构化查询语言(数据库原理与应用)

DataBase
使用企业管理器定义表的关系
魏英
tutor_wei@
7952616
DataBase
定义表结构
例3.5:创建成绩表,其中该表的关系模式为: :创建成绩表,其中该表的关系模式为: 成绩(学号 课程编号,分数) 学号, 成绩 学号,课程编号,分数
DataBase
第三章 结构化查询语言
教学内容
掌握SQL的数据定义,操作和查询功能 的数据定义, 掌握 的数据定义 掌握SQL实现关系连接的操作 掌握 实现关系连接的操作 了解视图的概念
教学重点
数据查询
教学难点
聚集函数与子句
魏英
tutor_wei@
7952616
DataBase
魏英
tutor_wei@
7952616
DataBase
企业管理器
功能
启动, 启动,暂停或停止数据库服务器的实时服务
启动
开始|程序| 开始|程序|Microsoft SQL Server|企业管理器 | 6个系统数据库 个系统数据库 执行快捷菜单中打开表|返回所有行命令 执行快捷菜单中打开表|返回所有行命令 打开表 SQL Server 2000的数据存储在数据库中被组织成物理上与逻辑 的数据存储在数据库中被组织成物理上与逻辑 上的两个部分: 上的两个部分: 在物理上,一个数据库由一个或多个磁盘上的文件组成, 在物理上,一个数据库由一个或多个磁盘上的文件组成,这种物理 实现只对数据员可见, 实现只对数据员可见,对一般用户是透明的 在逻辑上,用户看到的是一张张表,视图, 在逻辑上,用户看到的是一张张表,视图,角色等用户可视的组件 tutor_wei@ 7952616 魏英
关系数据库查询语言SQL

关系数据库查询语⾔SQL授课⽅式:以下所有的例⼦都在sql server 中进⾏现场调试其执⾏结果,或者让学⽣上讲台练习,让学⽣体会其具体的含义第四章关系数据库查询语⾔SQL(8学时)第1节关系数据库标准语⾔SQL ——查询部分⼀、SQL概述1.SQL标准SQL(Structured Query Language):结构化数据库查询语⾔。
SQL作为⼀个ANSI标准,现在最新的标准是SQL99!是介于关系代数和关系演算之间的结构化查询语⾔,功能包括数据查询(Data Query )、数据操纵(Data Manipulation)、数据定义(Data Definition)、数据控制(Data Control)2.SQL的特点1)综合统⼀SQL语⾔集数据定义语⾔DDL、数据操纵语⾔DML、数据控制语⾔DCL功能于⼀体,语⾔风格统⼀。
可独⽴完成数据库⽣命周期中的全部活动,包括:定义关系模式、建⽴数据库、插⼊数据、查询、更新、维护、数据库重构、数据库安全性控制等⼀系列操作要求,为数据库应⽤系统开发提供了良好的环境。
由于关系模型中实体间连续军⽤关系表⽰,这种数据结构单⼀性带来了数据操作的统⼀,查找、插⼊、删除、修改等每⼀种操作只需要⼀种操作符,从⽽克服了⾮关系系统由于信息表⽰⽅式多样性带来的操作复杂性。
2)⾼度⾮过程化SQL语⾔只要提出“做什么”,⽆须指明“怎么做”!!⽤户⽆须了解存取路径,存取路径的选择及SQL语句的操作过程由系统⾃动完成。
减轻了⽤户的负担,提⾼了数据独⽴性。
3)⾯向集合的操作⽅式Sql 语⾔采⽤集合操作⽅式,不仅操作对象、查询结果可以是元组集合,⽽且⼀次插⼊、删除、更新操作的对象可是元组的集合。
4)以同⼀种语法结构提供两种使⽤⽅式既是⾃含式语⾔,⼜是嵌⼊式语⾔。
⾃含式语⾔:能独⽴的⽤于联机交互的使⽤⽅式,⽤户可以在终端键盘上直接键⼊SQL 命令对数据库进⾏操作。
在SQL SERVER 2000种现场演⽰SQL语句的操作。
数据库第3章

使用DROP子句删除指定的完整性约束条件 【例3-7】 删除student表学生姓名必须取惟一值的约束 条件。 ALTER TABLE student DROP UNIQUE(name); 使用MODIFY子句修改基本表的列定义 【例3-8】 将student 表name列的数据类型改为定长字符 串型。 ALTER TABLE student MODIFY name char(8) NOT NULL; 注意: (1)修改列定义时,要将原来的列级约束条件写上,否则 原有的列级约束会不起作用。 (2)修改列定义时,有可能会破坏已有的数据,应事先作 好备份工作。 (3)SQL未提供删除属性列的语句,只能采取间接的方法
3.2 数据定义
表3-1 SQL的数据定义语句 操作对象 数据库 操作方式 创建语句 CREATE DATABASE CREATE TABLE 删除语句 DROP DATABASE 修改语句 ALTER DATABASE
基本表 索引
视图
DROP
TABLE INDEX
VIEW
ALTER TABLE
CREATE INDEX DROP
3.2.4 建立索引 索引的概念 索引是建立在列上的一种数据库对象,它 对表中的数据提供逻辑顺序,当在数据库表中 搜索某一行时,可以通过使用索引来找到它的 物理位置。索引建立后,什么时候使用索引以 及使用哪一个索引(当有多个索引存在时), 由DBMS内部根据情况自行决定,不需要人员干 预。索引是动态的,每当数据库表的数据更新 一次,相应的索引也随之更新。
CREATE VIEW DROP
3.2.1 数据库的创建与删除 创建数据库 SQL使用命令CREATE DATABASE创建数据库,其一般语法 如下: CREATE DATABASE <数据库名>; 【例3-1】创建一个简单数据库。 CREATE DATABASE MyDb; 删除数据库 SQL使用命令DROP DATABASE删除一个或多个数据库,其 一般语法如下: DROP DATABASE <数据库名1> [,<数据库名2>][,…]; 【例3-2】删除数据库MyDb。 DROP DATABASE MyDb;
05-DBS第三章_1

SQL模式由模式名和拥有者的用户名或帐号确定 SQL模式由模式名和拥有者的用户名或帐号确定
CREATE SCHEMA TL AUTHORIZATION U1 U1;
2. SQL模式的撤销 SQL模式的撤销
第三章
关系数据库语言SQL
3.1
SQL的体系结构
补充: 补充:有关教学中书写所用符号的说明 为任选项, [a] : a为任选项,可有可无 ] 为任选项 a|b : 可在 、b选一个 | 可在a、 选一个 其中内容可重复0次 { }: 其中内容可重复 次~多次 <a>: > a为必选项 为必选项
<a|b>: 必须取 、b之一 | : 必须取a、 之一 a : 带下划线的 为缺省选项 带下划线的a为缺省选项
DROP SCHEMA <模式名 [CASCADE | RESTRICT] 模式名> 模式名
CASCADE:该模式下的数据库对象随模式而撤消 : RESTRICT:只当该模式下无元素时才可撤消 :只当该模式下无元素时才可撤消
DROP SCHEMA TL CASCADE;
第三章 关系数据库语言SQL 3.2 SQL的数据定义
存储文件2 存储文件
存储文件3 存储文件
存储文件4 存储文件
第五章 第三章
关系数据库语言SQL
3.1
SQL的体系结构
要点:p89要点:p89-90 一个SQL模式(Schema)是已命名的数据组, SQL模式(Schema)是已命名的数据组 *一个SQL模式(Schema)是已命名的数据组, 由表、授权、规则、 由表、授权、规则、约束等组成 SQL表 由行集组成, *一个SQL表(Table)由行集组成,行是列的序列, 一个SQL (Table)由行集组成 行是列的序列, 每列对应一个数据项 *表有三种类型: 三种类型: 表有三种类型 基表: 基表:实际存储在数据库中的表 视图:由若干基表或视图构成的表的定义→ 视图:由若干基表或视图构成的表的定义→虚表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20112011-2-25
主讲:王颂华
9
3.2 数据定义
3.2.3 索引的建立与删除
1.建立索引 1.建立索引 索引是数据库随机检索的常用手段,它实际上是记 录的关键字与其相应地址的对应表。借助于索引结构,可 以迅速查找到某个属性A 以迅速查找到某个属性A具有指定值的那些元组。对一个 基本表,可以按需要建立若干个索引,以便提供多种存取 路径。 建立索引的语句格式为: CREATE[UNIQUE][CLUSTER]INDEX<索引名 CREATE[UNIQUE][CLUSTER]INDEX<索引名 > ON<表名>(<列名1>[<次序>],[<列名2>[<次序 ON<表名>(<列名1>[<次序>],[<列名2>[<次序 >]]… >]]…);
3.2 数据定义
2)主关键字的定义 一个关系可能有多个候选关键字,但在定义基本表 时只能定义一个主关键字。一个关系的主关键字由一个或 几个属性构成,在CREATE TABLE中声明主关键字有两 几个属性构成,在CREATE TABLE中声明主关键字有两 种方法: (1)在列出关系模式的属性时,在属性及其类型后加 上保留字PRIMARY KEY,表示该属性是主关键字。 上保留字PRIMARY KEY,表示该属性是主关键字。 (2)在列出关系模式的所有属性后,再附加一个声明: PRIMARY KEY(<属性1>[,<属性2>,…]) KEY(<属性1 ,<属性2>,… 如果关键字由多个属性构成,则必须使用第二种方 法。
20112011-2-25 主讲:王颂华 12
3.3 数据查询
3.3.1 单表查询
在对单独的一个关系进行查询时,可以查询表中的 一到多个列,也可以按条件查询表中的记录,还可以对查 询结果进行排序,使用计算函数对查询数据进行汇总,使 用分组子句对查询结果进行分组计算等。 1. 查询表中的列 1)查询全部列 【例3-10】 选择Stu表中的所有列。 10】 选择Stu表中的所有列。 SELECT Sno,Sname,Ssex,Sbirth,Sdept FROM Stu 在本例中,一一列出所有属性名的方法太烦琐了, 20112011-2-25 13 主讲:王颂华 可用通配符“ 可用通配符“*”简化表示。 SELECT * FROM Stu
20112011-2-25
主讲:王颂华
14
3.3 数据查询
2. 查询表中的记录 1)查询满足条件的元组 查询满足条件的元组是通过WHERE子句实现的。 查询满足条件的元组是通过WHERE子句实现的。 在查询时,主要使用以下一些运算符来给出查询条件,包 括比较运算符:= 括比较运算符:=,>,<,>=,<=,< >;字符匹配 >=,<=, >;字符匹配 运算符:LIKE, 运算符:LIKE,NOT LIKE;确定范围运算符: LIKE;确定范围运算符: BETWEEN AND,NOT BETWEEN AND;集合成员运 AND, AND;集合成员运 算符:IN, 算符:IN,NOT IN;逻辑运算符:NOT,AND,OR和 IN;逻辑运算符:NOT,AND,OR和 判断空值的IS NULL, 判断空值的IS NULL,IS NOT NULL。 NULL。 【例3-13】 查询Study表中课程号为C2的学生学号与成 13】 查询Study表中课程号为C2的学生学号与成 绩。
20112011-2-25
主讲:王颂华
6
3.2 数据定义
3)外部关键字的定义 外部关键字的定义是建立参照完整性的约束,它是 关系模式的另一种重要约束。根据参照完整性的概念,在 SQL中有两种方法用于说明一个外部关键字。 SQL中有两种方法用于说明一个外部关键字。 (1)如果外部关键字只有一个属性,可以在它的属性名 和类型后面直接用REFERENCES 和类型后面直接用REFERENCES说明它参照了某个表的 REFERENCES说明它参照了某个表的 某些属性(必须是主关键字) 某些属性(必须是主关键字)。 标准的语法格式是: REFERENCES<表名><属性> REFERENCES<表名><属性> (2)在CREATE TABLE语句的属性列表后面增加一个或 )在CREATE TABLE语句的属性列表后面增加一个或 几个外部关键字说明,其格式为: FOREIGN KEY<属性>REFERENCES<表名><属 KEY<属性>REFERENCES<表名><属 性> 20112011-2-25 7 主讲:王颂华 其中,第一个“属性”是外部关键字,第二个“ 其中,第一个“属性”是外部关键字,第二个“属 性”是被参照的属性。
20112011-2-25
SELECT Sno, Score FROM Study WHERE Cno='C2'
主讲:王颂华
15
3.3 数据查询
2)查询指定范围的记录 确定范围运算符BETWEEN AND和 确定范围运算符BETWEEN AND和NOT BETWEEN AND本质上是一个逻辑运算符,可以用来查 AND本质上是一个逻辑运算符,可以用来查 找值在(不在)指定范围内的元组。一般用于比较数值型 数据,列名或表达式的类型要与下限值或上限值的类型相 同。其中BETWEEN后边指定范围的下限,AND后边指定 同。其中BETWEEN后边指定范围的下限,AND后边指定 范围的上限。 【例3-17】 列出Study表中成绩在80~90分的学生名单。 17】 列出Study表中成绩在80~90分的学生名单。 SELECT Sno,Score FROM Study WHERE Score BETWEEN 80 AND 90
3.2 数据定义
2. 基本表的修改 对表结构进行增加或删除列的命令为: ALTER TABLE <表名> <表名> ADD<列名><数据类型>[列级完整性约束条件]| ADD<列名><数据类型>[列级完整性约束条件]| DROP<列级完整性约束条件>| DROP<列级完整性约束条件>| MODIFY<列名>< MODIFY<列名><数据类型>[列级完整性约束条 ><数据类型>[ >[列级完整性约束条 件]; 【例3-6】在表Stu中实现以下修改:(1)增加属性 在表Stu中实现以下修改:(1 Sage,(2)删除属性Sbirth,(3)将Sdept属性长度 Sage,(2)删除属性Sbirth,(3)将Sdept属性长度 改为15。 改为15。 (1)ALTER TABLE Stu ADD Sage SMALLINT; SMALLINT; 不论基本表中原来是否已经有数据,新增加的列一律 为空值。 (2)ALTER TABLE 主讲:王颂华DROP Sbirth; Stu Sbirth; 20112011-2-25 8 (3)ALTER TABLE Stu MODIFY Sdept CHAR(15); CHAR(15);
3.3 数据查询
2)查询部分列 【例3-11】 选择Stu表中的Sname、Sdept列。 11】 选择Stu表中的Sname、Sdept列。 SELECT Sname,Sdept FROM Stu 3)查询经过计算的列 【例3-12】查询Stu表中全部学生的姓名和年龄,去掉重 12】查询Stu Stu表中全部学生的姓名和年龄,去掉重 名的记录。 SELECT DISTINCT Sname AS StudentName, StudentName, YEAR(DATE())- YEAR(DATE())-YEAR(SBirth) AS Sage FROM Stu
20112011-2-25 主讲:王颂华 10
3.2 数据定义
2. 删除索引 当需要删除一个索引的时候,可使用下面的语句: DROP INDEX<索引名>; INDEX<索引名>
20112011-2-25
主讲:王颂华
11
3.3 数据查询
SQL的句型为SELECT-FROM-WHERE。 SQL的句型为SELECT-FROM-WHERE。 SELECT命令的语法格式为: SELECT命令的语法格式为: SELECT [ALL|DISTINCT] <目标列名>[AS <显示列名>][,<目标列名 目标列名>[AS <显示列名>][,<目标列名 >[AS <显示列名>]…] <显示列名>]… FROM <表名|视图>[AS <本地别名>] [,<表名| <表名|视图>[AS <本地别名>] [, 表名| 视图>] 视图>] [AS <本地别名>]…] <本地别名>]… [WHERE <条件表达式>] <条件表达式>] [GROUP BY <分组列名1>[,<分组列名 <分组列名1>[,<分组列名 2>…]][HAVING <分组条件表达式>] 2>… <分组条件表达式>] [ORDER BY <排序列名1>[ASC|DESC][,<排序选 <排序列名1>[ASC|DESC][,<排序选 项2>[ASC|DESC]…]] 2>[ASC|DESC]…
20112011-2-25
主讲:王颂华
2
3.2
数据定义
3.2.1 数据定义语句和数据类型
数据定义语句与数据类型是学习SQL数据定义功能的基 数据定义语句与数据类型是学习SQL数据定义功能的基 础。SQL的数据定义语句及所支持的数据类型见课本第35页。 础。SQL的数据定义语句及所支持的数据类型见课本第35页。