数据库原理及应用 --“十一五”
国家级规划教材 1
第 3章 结构化查询语言- SQL
本章重点内容
SQL Server 2000查询分析器的使用
SQL语言的主要特点
SQL语言的基本构成
SQL语言的应用方法数据库原理及应用 --“十一五”
国家级规划教材 2
3.1.1 SQL的发展史
1974年 IBM圣约瑟实验室的 Boyce和
Chamberlin 为关系数据库管理系统
System-R设计的一种查询语言,当时称为 SEQUEL 语言 ( Structured English
Query Language),后简称为 SQL。
1981年 IBM推出关系数据库系统 SQL/DS
后,SQL得到了广泛应用 。
1986年美国国家标准协会 ( ANSI) 公布了第一个 SQL标准- SQL86。
1987年,ISO通过 SQL86标准 。
3.2 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 3
1989年,ISO制定 SQL89标准,SQL89标准在 SQL86基础上增补了完整性描述 。
1990年,我国制定等同 SQL89的国家标准 。
1992年,ISO制定 SQL92标准,即 SQL2。
1999年,ANSI制定 SQL3标准 。
在许多软件产品中,软件厂商都对 SQL
的基本命令集进行了扩充,将其扩展成嵌入式 SQL语言。 SQL Server 2000中使用 Transact-SQL语言与数据库服务器打交道。
3.1 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 4
3.1.2 SQL的特点
1,SQL( Structured Query Language) 全称是结构化查询语言,是一种关系数据库语言,
提供数据的定义,查询,更新和控制等功能 。
功能强大,能够完成各种数据库操作 。
2,SQL语言不是一个应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制,菜单管理,报表生成等功能 。
3,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现程序和数据间的独立性;有利于实施标准化;
4.书写简单、易学易用。
3.1 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 5
3.1.3 SQL的分类
1,数 据 定 义 语 言 ( DDL,Data Definition
Language)
创建,修改或删除数据库中各种对象,包括表,视图,索引等 。
操 作 对 象操 作 方 式创 建 修 改 删 除表 CREATE TABLE ALTER TABLE DROP TABLE
视 图 CREATE VIEW DROP VIEW
索 引 CREATE INDEX DROP INDEX
3.1 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 6
2,查询语言 ( QL,Query Language)
按照指定的组合,条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据 。
语句,SELECT… FROM… WHERE
3,数 据 操 纵 语 言 ( DML,Data
Manipulation Language )
对已经存在的数据库进行记录的插入,删除,修改等操作
语句,INSERT,UPDATE,DELETE
3.1 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 7
4,数 据 控 制 语 言 ( DCL,Data Control
Language)
用来授予或收回访问数据库的某种特权,控制数据操纵事务的发生时间及效果,对数据库进行监视
语句,GRANT,REVOKE,COMMIT,ROLLBACK
注意:在书写各种 SQL 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点
(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。
3.1 SQL语言基本知识数据库原理及应用 --“十一五”
国家级规划教材 8
3.2 实验环境 SQL Server 2000简介
3.2.1 数据库
SQL Server 2000成功安装后,安装程序会自动创建 3个系统数据库、一个临时数据库和两个样本数据库。
安装程序所建立的数据库及其日志文件如表 3-2所示。
数据库原理及应用 --“十一五”
国家级规划教材 9
表 3-2 系统数据库及其文件数据库 数据库文件 数据库日志文件系统数据库
master master.mdf master.ldf
model model.mdf model.ldf
msdb msdb.mdf msdb.ldf
临时数据库
tempdb tempdb.mdf tempdb.ldf
样本数据库
pubs pubs.mdf pubs.ldf
Northwind Northwind.
mdf
Northwind.l
df
数据库原理及应用 --“十一五”
国家级规划教材 10
3.2.1 数据库
1,master数据库
它从整体上控制 SQL Server系统和用户数据库应用程序的运行。
它所保存的信息包括所有登录标识、系统配置,SQL Server初始化设置、用户数据库及其初始化信息等,这些信息都存储在 master数据库的系统表中。
由于 master数据库中保存的都是系统管理和运行方面的重要信息,
所以系统管理员要设置权限,禁止普通用户在 master数据库创建用户对象。在每次创建、修改或删除数据库,或是执行了能够改 变 master数据库的系统的存储过程后,都应及时备份 master数据库。
2,model数据库
模型数据库,它为新建的用户数据库提供模板和原型,模型数据 库中包含了每个用户数据库所需要的系统表。
数据库原理及应用 --“十一五”
国家级规划教材 11
3.2.1 数据库
3,msdb数据库
msdb数据库支持 SQL Server代理服务操作,为其报警和任务调度以及记录操作员的操作提供存储空间。
4,tempdb数据库
这是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。 tempdb数据库是 SQL Server数据库系统中的一个全局共享空间,不管用户使用那一个数据库,他们所建立的所有临时表和存储过程都存储在 tempdb数据库中。 SQL Server每次启动时,tempdb数据库被重新建立。当用户与 SQL Server断开连接时,其临时表和存储过程自动被删除。
5,pubs和 Northwind数据库
这是两个样本数据库。
另外,如果配置了分布式数据库复制中的出版和订阅服务器后,将会在出现一个系统数据库:分布式数据库。在默认情况下,其数据库名为:
,Distribution”。
数据库原理及应用 --“十一五”
国家级规划教材 12
3.2.2 管理工具
1,查询分析器 ( Query Analyzer)
图形化的查询分析器工具,可以使用 SQL语句创建和操作数据库 。
2,导入和导出数据 ( Import and Export Data)
提供 SQL Sever 和其他数据源之间的数据转换服务 。
3,服务器管理 ( Service Manager)
SQL Sever服务器管理器 。
4,服务器网络实用工具 ( Server Network
Utility),服务器网络配置和参数设置的管理工具 。
3.2 SQL Server 2000简介数据库原理及应用 --“十一五”
国家级规划教材 13
5,客户网络实用工具 ( Client Network Utility)
用于管理客户端的 DB_Library,Net_Libraries
和用户自定义的网络连接配置 。
6,联机丛书 ( Books Online)
为用户提供 SQLSever 2000的联机帮助文档 。
7,企业管理器 ( Enterprise Manager)
SQL Sever企业管理器是一个具有图形界面的综合管理工具,完成绝大部分的数据库管理工作 。
8,事件探查器 ( Profiler)
事件探查器是从服务器捕获 SQL Sever事件的工具。
数据库原理及应用 --“十一五”
国家级规划教材 14
3.2.3 查询分析器
1,启动查询分析器窗口
启动查询分析器窗口有两种方式:一是通过,Microsoft SQL Server”菜单中的
,查询分析器,命令打开此窗口,二是通过 SQL Server的企业管理器窗口中的
,工具,菜单来打开此窗口 。
2.查询分析器工具栏
3.2 SQL Server 2000简介数据库原理及应用 --“十一五”
国家级规划教材 15
当前连接属性显示结果窗格对象搜索对象浏览显示估计执行计划功能选择装入 S Q L 脚本保存查询 / 结果插入模板剪切复制粘贴清除窗口查找撤消选择数据库执行模式解析查询执行查询取消查询数据库原理及应用 --“十一五”
国家级规划教材 16
( 1) 功能选择从中可以选择某种作业 。
( 2) 装入 SQL脚本打开一个对话框,装入 SQL脚本文件 ( 扩展名为,sql) 。
( 3) 保存查询 /结果保存查询内容或查询结果 。
( 4) 插入模板帮助用户选择并插入一种作业模板 。
( 5) 剪切将所选择内容存放到剪贴板中 。
查询分析器工具栏数据库原理及应用 --“十一五”
国家级规划教材 17
( 6) 复制将所选择内容复制到剪贴板中,所选内容不变 。
( 7) 粘贴将剪贴板中的内容粘贴到当前光标位置 。
( 8) 清除窗口清除,查询分析器,窗口中的内容,但不包括左边窗格中的对象 。
( 9) 查找在,查询分析器,窗口中查找所需要的内容 。
( 10) 撤消:撤消前面的操作 。
查询分析器工具栏数据库原理及应用 --“十一五”
国家级规划教材 18
( 11) 执行模式此按钮有一个下拉列表框,可以从中选择执行模式 。
( 12) 解析查询检索查询语句语法并执行 。
( 13) 执行查询单击此按钮,系统将开始执行查询 。
( 14) 取消查询的执行单击此按钮,系统将取消正在执行的查询 。
( 15) 选择数据库查询分析器工具栏数据库原理及应用 --“十一五”
国家级规划教材 19
( 16) 显示估计执行计划单击此按钮,系统将出现“预计执行计划”
( Estimated Execution Plan) 选项卡。
( 17) 对象浏览单击此按钮,系统将出现“对象浏览”
( Object Browser) 窗格。
( 18) 对象搜索单击此按钮,系统将出现“对象搜索”
( Object Search) 对话框。
( 19) 当前连接属性
( 20) 显示结果窗格查询分析器工具栏数据库原理及应用 --“十一五”
国家级规划教材 20
3.使用查询分析器执行 SQL语句实例
【 例 3-1】 在 jbqk表中插入记录 。
在查询编辑窗口输入 SQL语句,然后,按
,执行查询,按钮,执行结果如 下图所示:
SQL操作语句操作结果数据库原理及应用 --“十一五”
国家级规划教材 21
【例 3-2】 查询 jbqk表中的所有记录。
数据库原理及应用 --“十一五”
国家级规划教材 22
数据定义命令用于建立数据库和建立,修改,
删除基本表 。
3.3.1 建立数据库
ANSI标准 SQL中建立数据库 ( SCHEMA,模式 )
的命令是:
CREATE SCHEMA AUTHORIZATION <创建者
>;
例如:创建者是温翠灵,则上面命令写作:
CREATE SCHEMA AUTHORIZATION 温翠灵 ;
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 23
大多数的关系数据库管理系统 ( RDBMS),
所使用的命令格式与 ANSI SQL不同,这些 RDBMS更常用下面命令格式:
CREATE DATABASE <数据库名 >;
例如建立学费管理数据库的命令是:
CREATE DATABASE xfgl;
3.3.2 建立数据表
建立基本表的命令格式为:
CREATE TABLE <表名 >(<列名 1><数据类型 >[NOT NULL],
<列名 2><数据类型 >[NOT NULL],… );
3.3.1 建立数据库数据库原理及应用 --“十一五”
国家级规划教材 24
3.3.2 建立数据表
其中,NOT NULL指的是该列的值不能为空值 。
例 3-3:在 SQL SERVER中建立如表 3-3所示学生基本情况表的命令是:
create table jbqk(number char(8)not
null,name char(8)not null,sex
char(2)not null,birthday datetime,
department char(12));
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 25
表 3-3学生基本情况表
number name sex birthday departme
nt
0022102 王雪莲 女 1981-3-5 电子系
0051309 白亚春 男 1983-9-5 计算机系
0052201 陈韬 男 1981-5-6 计算机系
0052217 袁更旭 男 1980-6-5 计算机系
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 26
建立如表 3-4所示课程表的命令是:
create table course(c_number
char(4)not null,c_name char(20)not
null,period decimal(3,0),t_number
char(4) not null);
c_number c_name period t_number
C501 数据库技术
60 T505
C502 操作系统 68 T508
C503 C语言 60 T505
C504 编译技术 56 T506
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 27
3.3 数据定义命令
t_number t_name title
T505 陈刚 教授
T508 李利 副教授
T506 李建义 副教授
建立如表 3-5所示教师表( teacher) 的命令是,
create table teacher(t_number char(4)
not null,t_name char(8),title char(10));
数据库原理及应用 --“十一五”
国家级规划教材 28
建立如表 3-6所示选课表 ( sle_course) 的命令是,:
create table sle_course(number
char(8) not null,c_number char(4),score
decimal(3,0));
3.3 数据定义命令
number c_number score
0052201 C501 90
0052201 C502 85
0052201 C503 56
0051309 C501 95
0051309 C502 88
0051309 C504 85
数据库原理及应用 --“十一五”
国家级规划教材 29
3.3.3 数据表的修改
1,添加新列命令:
ALTER TABLE <表名 > ADD 列名 数据类型 ;
例 3-4:下面命令在 jbqk表中添加,score”列 。
alter table jbqk add score decimal(3,0);
2,删除表中的列
ALTER TABLE <表名 > DROP COLUMN 列名 ;
例 3-5:下面命令在 jbqk表中添加,成绩,列之后,再删除,score”列 。
alter table jbqk add 成绩 decimal(3,0);
alter table jbqk drop column score;
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 30
3.3.4 数据表的删除
DROP TABLE <表名 >;
例 3-6:删除刚才所建的 jbqk表,使用如下命令格式:
drop table jbqk;
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 31
3.3.5 索引的建立与删除
索引是对数据库表中一个或多个列的值进行排序的结构 。 可以利用索引快速访问数据库表中的特定信息 。
1,建立索引语句
CREATE [UNIQUE] INDEX 索引名 ON 基本表名 (列名 [次序 ][,列名 [次序 ]]… );
说明:索引可以建立在一列和多列之上,索引顺序可以是 ASC( 升序 ) 或 DESC( 降序 ),缺省值是升序 。 UNIQUE表示每一个索引值对应唯一的数据记录 。
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 32
例 3-7:在学生基本情况表 jbqk之上建立一个关于学生表的索引文件 。 索引文件名为,学生索引,,索引建立在学号之上,按学号降序排序 。
Create index 学生索引 on jbqk(name desc);
2,删除索引语句
DROP INDEX <表名 >.<索引名 >;
注意:该命令不能删除由 CREATE TABLE或者
ALTER TABLE命令创建的主键和唯一性约束索引,也不能删除系统表中的索引 。
例 3-8:删除例 5创建的索引,学生索引,。
DROP INDEX JBQK.学生索引
3.3 数据定义命令数据库原理及应用 --“十一五”
国家级规划教材 33
3.4 数据查询语言
3.4.1 查询语句格式
SQL语言的查询语句一般格式是:
SELECT [ALL|DISTINCT]<目标列表达式 >[,<
目标列表达式 >]…
FROM <基本表名或视图名 >[,<基本表名或视图名 >]…
[WHERE <条件表达式 >]
[GROUP BY <列名 1>[HAVING <条件表达式 >]]
[ORDER BY <列名 2>[ASC|DESC]];
下面对该命令进行一些说明:
数据库原理及应用 --“十一五”
国家级规划教材 34
1,数据查询命令含义
从 FROM子句指定基本表或视图中,根据 WHERE
子句的条件表达式查找出满足该条件的记录,按照 SELECT子句指定的目标列表达式,选出元组中的属性值形成结果表 。 如果有 GROUP BY子句,则将结果按,列名 1” 的值进行分组,该属性列值相等的元组为一个组;如果 GROUP BY子句带有短语 HAVING,则只有满足短语指定条件的分组才会输出 。 如果有 ORDER BY子句,则结果表要按照 <
列名 2>的值进行升序和降序排列 。
SELECT [ALL|DISTINCT]<目标列表达式 >实现的是对表的投影操作,WHERE <条件表达式 >中实现的是选择操作。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 35
2,目标列表达式
① 列表达式可以是,列名 1,列名 2…,的形式;如果
FROM子句指定了多个表,则列名应是,表名,列名,
的形式 。
② 列表达式可以使用 SQL提供的库函数形成表达式,
常用的函数如下:
– COUNT(*),统计记录条数 。
– COUNT(列名 ):统计一列值得个数 。
– SUM(列名 ):计算某一数值型列的值的总和 。
– AVG(列名 ):计算某一数值型列的值的平均值
– MAX(列名 ):计算某一数值型列的值的最大值
– MIN(列名 ):计算某一数值型列的值的最小值
③ DISTINCT参数:表示在结果集中,查询出的内容相同的记录只留下一条。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 36
3.4.2 单表查询
单表查询是指仅设计一个表的查询 。
1,选择表中的列
例 3-9:选择 jbqk表中的所有列 。
select * from jbqk;
例 3-10:选择 jbqk表中的 number,name、
department列 。
select number,name,department from jbqk;
例 3-11:选择 jbqk中所有各个系的名字,去掉重复行 。
select distinct department from jbqk;
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 37
3.4.2 单表查询
2,选择表中的记录
选择表中的记录是通过 where子句实现的 。
例 3-12:选择 jbqk中所有计算机系的学生 。
Select * from jbqk where
department=’计算机系 ’
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 38
查询条件运 算 符 说 明比较
=,>,<,>=,<=,
<>,
字符串比较从左向右进行确定范围
BETWEEN AND,
NOT BETWEEN AND
BETWEEN后是下限,AND后是上限确定集合
IN,NOT IN 检查一个属性值是否属于集合中的值字符匹配
LIKE,NOT LIKE 用于构造条件表达式中的字符匹配空值
IS NULL,IS NOT
NULL
当属性值内容为空时,要用此运算符逻辑运算
AND,OR,NOT 用于构造复合表达式
3.条件表达式的构成数据库原理及应用 --“十一五”
国家级规划教材 39
例 3-13:查询考试成绩不及格学生的学号 。
SELECT DISTINCT number FROM
sle_course
WHERE score < 60;
例 3-14:查询学时在 60~ 70之间的课程名称和学时 。
SELECT c_name,period FROM course
WHERE period BETWEEN 60 AND 70
例 3-15:查询学时不在在 60~ 70之间的课程名称和学时 。
SELECT c_name,period FROM course
WHERE period NOT BETWEEN 60 AND 70;
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 40
例 3-16:假设当前的系统年份为 2002,查询计算机系,电子系学生的学号,姓名,年龄 。
Select number,name,2002-year(birthday)
from jbqk where department in(‘ 计算机系 ’,’ 电子系 ’ );
例 3-17:查询所有姓,王,的学生信息 。
Select * from jbqk where name like ‘王
%’ ;
此例中,使用了谓词 LIKE。 在使用时,应注意下面几点:
LIKE前的列名必须是字符串类型 。
可以使用通配符,_(下划线)表示任一单个字符; %(百分号)表示任意长度字符。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 41
4.查询中集函数的使用
说明,DISTINCT,取消列中的重复值
ALL,为默认状态,表示不取消重复值。
函数名称 函数功能
COUNT([DISTINCT|ALL] *) 统计元组个数
COUNT([DISTINCT|ALL]<列名 >) 统计一列重值的个数
SUM([DISTINCT|ALL]<列名 >) 计算数值型一列值的总和
AVG([DISTINCT|ALL]<列名 >) 求一列值的平均值
MAX([DISTINCT|ALL]<列名 >) 求一列值的最大值
MIN([DISTINCT|ALL]<列名 >) 求一列值的最小值
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 42
例 3-18:查询学生总人数 。
SELECT COUNT(*) FROM jbqk;
例 3019:计算 0052201学生的平均成绩 。
SELECT AVG(score)
FROM jbqk
WHERE number = ’0052201’;
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 43
5,查询结果的分组与排序
– GROUP BY子句将查询结果表按某一列或多列值分组,
值相等的为一组 。 分组的目的是为了将集函数的作用对象细化,分组后集函数将作用在每一个组上,也就是说每个组都有一个函数值 。
例 3-20:查询选修了 2门以上课程的学生学号,
并且查询结果按照升序排列 。
SELECT number FROM sle_course
GROUP BY number HAVING COUNT(*) > 2
ORDER BY number ASC;
– WHERE与 HAVING的区别在于作用的对象不同。
WHERE子句作用于基本表或视图,从中选择满足条件的记录; HAVING短语作用于分组,从中选出满足条件的组。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 44
3.4.3 多表查询
例 3-21:查询所有选修课程的学生信息,包括所学的课程名,授课教师和成绩 。
Select
jbqk.number,jbqk.name,course.c_name,sle
_course.score,teacher.t_name
From jbqk,course,sle_course,teacher
where jbqk.number=sle_course.number and
sle_course.c_number=course.c_number and
course.t_number=teacher.t_number
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 45
3.4.4 嵌套查询
在 SQL语言中,一个
SELECT…FROM…WHERE 语句成为一个查询块。将一个查询块嵌套在另一个查询块的
WHERE子句(或 HAVING短语)的条件中的查询称为嵌套查询。处于内层的查询称为子查询。嵌套查询命令在执行时,每个子查询在上一级查询处理之前求解,即由里向外查。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 46
例 3-22:查询选修了,数据库技术,课程的学生姓名 。
Select jbqk.name
from jbqk
Where jbqk,number in(
Select sle_course.number
from sle_course
Where sle_course.c_number in (
Select course.c_number
from course
Where course.c_name='数据库技术 '));
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 47
在一些嵌套查询中 WHERE之后可以使用
ANY和 ALL这两个谓词,ANY表示子查询结果中的某个值,而 ALL表示子查询结果中的所有值。
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 48
谓词形式 语 义 谓词形式 语 义
>ANY 大于子查询结果中的 某个值 <ANY 小于子查询结果中的某个 值
>ALL 大于子查询结果中的 所有值 <ALL 小于子查询结果中的所有 值
>= ANY 大于等于子查询结果 中的某个值 <= ANY 小于等于子查询结果中的 某个值
>= ALL 大于等于子查询结果 中的所有值 <= ALL 小于等于子查询结果中的 所有值
= ALL 等于子查询结果中的 所有值 =ANY 等于子查询结果中的某个 值
!=(或 <>)
ALL
不等于子查询结果中的所有值
!=(或 <>)
ANY 不等于子查询结果中的某 个值数据库原理及应用 --“十一五”
国家级规划教材 49
例 3-23:查询所有课程成绩在 95分以上的学生的学号,姓名 。
Select number,name
from jbqk
where number=any(
select number
from sle_course
Where score>=95)
3.4 数据查询语言数据库原理及应用 --“十一五”
国家级规划教材 50
3.5 数据操纵语言
3.5.1 插入数据
INSERT INTO <表名 > [(<列名 1>,<列名
2>,… ) ]
VALUES (<值 1>,<值 2>,<…>,…)
例 3-24:向学生基本情况表( jbqk) 中插入一条记录。
INSERT INTO jbqk VALUES('0051101','
王云丽 ','女 ','1981-12-18','电子系 ',85);
数据库原理及应用 --“十一五”
国家级规划教材 51
例 3-25:向教师表( teacher) 中插入一条记录。
INSERT INTO teacher VALUES ('T509','
安志远 ','教授 ');
注意:在 SQL SERVER 2000 插入数据时在 VALUES子句中必须将所有列值写出,
否则会出现“插入错误,列名或所提供值的数目与表定义不匹配。”错误。
3.5 数据操纵语言数据库原理及应用 --“十一五”
国家级规划教材 52
3.5.2 删除数据
删除命令比较简单,删除是对记录操作,不能删除记录的部分属性 。 一次可以删除一条和若干条记录,
甚至将整个表的内容删空,只保留表的结构定义 。
删除命令格式为:
DELETE FROM <表名 >
WHERE <条件 >
例 3-26:删除 jbqk表中学号为,0051101” 的学生 。
DELETE FROM jbqk
WHERE number = '0051101';
3.5 数据操纵语言数据库原理及应用 --“十一五”
国家级规划教材 53
3.5.3 修改数据
修改数据的语句格式一般是:
UPDATE <表名 > SET <列名 1> = <表达式 1> <列名
2> = <表达式 2> …
WHERE <条件 >
例 3-27:将课程表 (course)中所有课程的学时减少
5学时 。
UPDATE course SET period = period - 5;
例 3-28:将 jbqk表中,袁更旭,同学的所在系改为
,管理系,
UPDATE jbqk SET department = '管理系 '
WHERE name = '袁更旭 ';
3.5 数据操纵语言数据库原理及应用 --“十一五”
国家级规划教材 54
3.6 视图
视图是关系数据库系统提供给以多种角度观察数据库中数据的重要机制。它就象一个窗口,透过它可以看到数据库中用户感兴趣的数据及其变化。
3.6.1 视图的特点
视图是一种虚表,是逻辑表,不是物理存在;
基本表中的数据发生变化,从视图中查询出的数据也随之改变。
视图中的数据是从现有的一个或多个表中提取出来的,可以屏蔽表中的某些信息,有利于数据库的安全性
视图在数据库中是作为查询来保存的,当引用一个查询时,
DBMS就执行这个查询,然后将查询结果作为视图来用;
一个基本表可以建立多个视图,一个视图也可以在多个表上建立。
拥有表的几乎所有操作。
有利于应用程序的独立性、数据一致性。
数据库原理及应用 --“十一五”
国家级规划教材 55
3.6.2 视图的建立和撤销
1,视图的建立
建立视图的语句格式:
CREATE VIEW <视图名 >[(<列名1 >,<列名2 >,… )]
AS <查询子句 > [WITH CHECK OPTION];
其中查询子句可以是任意复杂的 SELECT 语句,但通常不允许含有 ORDER BY和 DISTINCT短语 。
WITH CHECK OPYION子句是为了防止用户通过视图对数据进行增加,删除,修改时,对不属于视图范围内的基本表数据进行误操作 。 加上该子句后,当对视图上的数据进行增,删,改时,DBMS会检查视图中定义 的条件,若不满足,则拒绝执行 。
3.6 视图数据库原理及应用 --“十一五”
国家级规划教材 56
例 3-29:建立所有计算机系学生信息 ( 学号,姓名,
性别,出生日期 ) 视图 。
Create view 计算机系 as
select
number,name,sex,birthday,department
from jbqk
Where department='计算机系 '
2,删除视图
删除视图语句格式:
DROP VIEW <视图名 >;
例 3-30:删除上例建立的视图,计算机系,。
DROP VIEW 计算机系 ;
3.6 视图数据库原理及应用 --“十一五”
国家级规划教材 57
3.6.3 视图数据操作
1,查询视图
当视图被定义之后,就可以象对基本表一样对视图进行查询了 。
例 3-31:查询,计算机系,视图中年龄小于 20岁的学生 。 Select * from 计算机系 where 2002-
year(birthday)<20;
2,更新视图
由于视图是不实际存储数据的虚表,因此对视图的更新,最终是通过转换为对基本表的更新进行的 。
UPDATE 计算机系 SET department = '管理系 '
WHERE name = '袁更旭 ';
3.6 视图数据库原理及应用 --“十一五”
国家级规划教材 58
在数据库系统中实现安全性除了通过物理方法对数据库进行加密等方法外,主要是通过授予和检验权限的手段 。 SQL有授权语句,通过该语句可以实现对数据库的使用控制 。
3.7.1 授权
SQL语句通过 GRANT语句向用户授予操作权限,
GRANT语句的格式为:
GRANT <权限 > [,<权限 >]… [ON <对象类型 ><
对象名 >]
TO <用户 >[,<用户 >]… [WITH GRANT
OPTION];
说明:此授权语句是指:将某作用在指定操作对象上的操作权限,授予指定的用户。
3.7 数据控制数据库原理及应用 --“十一五”
国家级规划教材 59
对象名 对象类型 操 作 权 限属性列 TABLE SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS
视 图 TABLE SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS
基本表 TABLE
SELECT,INSERT,UPDATE,DELETE,
ALTER,INDEX,
ALL PRIVILEGERS( 所有权限)
数据库 DATABASE CREATETAB( 建表权限)
3.7 数据控制数据库原理及应用 --“十一五”
国家级规划教材 60
如果指定 WITH GRANT OPTION子句,则获得某种权限的用户可以把这种权限在授予其他用户 。 如没有指定该子句,
获得授权的用户将不能传播权限 。
例 3-32:将查询 jbqk表的权限授予用户 sa。
GRANT SELECT ON TABLE jbqk TO sa;
例 3-33:将在 sle_course表上进行 UPDATE的权限授予用户 s1,并允许他传播该权限
GRANT UPDATE ON TABLE sle_course TO s1 WITH GRANT
OPTION;
S1获得该权限后,他可以在将此权限授予 s2。
GRANT UPDATE ON TABLE sle_course TO s2;
例 3-34,DBA将在数据库 pubs中建立基本表的权限授予 s3。
GRANT CREATTAB ON DATABASE pubs TO s3;
3.7 数据控制数据库原理及应用 --“十一五”
国家级规划教材 61
3.7.2 回收权限
SQL语句通过 REVOKE语句向用户授予操作权限,REVOKE语句的格式为:
REVOKE <权限 > [,<权限 >]…
[ON <对象类型 ><对象名 >]
FROM <用户 >[,<用户 >]… ;
说明:当涉及多个用户传播权限时,收回上级用户某权限的同时也收回所有下级的该权限 。
例 3-35:将用户 sa查询 jbqk表的权限收回 。
REVOKE SELECT ON TABLE jbqk FROM sa;
例 3-36:将用户 s2更新 sle_course表的权限收回,同时 s2
的更新权也被收回 。
REVOKE UPDATE ON TABLE sle_course FROM s2;
3.7 数据控制数据库原理及应用 --“十一五”
国家级规划教材 62
本章小结
SQL语言包括定义、查询、操纵和控制四方面功能。要求掌握 SQL语言中实现这些功能的语句。
视图是通过查询表达式定义的“虚关系”。掌握视图的定义和使用以及用 SQL语言实现视图的更新。
SQL语言功能强大,还很多高级语言中都嵌入了 SQL语言,PowerBuilder中使用的
PowerScript语言也有嵌入式 SQL,请参考本书的第 7章。