3.1 SQL数据库的体系结构
在SQL中:
- 关系模式—基本表
- 存储模式—存储文件
- 子模式—视图
- 元组—行
- 属性—列
- 一个SQL模式是表和约束的集合
- 表
- 基本表
实际存储在数据库中的表 - 视图
由若干基本表或其他视图构成的表的定义 - 导出表
执行查询时产生的表
- 基本表
- 一个基本表可以跨一个或多个存储文件,一个存储文件可以存放一个或多个基本表
- SQL核心有 SQL DDL(数据定义语言)、SQL DML(数据操作语言)、SQL DCL(数据控制语言)、嵌入式SQL语言的使用规定
3.2 SQL的数据定义(CREATE、ALTER、DROP)
3.2.1 SQL模式的创建和撤销
- 创建SQL模式
CREATE SCHEMA 模式名 AUTHORIZATION 用户名
如:CREATE SCHEMA ST AUTHORIZATION chen; - 创建SQL模式也可以被叫做创建数据库,CREATE DATABASE …
- 撤销模式
DROP SCHEMA 模式名 【CASCADE|RESTRICT】
如:DROP SCHEMA ST CASCADE; - CASCADE表示在执行drop语句时,把该模式及其下属的基本表、视图、索引等所有元素全部撤销
- RESTRICT表示只有当该模式中没有任何下属元素时,才会撤销该模式,否则拒绝执行drop
3.2.2 基本表的创建、修改、撤销以及完整性约束
-
创建
CREATE TABLE 表名 (列名(类型),列名(类型)… ,完整性约束条件);
⚠️ 创建表格时最好表明 主键和外键,虽然不是必须的,但是题目中有就写上去。如create table SC时,最后应该写上 :
PRIMARY KEY(S#,C#),
FOREIGN KEY(S#) REFERENCES S(S#),
FOREIGN KEY(C#) REFERENCES C(C#); -
修改
⚠️ 删除原有的列用
ALTER TABLE tablename DROP 列名 【CASCADE|RESTRICT】
⚠️ 增加新的列,注意不可以定义为NOT NULL,因为增加新的一列时,原有元组在新的列上的值都被定义为了NULL
-
撤销
DROP TABLE 基本表名 【CASCADE|RESTRICT】 -
断言
-
触发器
3.2.3 索引的创建和撤销
- 索引属于物理存储的概念
- 索引是由于之前在SQL86、89中没有关键码的概念而用索引机制弥补的。
- 索引的创建
CREATE 【UNIQUE】INDEX 索引名 ON 基本表名(<列名序列>)
如在创建学生基本表S的时候没有使用主键语句,那么可以建立索引起到主键作用:
CREATE UNIQUE INDEX S#_INDEX ON S(S#);
这里的UNIQUE表示每个索引值对应唯一的数据记录 - 一个索引键可以对应多个列,索引可以升序或降序
如对基本表SC中的(S#,C#)建立索引:
CREATE UNIQUE INDEX SC_INDEX ON SC(<S# ASC,C# DESC>); - 索引表的撤销
DROP INDEX 索引名;
3.3 SQL的数据查询(SELECT)
-
select语句使用时有三种写法:连接查询、嵌套查询、带存在量词的嵌套查询
-
聚合函数
- COUNT(*)
- COUNT(列名)
- SUM(列名)
- AVG(列名)
- MAX(列名)
- MIN(列名)
-
聚合函数不可以复合使用
-
UNION、INTERSECT、EXCEPT
-
where age>18 and age<20 可以写成 between 18 and 20,不在某个范围内可以写成not between 18 and 20
-
字符串的匹配操作
- %是与零个或多个字符组成的字符串匹配
- _是与单个字符匹配
- LIKE、NOT LIKE
- 在LIKE比较重使用ESCAPE关键字定义转义字符 \
- 匹配所有以’ab%cd’开头的字符串
LIKE ‘ab%cd%’ ESCAPE ‘’ - 匹配所有以’ad\cd’开头的字符串
LIKE ‘ad\cd%’ ESCAPE ‘’
-
判是否为空值 IS NULL/ IS NOT NULL
-
SOME / ALL / IN / NOT IN
= SOME 即 IN , <> ALL 即 NOT IN -
EXISTS / NOT EXISTS
-
UNIQUE / NOT UNIQUE
-
连接操作
R和S左外连接 + 自然连接 ===》 R NATURAL LEFT OUTER JOIN S
INNER JOIN如果没有提及连接条件,就是笛卡尔积
FULL OUTER JOIN ON false 就是外部并,但是要把两个关系的属性全部包括进去
R LEFT OUTER JOIN S USING(B) 使用B的属性进行左外连接 USING中的属性是公共属性,但可以不是全部公共属性,公共属性只出现一次。
递归查询都没看过(好像不考)
3.4 SQL的数据更新(INSERT、DELETE、UPDATE)
3.5 视图
3.6 嵌入式SQL
3.7 存储过程与SQL/PSM
3.8 安全性
-
使用存储矩阵
-
使用视图
-
使用授权