目录
1.数据库基本概念
2.关系代数
3.SQL结构化查询语言
3.1特点
3.2模式、表、索引
定义基本表
create table<表名> [<列名/属性><数据类型>[<列级完整性约束条件>]]
修改基本表
alter table<表名>
- 增加 alter table<表名> [add [column] <新列名><数据类型>[<列级完整性约束条件>]]
- alter table<表名> <表级完整性约束条件>
- 删除 alter table<表名> [drop [column] <列名>[cascade|restrtct]]
- alter table<表名> [drop constraint<完整性约束名>[cascade|restrtct]]
- 修改 alter table<表名> [alter column <列名><数据类型>]
索引:加快查询速度
建立索引
修改索引
删除索引
3.3数据查询
select <目标表达式>
from <表名或视图名>
[where<条件表达式>]
[group by<列名1> [having<条件表达式>]]
[order by<列名2> [asc|desc]]
3.3.1外连接
3.3.2嵌套查询
3.3.3集合查询
3.4数据更新
3.4.1数据插入
3.4.2数据删除
3.4.3数据修改
3.5空值的处理
3.6视图
3.6.1建立视图
3.6.2删除视图
3.6.3更新视图
3.6.4查询视图
4.数据库安全性
4.1基本概念
4.2数据库安全性控制
4.2.1存取控制
4.2.2视图机制
5.数据库的完整性约束
5.1实体完整性
即不允许存在主码值为空的记录以及主码值重复的记录。
定义:在create table语句中使用primary key。
e.g创建sc表,sno、cno为主键。
实体完整性检查方法:
- 全表扫描(耗时)
- 对主码进行排序或建立索引
5.2参照完整性
即外码与被参照的主码之间的引用规则。外码取值为空或等于其所参照的关系中的某个元组的主码值。
定义:在create table语句中使用foreign key短语定义外码,用references指明外码参照哪些表的主码。
e.g sc表主码为(sno,cno),s表主码为sno,c表主码为cno,定义sc表的参照完整性。
create table sc(
sno char(9),
cno char(4),
grade smallint,
primary key(sno,cno),
foreign key(sno) references s(sno),
foreign key(cno) references c(cno)
);
5.3用户自定义完整性
除主码,外码外定义的完整性为用户定义。
属性约束条件:单个属性。
元组约束条件:不同属性之间取值相互约束可用check子句进行定义。
- 列值非空约束not null
- 列值唯一约束unique
- 检测列值是否满足check
e.g
grade非空 grade int not null
name非空且唯一 name char(20) unique not null
sex取值为男或女 sex char(2) check(sex in ('男','女'))
grade在0-100之间 grade int check(grade>=0 and grade <=100)
完整性约束命名子句:constrain <完整性约束条件><约束条件>
关系上约束撤销:alter table<表名> drop constrain<约束名>
关系上约束添加:alter table<表名> add constrain<约束名><约束条件>