关系数据库语言
关系数据库标准语言SQ
WHERE (职工.仓库号=仓库.仓库号) AND (工资>1230)
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市. 分析 条件:面积>400 联接条件:(职工.仓库号=仓库.仓库号) 查询涉及表:仓库,职工 查询结果字段:职工号,城市 语句:SELE 职工号,城市 FROM 仓库,职工 WHERE;
(面积>400) AND (职工.仓库号=仓库.仓库号)
3、嵌套查询
外查询的条件来自内查询的结果
在SQL语句中,一个SELECT-FROM-WHERE语句称 为一个查询块。将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的返回多个值 NOT IN :属于关系 联接条件:公共字段名 IN SELE 公共字段名 (相当于联接中条件:表1.公共字段名=表2.公共字 段名)
6、简单的计算查询
SQL不仅具有一般的检索能力,而且还有计 算方式的检索 用于计算检索的函数: COUNT()--- ------计数 SUM()--------------求和 AVG()---------求平均值 MAX()---------求最大值 MIN()----------求最小值
查询产生新字段
例4.10 找出和职工E4工资相同的所有职工. SELE 职工号 FROM 职工 WHERE 工资 =(SELE 工资 FROM 职工 WHERE 职工号 =“E4”) 注意:= 与 IN 之间的关系,等号可以用IN 来 替换,而IN不能用=替换 =:返回的值是一个具体的值 IN:返回的是多个值
4、几个特殊运算符
第四章 关系数据库标准语言SQL
罗盛
一、SQL概述
第3章:关系数据库标准语言SQL
例6:建立一个“课程”表Course. :建立一个“课程” Create table Course (Cno Cpno Char(4) Primary Key, , Char (4) , Cname Char (40) , Ccredit Smallint, , Foreign Key (Cpno) References Course(Cno) );
不论基本表中原来是否已有数据, 不论基本表中原来是否已有数据 , 新增加 的列一律为空值。 的列一律为空值。
例9:将年龄的数据类型改为整型。
ALTER TABLE Student Alter Column Sage Int; ;
修改原有的列定义有可能会破坏已有数据。 修改原有的列定义有可能会破坏已有数据。
group by:此短语将查询结果按某一列或某几 :
列的值进行分组。Having子句用于与group 列的值进行分组。Having子句用于与group by 子句用于与 子句配合使用,用于说明分组条件。 子句配合使用,用于说明分组条件。
查询分类
单表查询 连接查询 嵌套查询 集合查询
CREATE TABLE Student (Sno Ssex Sage Sdept
CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE, ,
CHAR(1) , INT, , CHAR(15)); ;
修改
Alter table <表名 表名> 表名
Add <新列名> <新列类型> (列宽度)[完整性约束] Drop Column <列名>|<完整性约束名> Alter Column <列名> <列类型> (列宽度) P87例8,例9,例10 , ,
vf第四章关系数据库标准语言SQL
结果中有重复值,如果要 去掉重复值只需要指定DISTINCT短语:
SELECT DISTINCT 工资 FROM 职工 DISTINCT 短语的作用是去掉查询结果中 的重复值。
例4.2检索仓库关系中的所有元组。
sele * from 仓库
*代表要显示的所有字段
• HAVING短语必须跟随GROUP BY使用,它 用来限定分组必须满足的条件;
• ORDER BY短语用来对查询的结果进行排序。
4.2.1简单查询
基于单个表的查询,可以有简单的查询条件。这 样的查询由SELECT和FROM短语构成无条件查询, 或由SELECT 、 from 、 WHERE短语组成条件查询。 例4.1从职工表中检索所有工资值。 SELECT 工资 FROM 职工 SELECT 职工号,工资 FROM 职工
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市。
SELE 职工号,城市 FROM 仓库,职工
WHERE(面积>400)AND(职工.仓库号= 仓库.仓库号)
4.2.3嵌套查询
基于多个关系的查询,这类查询所要求的结 果出自一个关系,但相关的条件却涉及多个关系。 例4.8哪些城市至少有一个仓库的职工工资为 1250元?
• 自然联接:当连接属性具有相同属性名,连接 条件取相等条件时,去掉得复属性的等值连接 称为自然连接。
SQL的核心是查询。SQL的查询命令也 称作SELECT命令,它的基本形式由 SELECT-FROM-WHERE查询块组成,多 个查询块可以嵌套执行。VFP的SQL SELECT命令的语法格式如下:(见书p128)
例4.3检索工资多于1230元的职工号。 Sele 职工号 from 职工 where 工资>1230
第3章 关系数据库标准语言SQL_第4版(1-3)
学分 Ccredit 4 2 4 3 4 2 4
SC表
学号 Sno
200215121 200215121 200215121 200215122 200215122
课程号 Cno
1 2 3 2 3
成绩 Grade
92 85 88 90 80
§3.3 数据定义
SQL的数据定义功能: 模式定义、表定义、视图 和索引的定义
被参照建立一个“学生选课”表SC CREATE TABLE SC Cno CHAR(4), Grade SMALLINT, 列级完整性约束条件, Sno是外码,被参照表是 Student
(Sno CHAR(9) REFERENCES Student(Sno) , 主码由两个属性构 成,必须作为表级 完整性进行定义
用户数据库投入运行后,可根据需要随时逐步修 改模式,不影响数据的运行。 数据操作符统一
2.高度非过程化
非关系数据模型的数据操纵语言“面向过程”,
必须制定存取路径
SQL只要提出“做什么”,无须了解存取路径。 存取路径的选择以及SQL的操作过程由系统自动 完成。
3.面向集合的操作方式
SQL
数据流(Data) 元数据流(Meta Data) 对应于视图和部 分基本表
视图1
视图2
外模式
对应于基本表
基本表1 基本表2 基本表3 基本表4
数据词典
(元数据)
模式
对应于存储 文件
存储文件1 存储文件2 内模式
SQL的基本概念(续)
基本表(BASE TABLE):
是独立存在的表, 一个关系对应一个基本表,
嵌入式语言:嵌入高级语言如C,COBOL, FORTRAN,PB等
《关系数据库SQL语言》
[DataName!]TableName [[AS] Local_Alias] [ON JoinCondition]…] [WHERE JoinCondition [AND JoinCondition…] [AND|OR FilterCondition [AND|OR FilterCondition…]]] [ORDER BY Order_Item [ASC|DESC][,Order_Item [ASC|DESC]…]] [GROUP BY GroupColumn [,GroupColumn…] [HAVING FilterCondition]] [TO SCREEN|FILE FileName [ADDITIVE]|PRINTER [PROMPT]] [INTO TABLE TableName|CURSOR CursorName|ARRAY ArrayName]
(1)简单条件查询
【例5-5】在Zgjk.dbf表中,查询基本工资在1000元以上(含 1000元)职工的姓名和部门(要求不重复显示)。
在命令窗口中键入:
SELECT DISTINCT 姓名,部门,基本工资 FROM Zgjk WHERE 基本工资>=1000
(2)复合条件查询
【例5-6】在Zgjk.dbf表中,查询家电部门已婚的职工的信息。
1000 AND 1200 该命令等价于:
SELECT * FROM Zgjk WHERE 基本工资>=1000 AND ;
基本工资<=1200
3.对查询结果进行排序
在SELECT-SQL命令中,使用ORDER BY子句,可以使查询结果按 指定要求排序。 命令格式:SELECT <列名表> FROM <表名> [WHERE <条件>]; ORDER BY <排序依据> [ASC|DESC] 说明: 排序依据:备注型数据和通用型数据不能作为排序依据。排序依据 可以是字段名、由AS子句命名的列标题(在ORDER BY子句中,不能 直接使用表达式和函数)和列序号(即该列在查询结果中的位置1,2, 3…)。 排序方式:ASC表示查询结果按照排序依据项的值升序排列, DESC表示查询结果按照排序依据项的值降序排列。默认排序方式为 ASC。 排序规则:数值按大小顺序,字母按“ a ” < “ A ” < “ b ” < “ B ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在 前“真”在后。
关系数据库标准查询语言SQL
SELECT Sname, ‘Year of Birth:’, 2008-Sage ,
ISLOWER(Sdept)
FROM Student ; 结果为:
Sname ‘ Yearof Birth:’ 2008-Sage ISLOWER(Sdept)
李勇 Yearof Birth: 1986
第三章关系数据库标准查询语言sql第三章第三章关系数据库标准语言关系数据库标准语言sqlsql结构化查询语言sqlstructuredquerylanguage是一种介于关系代数与关系演算之间的语言它具有查询操纵定义和控制功能是一种通用的功能极强的标准的关系数据库语言
第三章 关系数据库标 准查询语言SQL
例4:删除关于学号必须取唯一值的约束。 ALTER TABLE Student DROP UNIQUE(Sno);
3.删除基本表
基本格式: DROP TABLE〈表名〉
例5. 删除student表 DROP TABLE Student ;
3.2.2.建立与删除索引
1. 建立索引 基本格式: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>[,<列名>[〈次序>]]…..); 次序:ASC,DESC 例 6: 为Student, Course, SC 3个表 建立索引,Student
2.选择表中的若干元组
1).消除重复的行 例6.查询所有选修过课的学生学号。
SELECT Sno
FROM SC ;
Sno
Cno Grade
关系数据库语言
关系数据库语言关系数据库是一种以关系模型为基础的数据库管理系统,并且关系数据库语言是用来操作关系数据库的一种语言。
在关系数据库中,数据以表格的形式组织,并且通过行和列来表示。
关系数据库语言主要包括两个方面的内容:数据定义语言(DDL)和数据操作语言 DML)。
其中,DDL用于定义和管理数据库中的数据结构,包括创建表、定义关系、设置主键、外键等;而DML用于对数据库中的数据进行操作,包括插入、修改、查询、删除等。
在关系数据库中,使用SQL(Structured(Query(Language)作为数据库语言。
SQL 是一种通用的关系数据库语言,包括了DDL和DML两个部分。
通过SQL,用户可以对关系数据库进行创建、管理和查询等操作。
在DDL方面,用户可以使用SQL语句来创建数据库、创建表、设置主键和外键等。
例如,用户可以使用CREATE(DATABASE语句来创建一个新的数据库,使用CREATE(TABLE语句来创建一个新的表,使用ALTER(TABLE语句来对表结构进行修改等。
在DML方面,用户可以使用SQL语句来对数据库中的数据进行增删改查等操作。
例如,用户可以使用INSERT(INTO语句向表中插入新的数据,使用UPDATE语句修改表中的数据,使用DELETE(FROM语句删除表中的数据,使用SELECT语句查询表中的数据等。
同时,SQL也提供了一些操作符和函数,可以用于对数据进行计算和处理。
关系数据库语言的设计目标是简单、易用和灵活。
通过使用关系数据库语言,用户可以方便地对数据库中的数据进行管理和操作,实现数据的持久化和灵活的数据查询。
同时,关系数据库语言还具有很高的可扩展性,可以根据不同的需求进行扩展和定制。
总之,关系数据库语言是用于操作关系数据库的一种语言,包括了DDL和DML两个方面。
通过使用关系数据库语言,用户可以对数据库中的数据进行定义、管理和操作,实现数据的持久化和灵活的数据查询。
数据库原理 第三章:关系数据库标准语言SQL
例5:查询选修全部课程的学生姓名。
RANGE SC X Course CX GET W (Student.SN) : CXSCX (SCX.SNO=Student.SNO∧O=O)
1、除运算÷(Division,亦称商)
用途:除法运算同时从行和列的角度进行运算,在表达某 些查询时有用,适合于包含“全部”之类的短语的查询, 例如“查询已注册选修了所有课程的学生名字”。
定义:给定关系 R(X,Y),S(Y,Z),X,Y,Z为属 性列,关系R和关系S中的Y出自相同域集,则: R÷S={tr[X]|tr∈R∧Πy(S)Yx} 其中,Yx为x在R中的象集,x= tr[X]。
② 逻辑运算符:∧(与),∨(或),┐(非)
③ 表示执行次序的括号:()
其中,比较运算符的优先级高于逻辑运算符,可以使用()改
变它们的优先级。
例1:查询所有男学生的姓名。
GET W (Student.Sname) : Student. Ssex = „男’
例2:查询信息系(IS)中年龄小于20岁的学生的学号和年龄
例3:查询S3同学所选课程名
RANGE SC X Course CX GET W (ame):X CX (o=o∧X.Sno=‟S3‟)
此查询涉及两个关系,对两个关系(Course和SC)作用存在 量词,所以用了两个元组变量。
例4:查询至少选修一门其先行课为6号课程的学生名字
操作条件中使用量词时必须用元组变量 例1:查询S3同学所选课程号
关系数据库标准语言
例:查询考试成绩有不及格的学生的学号。
SELECT DISTINCT 学号 FROM 选课 WHERE 成绩<60; 这里使用了DISTINCT短语,当一个学生有多门课程不及格,他 的学号也只列一次。
(2)确定范围
谓词BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找属 性值在(或不在)指定范围内的元组,其中BETWEEN后是范围 的下限,AND后是范围的上限。 例:查询所有年龄在20岁到23岁之间的学生姓名、系别及其 年龄。
学号 95001
95001
95001
学号
95001 95002
95002
95002 95002
看书上的例子
2、查询满足条件的元组——条件查询
通过WHERE子句来实现, WHERE子句常用的查询条件有: 比较、确定范围、确定集合、字符匹配、空值与多重条件, 其谓词如书上P16所列。
(1)综合统一
SQL语言集DDL、DML、DCL的于一体,包括定义关系模式、录 入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性 控制等一系列功能。
(2)高度非过程化 用户无需了解存取路径,用户只需提出“做什么”,而不 必指明“怎么做”。存取路径的选择以及SQL语句的操作过 程由系统自动完成。 (3) SQL语言是一种面向集合的语言,每个命令的操作对 象是一个或多个关系,结果也是一个关系。 (4)以统一的语法结构提供两种使用方式——自含式和嵌 入式 自含式语言可以独立使用交互命令,适用于终端用户、 应用程序员和DBA; 嵌入式语言使其嵌入在高级语言中使用,供应用程序员 开发应用程序。
关系数据库标准语言SQL浙大城院数据库
05
数据查询与操作
简单查询
SELECT语句
01
用于从数据库中检索数据,可以指定要检索的列、表以及筛选
条件。
WHERE子句
02
用于指定筛选条件,可以根据列的值进行筛选。
ORDER BY子句
03
用于对查询结果进行排序,可以按照一个或多个列进行升序或
降序排序。
连接查询
INNER JOIN:返回两个表中匹配的行,只返回满 足条件的行。
课程涵盖关系数据库的基本概念、SQL语言 、数据库设计、数据库保护、数据库应用 开发等内容。
实验环境
师资力量
浙大城院配备了专业的数据库实验室,提 供Oracle等主流数据库软件,供学生进行 课程实验和实践操作。
课程组拥有经验丰富的教师团队,其中多 名教师具有博士学位和海外留学背景,为 学生提供优质的教学和指导。
触发器概述
触发器是一种特殊的存储过程,它与 表相关联,当表发生特定事件时自动 执行。
触发器可以用于实现数据的完整性、 安全性等控制。
创建触发器
使用CREATE TRIGGER语句创建触发器。
定义触发器的触发事件和触发时间。
编写触发器的SQL语句,实现特定功能。
管理触发器
01
02
03
使用ALTER TRIGGER语句修改 触发器。
RIGHT JOIN(RIGHT OUTER JOIN):返回右表 中的所有行,以及左表中匹配的行,如果没有匹配 的行,则结果中对应列的值为NULL。
LEFT JOIN(LEFT OUTER JOIN):返回左表中的 所有行,以及右表中匹配的行,如果没有匹配的行, 则结果中对应列的值为NULL。
FULL JOIN(FULL OUTER JOIN):返回左表和右 表中的所有行,如果没有匹配的行,则结果中对应 列的值为NULL。
数据库系统概论:第4章 关系数据库标准语言——SQL语言1
4)删除完整性约束
例:删除“Height”属性列上的CHECK约束。 ALTER TABLE Student DROP
CONSTRAINT Chk1;
27
5)删除属性列
例:删除Student表中新增加的“Height”属性列。 ALTER TABLE Student DROP COLUMN Height;
2
2、SQL语言应用情况
(1) Oracle、Sybase、Informix、Ingres、 DB2、SQL Server、Rdb等大型数据库管理系统 实现了SQL语言; (2) Dbase、Foxpro、Acess等PC机数据库管理 系统部分实现了SQL语言; (3)可以在HTML(Hypertext Markup Language, 超文本标记语言)中嵌入SQL语句,通过WWW访 问数据库; (4)在VC、VB、Delphi、PB也可嵌入SQL语句。
/*外键约束*/ Credit NUMBER);
21
例3:建立一个学生选课表SC,所有约束条件均为表
级完整性约束。
CREATE TABLE SC
( Sno CHAR(8),
Cno CHAR(8),
Grade NUMBER,
PRIMARY KEY(Sno,Cno),
/*主键约束*/
FOREIGN KEY(Sno) REFERENCES Student(Sno)
25
3)增加完整性约束
例:给Student表中“Height”属性列增加一 个CHECK约束,要求学生的身高要超过140厘 米才行。 ALTER TABLE Student ADD CONSTRAINT Chk1 CHECK(Height>140);
关系数据库语言SQL(ch)
LEFT JOIN(LEFT OUTER JOIN):返回左表中的 所有行,以及右表中满足连接条件的行。如果右表 中没有匹配的行,则返回NULL。
FULL JOIN(FULL OUTER JOIN):返回两个表中 的所有行,无论是否满足连接条件。如果某个表中 没有匹配的行,则返回NULL。
删除自定义函数
使用`DROP FUNCTION`语句删除不再需要的自定义函数。
视图创建及使用场景
01
02
03
04
创建视图
使用`CREATE VIEW`语 句定义视图名称、列名 和查询语句,将复杂的 SQL查询封装为可重用的 视图。
使用视图
在SQL查询中,通过视图 名称引用视图,简化查 询语句的编写。
修改表名
使用`ALTER TABLE`语句修改表 的名称。
删除数据库和表
删除数据库
使用`DROP DATABASE`语句删除现有的数据库 ,需要指定数据库名称。
删除索引
使用`DROP INDEX`语句删除现有的索引,需要 指定索引名。
删除表
使用`DROP TABLE`语句删除现有的表,需要指定 表名。
关系数据库语言sql(ch)
目录
• SQL语言概述 • 数据定义语言(DDL) • 数据操纵语言(DML) • 数据查询语言(DQL) • 数据控制语言(DCL) • 存储过程与触发器 • 函数与视图 • SQL优化与性能提升
01 SQL语言概述
SQL语言定义
1
SQL(Structured Query Language,结构化查 询语言)是用于管理关系数据库的标准编程语言。
第03章-关系数据库标准语言SQL
语句 CREATE
功能 创建数据库或数据库对象
ALTER
修改数据库或数据库对象
DROP
删除数据库或数据库对象
说明 不同数据库对象参数不同 不同数据库对象参数不同 不同数据库对象参数不同
SQL的组成(续) ❖ 数据操纵语言DML(Data Manipulation Language):用于执行对数据库检索和更新。
定义基本表(续)
❖ 表的完整性约束条件 创建表时可指定表的完整性约束条件,也称为约束: 列级完整性约束条件 完整性约束条件涉及到该表的当前一个属性列 表级完整性约束条件 完整性约束条件涉及到该表的一个或多个属性列
➢ RDBMS自动检查对表的操作是否违背表的完整性约束条件
学生表Student
数据库 模式
表 视图
模式 表
索引
定义模式(续)
❖ 基本格式: CREATE SCHEMA [<模式名>] AUTHORIZATION <用户名> CREATE、SCHEMA 、AUTHORIZATION为保留字 保留字习惯使用大写 CREATE SCHEMA 为定义模式的语句 <模式名>为所创建的模式的名称 尖括号表示用户提供的参数 方括号表示参数可选 AUTHORIZATION <用户名> 子句用于指定模式的所有者 <用户名>指定一个用户
❖ 也可以使用带指定参数值的命令创建数据库
3.3 数据定义
3.3.1 模式的定义与删除 3.3.2 基本表的定义、删除与修改 3.3.3 索引的建立与删除
定义模式
❖ 模式(SCHEMA) 定义模式实际上是定义了一个命名空间(或容器)。 在这个空间中可以定义该模式包含的数据库对象 例如基本表、视图、索引、存储过程等。 定义模式能更好的管理数据库中的对象
关系数据库语言
关系数据库的定义பைடு நூலகம்特点
数据组织
关系数据库使用表格形式来组织和存储数据, 每个表格包含不同的列和行。
事务处理
关系数据库提供事务处理功能,确保数据的一 致性和可靠性。
数据关系
通过设置关系和连接,可以将不同表格中的数 据关联起来,使其具有更强的逻辑性。
数据一致性
关系数据库通过约束和规则来保证数据的一致 性,避免数据冲突和错误。
据。
3
删除语句
4
使用DELETE语句从数据库中删除数据。
查询语句
使用SELECT语句从数据库中检索数据。
更新语句
使用UPDATE语句修改数据库中的数据。
SQL语句的高级用法
聚合函数
用于计算数据的总和、平均值、最大值等。
子查询
嵌套在其他查询中的查询,用于获取更复杂的结果。
连接查询
通过连接多个表格,检索和组合相关的数据。
总结和要点
关系数据库语言是管理和操作关系数据库的基本工具,具有广泛的应用和重要性。
排序和分组
按照特定的规则对数据进行排序和分组。
关系数据库语言的优缺点
优点
• 数据一致性 • 灵活性和扩展性 • 安全性和权限控制
缺点
• 复杂性 • 性能限制 • 有限的数据类型支持
使用关系数据库语言的实例
建立和管理数据库
使用DDL语句创建数据库和表格,管理数据库的结构。
检索和更新数据
使用SQL语句从数据库中检索数据,以及插入、更新和删除数据。
常用的关系数据库语言
1 结构化查询语言 (SQL) 2 数据定义语言 (DDL)
用于查询和操作关系数据 库中的数据,是最常用的 关系数据库语言。
关系数据库语言
•
•
三、多表查询 1、连接查询 from 子句中有多个表名。 例3.3.5: select sno,sname,cno,grade from student,enrolls where student.sno=enrolls.sno and grade=95 2、一般子查询 where 子句中包含另一个能独立运行查询语句。 例3.3.6: select sno,sname from student where sno = (select sno from enrolls where grade = 95); 特点: <1> 能独立运行。 <2> 只能运行一次。
5、SQL语言性质 (1)SQL语言是一种关系数据库语言, 提供数据的定义、查询、更新和控制等功能。 (2)SQL语言不是一个应用程序开发语言,只提供对数据库的操作能力, 不能完成屏幕控制、菜单管理、报表生成等功能, 可成为应用开发语言的一部分; (3)SQL语言不是一个DBMS,它属于DBMS语言处理程序。
•
• •
例3.3.10: select cname from COURSES C where '男'=ALL(select sex from enrolls,student where student.sno=enrolls.sno and enrolls.sno=C.sno); 特点: <1>子查询不能独立运行。 <2>子查询多次运行。 4、谓词 1)in: <表达式> in <子查询> 例3.3.11: select sno,sname from student where sno in (select sno from enrolls where grade = 95); 2)any:<表达式> <运算符> any <子查询> 例3.3.12: select sno,sname from student where sno=any (select sno from enrolls where grade = 95);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章关系数据库标准语言SQL考试时间:1 .试述SQL语言的特点。
(填空题)查看答案....(1)综合统一。
SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL 的功能于一体。
(2)高度非过程化。
用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
(3)面向集合的操作方式。
SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
(4)以同一种语法结构提供两种使用方式。
SQL语言既是自含式语言,又是嵌入式语言。
作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
(5)语言简捷,易学易用。
2 .SQL的中文全称是________________。
(问答题)查看答案....结构化查询语言3 .试述SQL的定义功能。
(填空题)查看答案....SQL的数据定义功能包括定义表、定义视图和定义索引。
SQL语言使用CREATE TABLE语句建立基本表,ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;使用CREATE INDEX语句建立索引,DROP INDEX语句删除索引;使用CREATE VIEW命令建立视图,DROP VIEW语句删除视图。
4 .SQL语言除了具有数据查询和数据操纵功能之外,还具有________和________的功能,它是一个综合性的功能强大的语言。
(问答题)查看答案....数据定义数据控制5 .在关系数据库标准语言SQL中,实现数据检索的语句命令是________。
(问答题)查看答案....SELECT6 .用SQL语句建立第2章习题5中的四个表。
(填空题)查看答案....对于S表:S( SNO,SNAME,STATUS,CITY);建S表CREATE TABLE S (SNO CHAR(3),SNAME CHAR(10),STATUS CHAR(2),CITY CHAR(10));P(PNO,PNAME,COLOR,WEIGHT);建P 表CREATE TABLE P (PNO CHAR(3),PNAME CHAR(10),COLOR CHAR(4),WEIGHT INT);J(JNO,JNAME,CITY);建J表CREATE TABLE J (JNO CHAR(3),JNAME CHAR(10),CITY CHAR(10));SPJ(SNO,PNO,JNO,QTY);建SPJ表CREATE TABLE SPJ (SNO CHAR(3),PNO CHAR(3),JNO CHAR(3),QTY INT);7 .在SQL语言的结构中,________有对应的物理存储,而________没有对应的物理存储。
(问答题)查看答案....基本表视图8 .针对上题中建立的四个表试用SQL语言完成第2章习题5中的查询。
(填空题)查看答案....(1)求供应工程J1零件的供应商号码SNO;SELECT SNO FROM SPJ WHERE JNO=‘J1’;(2)求供应工程J1零件P1的供应商号码SNO;SELECT SNO FROM SPJ WHERE JNO=‘J1’AND PNO=‘P1’;(3)求供应工程J1零件为红色的供应商号码SNO;SELECT SNO /*这是嵌套查询*/ FROM SPJ WHERE JNO=‘J1’AND PNO IN /*找出红色的零件的零件号码PNO */ (SELECT PNO FROM P /*从P表中找*/ WHERE COLOR=‘红’);或SELECT SNO FROM SPJ,P /*这是两表连接查询*/ WHERE JNO=‘J1’/*这是复合条件连接查询*/ AND SPJ.PNO=P.PNO AND COLOR=‘红’;(4)求没有使用天津供应商生产的红色零件的工程号JNO;*解析:读者可以对比第2章习题5中用ALPHA语言来完成该查询的解答。
如果大家理解了有关该题的解析说明,那么本题的解答可以看成是把关系演算用SQL来表示的过程。
GET W (J.JNO): ??SPJX( SPJX .JNO=J.JNO ? ?SX ( SX.SNO=SPJX .SNO ? SX .CITY='天津' ? ?PX(PX .PNO=SPJX .PNO ? PX .COLOR=' 红' )) 这里的第一种解法是使用多重嵌套查询,第二种方法的子查询是一个多表连接。
注意:从J表入手,以包含那些尚未使用任何零件的工程号。
SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN /*天津供应商的SNO*/ (SELECT SNO FROM S WHERE CITY=‘天津’) AND PNO IN /*红色零件的PNO*/ (SELECT PNO FROM P WHERE COLOR=‘红’));或SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ, S, P WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY=‘天津’AND P. COLOR=‘红’);//删除:本例中父查询和子查询均引用了Student表,可以像自身连接那样用别名将父查询中的Student表与子查询中的Student表区分开:// (5)求至少用了供应商S1所供应的全部零件的工程号JNO (类似于P113例44)。
*解析:本查询的解析可以参考第二章第5题,用ALPHA语言的逻辑蕴函来表达。
上述查询可以抽象为: 要求这样的工程x,使(?y) p ? q为真。
即:对于所有的零件y,满足逻辑蕴函p ? q:P表示谓词:“供应商S1供应了零件y”q表示谓词:“工程x 选用了零件y”即只要“供应商S1供应了零件y”为真,则“工程x选用了零件y”为真。
逻辑蕴函可以转换为等价形式:(?y)p ? q≡? (?y (?(p ? q ))≡? (?y (?(? p∨q)≡? ?y(p∧?q) 它所表达的语义为:不存在这样的零件y,供应商S1供应了y,而工程x没有选用y。
用SQL 语言表示如下:SELECT DISTINCT JNO FROM SPJ SPJZ WHERE NOT EXISTS /*这是一个相关子查询*/ (SELECT * /*父查询和子查询均引用了SPJ表*/ FROM SPJ SPJX /*用别名将父查询与子查询中的SPJ表区分开*/ WHERE SNO='S1' AND NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO AND SPJY.SNO=’S1’));9 .针对习题3中的四个表试用SQL语言完成以下各项操作:(1) 找出所有供应商的姓名和所在城市。
(2) 找出所有零件的名称、颜色、重量。
(3) 找出使用供应商S1所供应零件的工程号码。
(4) 找出工程项目J2使用的各种零件的名称及其数量。
(5) 找出上海厂商供应的所有零件号码。
(6) 找出使用上海产的零件的工程名称。
(7) 找出没有使用天津产的零件的工程号码。
(8) 把全部红色零件的颜色改成蓝色。
(9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(填空题)查看答案....(1) 找出所有供应商的姓名和所在城市。
SELECT SNAME, CITY FROM S; (2) 找出所有零件的名称、颜色、重量。
SELECT PNAME, COLOR, WEIGHT FROM P; (3) 找出使用供应商S1所供应零件的工程号码。
SELECT JNO FROM SPJ WHERE SNO=‘S1’; (4) 找出工程项目J2使用的各种零件的名称及其数量。
SELECT P.PNAME, SPJ.QTY FROM P, SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'; (5) 找出上海厂商供应的所有零件号码。
SELECT DISTINCT PNO FROM SPJ WHERE SNO IN (SELECT SNO FROM S WHERE CITY='上海'); (6) 找出使用上海产的零件的工程名称。
SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY='上海'; 或SELECT JNAME FROM J WHERE JNO IN (SELECT JNO FROM SPJ, S WHERE SPJ. SNO=S.SNO AND S.CITY='上海'); (7) 找出没有使用天津产的零件的工程号码。
SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO FROM S WHERE CITY=‘天津’));或SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ, S WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY=‘天津’);(8) 把全部红色零件的颜色改成蓝色。
UPDATE P SET COLOR='蓝' WHERE COLOR='红' ; (9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改。
UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6';(10) 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
DELETE FROM SPJ WHERE SNO='S2'; DELETE FROM S WHERE SNO='S2'; *解析:注意删除顺序,应该先从SPJ 表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。