第三章 关系数据库标准语言SQL
数据库 第3章 结构化查询语言

Int
Varchar(30) char(35) Number DateTime DateTime
主键
否 外键 否 否 否
是
是 是 是 否 否
项目编号
项目名称 部门 最长工期 开始日期 结束日期
参照完整性约束 ASSIGNMENT表结构 列名
ProjectID EmployeeNumber HoursWorked Int Int Numeric(6,2)
6. 游标控制语言
游标控制语言(Cursor Control Language,CCL)是SQL语言 中用于数据库游标操作的语句。主要语句如下: DECLARE CURSOR – 定义游标 FETCH INTO – 提交游标数据 CLOSE CURSOR– 关闭游标
8
数据库原理及应用
电子科技大学
数据库中如何设计?
如果要删除EMPLOYEE中的某个行,若该行连接有ASSIGNMENT的外键值, 则禁止对EMPLOYEE行执行删除操作。在创建表时定义参照完整性约束。 如果要删除PROJECT中的某个行,则ASSIGNMENT中连接到PROJECT的对 应行数据也将随之被删除。在创建表时定义级联删除约束。 问题:上述项目数据库设计如何通过SQL实现?
20理数据库ProjectDB,其SQL语句如下:
CREATE DATABASE ProjectDB
2
数据库原理及应用
电子科技大学
三、SQL应用情况
绝大多数主流的关系型数据库管理系统采用了SQL标准语言实现数据库 操作 Oracle Sybase DB2 Microsoft SQL Server Access MySql 。。。 其中一些厂商数据库管理系统对SQL语句进行了扩展开发,如Sybase 、 Microsoft SQL Server将操作语言扩展为Transaction-SQL;Oracle将 操作语言扩展为PL/SQL。
工学关系数据库查询语言

An Introduction to Database System
综合统一(操纵三级模式)
SQL
数据安全 数据完整性
视图1
视图2
外模式
基表1
基表2
基表3
基表4
模式
存储文件1
存储文件2
内模式
An Introduction to Database System
5. 语言简捷,易学易用
表 1 SQL 语言的动词
SQL 功 能 数据定义 数据查询 数据操纵
数据控制
动词 CREATE,DROP,ALTER SELECT INSERT,UPDATE DELETE
常用完整性约束
主码约束: PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束
PRIMARY KEY与 UNIQUE的区别?
An Introduction to Database System
例题 (续)
[例2] 建立一个“学生选课”表SC,它 由学号Sno、课程号Cno,修课成绩 Grade组成,其中(Sno, Cno)为主码。
An Introduction to Database System
例题
[例5] 删除SC表 DROP TABLE SC;
An Introduction to Database System
二、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ALTER COLUMN <列名> <数据类型> ] [DROP COLUMN <列名> <数据类型> ];
数据库系统概论王珊第5版PPT第3章(3)

An Introduction to Database System
修改数据(续)
关系数据库管理系统在执行修改语句时会检查修
改操作是否破坏表上已定义的完整性规则
实体完整性 主码不允许修改 用户定义的完整性
NOT NULL约束
UNIQUE约束
值域约束
An Introduction to Database System
表3.8 逻辑运算符真值表
x
y
x AND y
x
OR
y
NOT
x
T
T T U U U F F
T
U F T U F T U
T
U F U U F F F
T
T T T U U T U
F
F F U U U T T
F
F
F
F
T
T表示TRUE,F表示FALSE,U表示UNKNOWN
An Introduction to Database System
UPDATE Student SET Sage= Sage+1;
An Introduction to Database System
3. 带子查询的修改语句
[例3.75] 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE Sno IN (SELETE Sno FROM Student WHERE Sdept= 'CS' );
3.4 数据查询
3.5 数据更新
3.6 空值的处理
3.7 视图
3.8 小结
An Introduction to Database System
3.5 数据更新
ch03D

作正确执行,保持数据库的一致性。
SQL语言并发控制能力: 提供事务、事务开始、事务结束、提交等概念
Database System
3. 恢复
恢复: 当发生各种类型的故障导致数据库
处于不一致状态时,将数据库恢复到一 致状态的功能。 SQL语言恢复功能: 提供事务回滚、重做等概念 (UNDO、REDO)
Database System
权限的级联回收
系统将收回直接或间接从U5处获得的对SC
表的INSERT权限: -->U5--> U6--> U7 收回U5、U6、U7获得的对SC表的INSERT
权限:
<--U5<-- U6<-- U7
Database System
小结:SQL灵活的授权机制
DBA拥有对数据库中所有对象的所有权限,并可以根据 应用的需要将不同的权限授予不同的用户。
例4
Database System
例题(续)
例3 把对表SC的查询权限授予所有用户
GRANT SELECT ON TABLE SC TO PUBLIC;
Database System
例题(续)
例4 把查询Student表和修改学生学号的 权限授给用户U4 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
指定了WITH GRANT OPTION子句: 获得某种权限的用户还可以把这种权限 再授予别的用户。
没有指定WITH GRANT OPTION子句: 获得某种权限的用户只能使用该权限, 不能传播该权限
Database System
例题
例1 把查询Student表权限授给用户U1
关系数据库的标准语言是

关系数据库的标准语言是SQL语言的发展可以追溯到20世纪70年代,当时IBM公司的工程师Edgar F. Codd提出了关系数据库的理论基础,并提出了关系数据库模型。
为了操作和管理这种新型的数据库,人们需要一种特定的语言,于是SQL应运而生。
SQL的发展经历了多个版本的演变,目前最新的版本是SQL:2016,它包含了许多新的特性和功能,使得SQL语言更加强大和灵活。
SQL语言主要包括以下几个方面的功能,数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)和事务控制语言(TCL)。
DDL用于定义数据库的结构,包括创建表、修改表结构、删除表等操作;DML用于对数据库中的数据进行操作,包括插入数据、更新数据、删除数据等操作;DQL用于查询数据库中的数据,包括简单查询、复杂查询、聚合查询等操作;DCL用于控制数据库的访问权限,包括授权、撤销权限等操作;TCL用于控制数据库的事务,包括事务的提交、回滚等操作。
SQL语言的特点包括,简单易学、功能强大、标准统一、灵活性高、可移植性强等。
由于SQL语言的标准化,不同的数据库管理系统都可以使用相同的SQL语句来进行操作,这样就方便了开发人员和数据库管理员在不同的数据库系统中进行工作。
除了标准的SQL语言外,不同的数据库管理系统还会有自己的扩展功能和特定的SQL语法。
例如,Oracle数据库的PL/SQL、Microsoft SQL Server的T-SQL 等,它们都是在标准SQL的基础上进行了扩展,为开发人员提供了更多的功能和工具。
总之,关系数据库的标准语言是SQL,它是管理和操作关系数据库的重要工具。
无论是开发人员、数据库管理员还是数据分析师,都需要掌握SQL语言,以便更好地进行数据库的管理和操作。
随着数据库技术的不断发展,SQL语言也在不断完善和壮大,成为数据库领域不可或缺的一部分。
第三章 结构化查询语言(数据库原理与应用)

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(三)(总分:88.00,做题时间:90分钟)一、(总题数:35,分数:88.00)1.查询单价在600元以上的主机板和硬盘的正确命令是______。
A) SELECT * FROM 产品 WHERE 单价>600 AND(名称='主机板' AND 名称='硬盘')B) SELECT * FROM 产品 WHERE 单价>600 AND(名称='主机板' OR 名称='硬盘')C) SELECT * FROM 产品 FOR 单价>600 AND(名称='主机板' AND 名称='硬盘')D) SELECT * FROM 产品 FOR 单价>600 AND(名称='主机板' OR 名称='硬盘')(分数:2.00)A.B. √C.D.解析:[解析] Visual FoxPro的SQL SELECT命令的语法格式中WHERE说明查询条件,即选择元组的条件。
逻辑运算AND表示“和”。
故本题选项B正确。
2.“教师表”中有“职工号”、“姓名”和“工龄”字段,其中“职工号”为主关键字,建立“教师表”的SQL命令是______。
A) CREATE TABLE 教师表 (职工号 C(10)PRIMARY,姓名C(20),工龄I)B) CREATE TABLE 教师表(职工号 C(10)FOREING,姓名C(20),工龄I)C) CREATE TABLE 教师表(职工号 C(10)FOREING KEY,姓名C(20),工龄I)D) CREATE TABLE 教师表(职工号 C(10)PRIMARY KEY,姓名C(20),工龄I)(分数:2.00)A.B.C.D. √解析:[解析] 关键字的设置应该使用PRIMARY KEY。
PRIMARY KEY列约束表明表中的一个列/字段只能包含唯一的(不重复)、非空的数值。
演示文稿数据库系统概论第五版
❖ 连接字段:连接谓词中的列名称
连接条件中的各连接字段类型必须是可比的,但名字不 必相同
第4页,共81页。
连接查询(续)
1.等值与非等值连接查询 2.自身连接 3.外连接 4.多表连接
第5页,共81页。
1. 等值与非等值连接查询
❖ 等值连接:连接运算符为=
[例 3.49] 查询每个学生及其选修课程的情况
Sdept CS CS CS CS CS MA IS
Cno 1 2 3 2 3
NULL NULL
Grade 92 85 88 90 80
NULL NULL
第21页,共81页。
连接查询(续)
1.等值与非等值连接查询
2.自身连接 3.外连接
4.多表连接
第22页,共81页。
4. 多表连接
❖ 多表连接:两个以上的表进行连接
连接条件的元组,找到后就将表1中的第一个元组与该 元组拼接起来,形成结果表中一个元组。当遇到表2中 第一条大于表1连接字段值的元组时,对表2的查询不再 继续
第9页,共81页。
连接操作的执行过程(续)
(2)排序合并法(续)
找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查 找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼
此查询为不相关子查询。
第32页,共81页。
带有IN谓词的子查询(续)
用自身连接完成[例 3.55]查询要求
SELECT S1.Sno, S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept = S2.Sdept AND
S2.Sname = '刘晨';
数据库系统第3章 结构化查询语言
5. 事务处理语言
事务处理语言(Transaction Process Language,TPL)是SQL 语言中用于数据库内部事务处理的语句。主要语句如下:
BEGIN TRANSACTION – 开始事务 COMMIT – 提交事务 ROLLBACK – 回滚事务
6. 游标控制语言
游标控制语言(Cursor Control Language,CCL)是SQL语言 中用于数据库游标操作的语句。主要语句如下:
DECLARE CURSOR – 定义游标 FETCH INTO – 提交游标数据 CLOSE CURSOR– 关闭游标
六、SQL语言的数据类型
1. 基本数据类型
字符:CHAR、VARCHAR、TEXT 整数:SMALLINT、INTEGER 浮点数:NUMBER(n,d)、FLOAT(n,d) 日期:DATE、DATETIME 货币:MONEY 2. 不同数据库所支持数据类型 Access的数据类型见表3-1所示 SQL Server的数据类型见表3-2所示 MySQL的数据类型见表3-3所示
3. 数据查询语言 数据查询语言(Data Query Language,DQL)是SQL语言中用 于对数据库进行查询的语句。该语句只有Select一个语句, 但其变化范型较多。
4. 数据控制语言 数据控制语言(Data Control Language,DCL)是SQL语言中 用于对数据访问权进行控制的语句。主要语句如下: GRANT – 授予用户对数据对象的权限 DENY – 拒绝授予用户对数据对象的权限 REVOKE – 撤消用户对数据对象的权限
DBMS
(执行SQL)
I/O
数据
数据库
语言SQL
湖北工业大学计算机学院
2014年5月27日9时24分
Prin. and App. of Database
8
自然连接
• 等值连接的一种特殊情况,把目标列中重复的属性列去 掉。 [例35] 对[例34]用自然连接完成。
SELECT Student.Sno,Sname,Ssex,Sage, Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno;
1 6 7
6
4 2 4 3 4 2 4
Cno
Cname 数据库
Cpno
Ccredit
1 2 3 4 5 6 7
5 1 6 7 6
数学
信息系统 操作系统 数据结构 数据处理 PASCAL语言
4 2 4 3 4 2 4
湖北工业大学计算机学院
2014年5月27日9时24分
Prin. and App. of Database
2014年5月27日9时24分
Prin. and App. of Database
• [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND
[<表名2>.]<列名3>
2014年5月27日9时24分
湖北工业大学计算机学院
Prin. and App. of Database
3
连接查询 (续)
• 连接字段
– 连接谓词中的列名称为连接字段
– 连接条件中的各连接字段类型必须是可比的,但不必是相同 的
湖北工业大学计算机学院
2014年5月27日9时24分
Prin. and App. of Database
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1.2 SQL的特点 3.1.3 SQL的基本概念
3.1.2 SQL的特点
1.综合统一 集数据定义语言(DDL),数据操纵语言 (DML),数据控制语言(DCL)功能于一体 可以独立完成数据库生命周期中的全部活动:
定义关系模式,插入数据,建立数据库; 对数据库中的数据进行查询和更新; 数据库重构和维护 数据库安全性、完整性控制等
想一想:
数据库存储文件
只能有一个
主数据文件:包含数据库的启动信息,扩 展名为.MDF。 没有或多个 次要数据文件:除主数据文件以外的所有 数据文件,扩展名为.NDF 至少有一个 事务日志文件:用于保存恢复数据库的日志 信息,扩展名为.LDF 。
数据库对象
表:数据库中实际存储数据的对象。 属性 字段:纵向元素 元组 记录:横向元素 视图:虚表,提供浏览数据的不同方式。
SQL的特点(续)
5.语言简洁,易学易用
SQL功能极强,完成核心功能只用了9个动词。
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
3.2 学生-课程 数据库
学生-课程模式 S-T : 学生表: Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:
Course(Cno,Cname,Cpno,Ccredit)
学生选课表: SC(Sno,Cno,Grade)
Student表
学 号 Sno 200215121 200215122 200215123 200515125 姓 名 Sname 李勇 刘晨 王敏 张立 性 别 Ssex 男 女 女 男 年 龄 Sage 20 19 18 19 所在系 Sdept CS CS MA IS
指明所用数据库
列数据类型
SQL Server 2005提供28种数据类型。
数字数据类型 使用数字数据的数据类型。 两类:精确数字类型和近似数字类型
精确数字类型
整数类型 位数类型 货币类型
整数类型
最常用的数据类型之一。 bigint 长度 8字节
最大 int 最常用
smallint 2字节
tinyint 1字节
图形化向导创建 Transact-SQL语句创建
图形化向导创建 展开数据库→右击表→新建表
Transact-SQL语句创建 CREATE TABLE<表名> (<列名><数据类型>[列级完整性约束] [,<列名><数据类型>[列级完整性约 束]]… [,<表级完整性约束>])
use school_mis go create table 学生信息 “ , ”隔 ( 开 学号 int not null, 姓名 varchar(10) null, 班级编号 int null, 性别 varchar(5) null, 年级 varchar(5) null, 政治面貌 varchar(5) null, 民族 varchar(10) null, 籍贯 varchar(30) null, 学籍 varchar(5) null )
Real和Float数据类型
能存储非常大的数字,但容易产生舍入误差。
Real Float
存储空间
精确位数 范围
4个字节
7位 -3.40E-38 ~3.40E1E+308
字符数据类型 最常用的数据类型之一。 优点:可精确计算数 据占有空间; Char:使用固定长度存储字符,最长可以 缺点:空间浪费 容纳8000个字符。 Varchar:存储最长可达到随存储数据的字符数 8000个字符的 的不同而变化。 变长字符型数据。 8000字符不够用时使用 微软建议: Text:专门用于存储数量庞大的变长字符 使用Varchar(max)代替Text 数据。
维护数据库
修改数据库 修改数据库名称 不建议 ALTER DATABASE databaseName MODIFY NAME=newdatabaseName
ALTER DATABASE 教务管理系统 MODIFY NAME=School_MIS
删除数据库
使用SQL Server Management Studio 小心! 不会出现确认信息 Transact-SQL语句 DROP DATABASE database[,…n]
4字节
范围
-263~263-1 -231~231-1 -215~215-1 0~255
位数据类型
bit,存储1、0或null数据的数据类型。 货币数据类型
Money 长度 范围 4字节整数,4字节小数 Smallmoney 2字节整数,2字节小数
-922337203685477.5808 -214748.3648~ 214748.3648 ~ 922337203685477.5807
第三章 关系数据库标准语言 SQL
学习内容
SQL概述 数据定义 数据查询 数据更新 视图
3.1 SQL概述
SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言
SQL概述(续)
3.1.1 SQL 的产生与发展
SQL标准的进展过程
SQL/2008 SQL/2003
支持 XML,支持 Window 函数、 Merge 语句
SQL/2006
定义了SQL与XML (包含XQuery) 的关联应用 增强了它的安全性 ,主要在:简单的 数据加密,外键管 理,增强了审查, 改进了数据库镜像 ,加强了可支持性 。
3.1 SQL概述
3.1 SQL概述
3.1.1 SQL 的产生与发展
3.1.2 SQL的特点 3.1.3 SQL的基本概念
SQL的基本概念(续)
SQL支持关系数据库三级模式结构
SQL
视图1
视图2
外模式
基本表1
基本表2
基本表3
基本表4
模 式
存储文件1
存储文件2
内模式
SQL的基本概念(续)
基本表
本身独立存在的表,一个关系对应一个基本表 一个(或多个)基本表对应一个存储文件 一个表可以带若干索引
Transact-SQL语句创建
CREATE DATABASE 数据库名 [ ON [PRIMARY] “[ ]” 最简单创建数据库语句: [ ( NAME=数据文件的逻辑名, 表示可以省略的选 FILENAME=“数据文件存储路径” CREATE DATABASE 数据库名 项或参数 [,SIZE=数据文件的则始大小] [,MAXSIZE=文件的最大容量] [,FILEGROWTH=文件空间的增量])] ] [LOG ON [( NANE=日志文件的逻辑名,] FILENAME=“日志文件存储路径” [,SIZE=文件的则始大小] [,MAXSIZE=文件的最大容量] [,FILEGROWTH=文件空间的增量]) ] ]
存储过程和触发器:用存储过程完善应用 程序,提高应用程序的运行效率;用触发 器实现复杂的业务规则,保证数据完整性。
用户和角色:用户是对数据库有存取权限 的使用者;角色是一组数据库用户的集合。
数据库快照
数据库在某一时刻的照片。 一种数据库恢复手段,可以使在源数据库 损坏后,还原数据库到数据库快照前的状态。 仅可适用于企业版本,只能用TransactSQL语句创建。
Course表
课程号 Cno 1 2 3 4 5 6 7 课程名 Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 先行课 Cpno 5 1 6 7 学分 Ccredit 4 2 4 3 4 2 4
6
SC表
学号 Sno 200215121 200215121 200215121 200215122 200215122 课程号 Cno 1 2 3 2 3 成绩 Grade 92 85 88 90 80
3.1.2 SQL的特点 3.1.3 SQL的基本概念
SQL标准的进展过程
1987年
1986年 1975-1979年 1974年
被ISO接受,成为全球标准 公布第一个标准SQL/86
进行实验并实现
被提出
SQL标准的进展过程
SQL/99 SQL/86 SQL/89
单个文档
SQL/92
622页 增加了SQL调用接 口,SQL永久模块 1700页 扩展为框架、SQL 基础、调用接口、 永久存储模块、宿 主语言绑定、外部 数据的管理和对象 语言绑定等
创建数据库
创建数据库就是创建主数据文件和事务文件。
两种创建数据方式: 图形化向导创建 Transact-SQL语句创建
最多可创建 32767个数据库
图形化向导创建 对象资源管理器中→选择“数据库”节点 →右击→新建数据库→填写相应信息→确 定
设置名称 文件初始容量
容量不够时,以 何种方式增长
数据库存 放的地方
CREATE DATABASE 教务管理系统 ON ( NAME=教务管理系统_DATA, FILENAME=„D:\SQL\教务管理系统\教务管理系统_DATA.MDF‟, SIZE=5MB, 如果数据的大小基本不变, MAXSIZE=20MB, 通常不指定其具有自动增长 FILEGROWTH=5% 方式。 ) LOG ON ( NAME=教务管理系统_log, FILENAME=„D:\SQL\教务管理系统\教务管理系统_LOG.LDF‟, SIZE=2MB, MAXSIZE=10MB, FILEGROWTH=1MB )