SQL概述与数据库定义
SQL的基本组成
- 数据定义语言
- DDL提供定义关系模式和视图、删除关系和视图、修改关系模式的命令
- 交互式数据操纵语言
- DML提供查询、插入、删除和修改的命令。
- 事务控制
- 提供定义事务开始和结束的命令。
- 嵌入式SQL和动态SQL
- 用于嵌入到某种通用的高级语言中混合编程。其中,SQL负责操纵数据库,高级语言负责控制程序流程。
- 完整性
- DDL包括定义数据库中的数据必须满足的完整性约束条件的命令,对于破坏完整性约束条件的更新将被禁止。
- 权限管理
- DDL中包括说明对关系和视图的访问权限
- SQL语言中完成核心功能的9个动词
- 数据查询:Select
- 数据定义:Create、Drop、Alter
- 数据操纵:Insert、Update、Delete
- 数据控制:Grant、Revoke
SQL的数据类型
表的创建、修改和删除
创建
create table table_name( id int(10) primary key, name varchar(200), class int(10) references t2(class), grade varchar(10), foreign key grade references t3(grade) on delete [set null] | [casecade] );
约束
- 实体完整性约束:primary key
- 可以添加到列后面,即列级完整性约束条件
- 或在最后,即表级完整性约束条件(主码属性组只能使用表级)
- 参照完整性约束:foreign key
- 列级完整性约束条件 references 表名(列名)
- 表级完整性约束条件 foreign key 列名 references 表名(列名) (有几个写几个)
- on delete set null:表示删除被参照关系的元组时,将参照关系的相应属性值置为空值
- on delete casecade:表示删除被参照关系的元组时,同时删除参照关系中的元组
- 属性值上的约束
- NOT NULL:表示不允许取空值
- UNIQUE:表示取值唯一
- NOT NULL UNIQUE:表示取值唯一且不为空 (等价于primary key)
- CHECK:限制列中值的取值范围
- CHECK (Sex=’男’ OR Sex=’女’),CHECK (余额>=0),CHECK (年龄>=18 AND 年龄<=60)
- 全局约束
- 基于元组的检查子句
-
CREATE TABLE E( Eno CHAR(8) PRIMARY KEY, 入职日期 DATE, 离职日期 DATE, CHECK (入职日期<=离职日期) );
-
- 基于断言的语法格式
-
create assertion name check();
-
- 基于元组的检查子句
修改
增删改
alter table table_name( add name varchar(100), #新增列 modify class int(10), #修改类型 drop name, #删除列 add constraint C_no check(......) #新增约束,命名为C_no );
删除
drop table table_name;
索引的创建和删除
create [unique] | [cluster] index index_name on 表名(列名); drop index index_name;
- index类型
- unique:唯一索引
- cluster:聚簇索引,使得索引项的顺序是与表中记录的物理顺序一致的索引组织
- 在列名后,可添加
- ASC 升序,默认
- DESC 降序
视图的创建和删除
create view view_name as (select 语句) [with check option]; drop view view_name;
- 子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语
- WITH CHECK OPTION表示对UPDATE,INSERT,DELETE操作时保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)
Awesome
Good