关系数据库标准语言——SQL

更新时间:2023-09-05 03:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库系统原理

2014-2-9

第5章

关系数据库标准语言—SQL

5.1 SQL概述及特点

5.2 数据定义语句5.3 数据查询语句

5.4 数据更新语句5.5 嵌入式SQL 5.6 数据控制机制和语句

5.1

SQL概述及特点

1. SQL的主要功能 (1) 数据定义功能 定义关系数据库的模式、外模式和内模式,以实 现对基本表、视图以及索引文件的定义、修改和删除等 操作。 (2) 数据操纵功能 包括数据查询和数据更新两种数据操作语句:数据 查询指对数据库中的数据查询、统计、分组、排序操作; 数据更新指数据的插入、删除、修改等数据维护操作。 (3) 数据控制功能 通过对数据库用户的授权和收权命令来实现有关数 据的存取控制,以保证数据库的安全性。

2. SQL的特点(1) SQL具有自含式和嵌入式两种形式。(2) SQL具有语言简洁、易学易用的特点。 (3) SQL支持三级模式结构。① 全体基本表构成了数据库的模式。 ② 视图和部分基本表构成了数据库的外模式。

③ 数据库的存储文件和它们的索引文件构成了关系数据库的内模式。

5.25.2.1

数据定义语句

基本表的定义和维护

1. 定义基本表 定义基本表语句的一般格式为:

CREATE TABLE [〈库名〉]〈表名〉(〈列名〉〈数据类型〉[〈列级完整性约束条件〉] , 〈列名〉〈数据类型〉[〈列级完整性约束条件〉]] [, n] [,〈表级完整性约束条件〉]

[, n] );

(1) SQL支持的数据类型类型表示 类型说明

SMALLINT数值型 数据 INTEGER或INT

半字长二进制整数。15bits数据全字长(四字长)整数。31bits数据 十进制数,共p位,其中小数点后q位。 0≤q≤p,q=0时可省略不写 双字长浮点数 长度为n的定长字符串 最大长度为n的变长字符串 长度为n的定长图形字符串 最大长度为n的变长图形字符串 日期型,格式为YYYY-MM-DD 时间型,格式为HH.MM.SS 日期加时间

DECIMAL(p[,q])FLOAT

字符型 数据

CHARTER(n)或 CHAR(n) VARCHAR(n) GRAPHIC(n) VARGRAPHIC(n) DATE

特殊数据类型

日期时 间型

TIME TIMESTAMP

(2) 列级完整性的约束条件针对属性值设置的限制条件。 1) NOT NULL或NULL约束。NOT NULL约束不允许字段值为空,

而NULL约束允许字段值为空。2) UNIQUE约束。惟一性约束,即不允许列中出现重复的属 性值。

3) DEFAULT约束。默认值约束。DEFAULT〈约束名〉〈默认值〉FOR〈列名〉 4) CHECK约束。检查约束。 CONSTRAINT〈约束名〉CHECK (〈约束条件表达式〉)

(3) 表级完整性约束条件 涉及到关系中多个列的限制条件。 1) UNIQUE约束。惟一性约束。 2) PRIMARY KEY约束。定义主码,保证惟一性和非空性。

CONTRAINT〈约束名〉PRIMARY KEY [CLUSTERED] (〈列组〉) 3) FOREIGN KEY约束。用于定义参照完整性。 CONTRAINT〈约束

名〉FOREIGN KEY(〈外码〉) REFERENCES〈被参照表名〉(〈与外码对应的主码名〉)

建立基本表: 学生(学号,姓名,年龄,性别,所在系); 【例5-1】 课程(课程号,课程名,先行课); 选课(学号,课程号,成 绩).

CREATE TABLE 学生(学号 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL,年龄 SMALLINT, 性别 CHAR(2),所在系 CHAR(20), DEFAULT C1 20 FOR 年龄, CONSTRAINT C2 CHECK(性别 IN (‘男’,‘女’))); CREATE TABLE 课程(课程号 CHAR(5) PRIMARY KEY, 课程名 CHAR(20),先行课 CHAR(5)); CREATE TABLE 选课(学号 CHAR(5),课程号 CHAR(5), 成绩 SMALLINT, CONSTRAINT C3 CHECK(成绩 BETWEEN 0 AND 100), CONSTRAINT C4 PRIMARY KEY(学号,课程号), CONSTRAINT C5 FOREIGN KEY(学号) REFERENCES 学生(学号), CONSTRAINT C6 FOREIGN KEY(课程号) REFERENCES 课程(课程号));

2. 修改基本表和删除基本表ALTER TABLE〈表名〉 [ADD(〈新列名〉〈数据类型〉[完整性约束] [,… n])] [DROP〈完整性约束名〉] [MODIFY(〈列名〉〈数据类型〉[,…n])]; (1) 使用ADD子句增加新列 【例5-2】向课程表中增加“学时”字段。 ALTER TABLE 课程 ADD 学时 SMALLINT; (2) 使用MODIFY子句修改列的原定义 (3) 使用DROP子句删除指定的完整性约束条件 【例5-3】删除学生表中对年龄的默认值的定义。 ALTER TABLE 学生 DROP C1; 删除基本表的一般格式为: DROP TABLE〈表名〉;

5.2.2

索引的定义和维护

1. 索引的作用 1) 使用索引可以明显地加快数据查询的速度。 2) 使用索引可保证数据的惟一性。 3) 使用索引可以加快连接速度。 2. 建立索引的原则 1) 索引的建立和维护由DBA和DBMS完成。 2) 大表应当建索引,小表则不必建索引。 3) 对于一个基本表,不要建立过多的索引。 4) 根据查询要求建索引。

3. 建立和删除索引的格式建立格式为: CREATE [UNIQUE] [CLUSTER] INDEX 〈索引名〉 ON〈表名〉 (〈列名〉[〈次序〉][,〈列名〉[〈次序〉]]…); 删除索引格式为: DROP INDEX 〈索引名〉; 【例5-4】为学生_课程数据库中的学生、课程和选课三个表建 立索引。其中,学生表按学号升序建立索引;课程表按课程 号升序建惟一索引;选课表按学号升序和课程号降序建惟一 索引。 CREATE UNIQUE INDEX 学号ON 学生(学号); CREATE UNIQUE INDEX 课程号 ON 课程(课程号); CREATE UNIQUE INDEX 选课号 ON 选课(学号 ASC,课程号 D ESC);

5.2.3

视图的定义和维护

1. 视图的优点 1) 视图能够简化用户的操作。 2) 视图机制可以使用户以不同的方式看待同一数据。 3) 视图对数据库的重构提供了一定程度的逻辑独立性。 4) 视图可以对机密的数据提供安全保护。2. 视图定义的格式 一般格式为: CREATE VIEW〈视图名〉[(列名组)] AS〈子查询〉 [WITH CHECK OPT

ION];

视图举例【例5-6】建立计算机系学生的视图。 CREATE VIEW 计算机系学生 AS SELECT 学号,姓名,年龄 FROM 学生 WHERE 所在系=‘计算机系’; 【例5-7】由学生、课程和选课三个表,定义一个计算机系的 学生成绩视图,其属性包括学号、姓名、课程名和成绩。CREATE VIEW 学生成绩(学号,姓名,课程名,成绩) AS SELECT 学生.学号,学生.姓名,课程.课程名,选课.成绩

FORM

学生,课程,选课AND 学生.所在系='计算机系';

WHERE 学生.学号=选课.学号 AND 程.课程名=选课.课程号

3. 视图的删除 、查询和维护视图删除语句的一般格式为: DROP VIEW〈视图名〉; 视图可以和基本表一样被查询,其使用方法与基本表 相同,但利用视图进行数据增、删、改操作,会受到 一定的限制。

5.35.3.1

数据查询语句数据查询的基本语法

1. SELECT语句的语法

SELECT〈目标列组〉FROM〈数据源〉 [WHERE〈元组选择条件〉] [GROUP BY〈分列组〉[HAVING 〈组选择条件〉]] [ORDER BY〈排序列1〉〈排序要求1〉 [,…n]];

语法说明(1) SELECT子句:指明目标列(字段、表达式、函数表达式、 常量)。基本表中相同的列名表示为:〈表名〉.〈列名〉 (2) FROM子句:指明数据源。表间用“,”分割。数据源不在 当前数据库中,使用“〈数据库名〉.〈表名〉”表示。一表 多用,用别名标识。定义表别名:〈表名〉〈别名〉 (3) WHERE子句:元组选择条件。

(4) GROUP BY子句:结果集分组。当目标列中有统计函数,则 统计为分组统计,否则为对整个结果集统计。子句后带上HA VING子句表达组选择条件(带函数的表达式)。 (5) ORDER BY 子句:排序。当排序要求为 ASC 时升序排序;排 序要求为DESC时降序排列。

2. SELECT语句的操作符(1) 算术操作符+(加号)、-(减号)、*(乘号)和 /(除号)。 (2) 比较操作符 =(等于)、>(大于)、<(小于)、<=(小于等 于)、>=(大于等于)、!=(不等于)、<>(小于

大于)、!>(不大于)和 !<(不小于),共9种操作符。

(3) 逻辑操作符语义 在[不在]其中 任何一个 全部(每个) [不]存在 在[不在]范围 操作符 [NOT] IN ANY ALL EXISTS BETWEEN…AND… 使用格式或示例 〈字段〉 IN (〈数据表|子查询〉) 〈字段〉〈比较符〉ANY (数据表|子查询) 〈字段〉〈比较符〉ALL (数据表|子查询) EXISTS (〈子查询〉) 〈字段〉 BETWEEN 小值 AND 大值

是[不是]空值模式比较 与运算 或运算 非运算

IS [NOT] NULL[NOT] LIKE AND OR NOT

〈字段〉 IS [NOT] NULL〈字段〉 LIKE 〈字符常数〉 其中, “_” 单字符通配符和 “%” 多字符通配符 〈条件1〉AND〈条件2〉 〈条件1〉OR〈条件2〉 NOT〈条件〉

本文来源:https://www.bwwdw.com/article/bt6i.html

Top