数据库第三章总结
SQL语言概览
SQL标准符合度分为四个等级:
- Entry leve SQL
- Transitional SQL
- Intermediate SQL
- Full SQL
SQL-99、SQL-92支持四个等级的四个标准
没有DBMS实现全部SQL标准(出于安全性等考虑)
SQL语言分为
DDL:
——create table, alter table,drop table
——create index,drop index
——create view, drop view
——create trigg,drop trigger
……各种create
DML:
——selec …… from
——insert, delete, update
DCL:
——grant,revoke
SQL用语言数据定义
回忆:
- super-key
- candidate key
- primary key
SQL例子:
CREATE TABLE instructor ( ID char(5), name varchar(20) not null, dept_name varchar(20), salary numeric(8,2) primary key (ID) );
PS: char 类型会自动补空格,varchar不会
not null 不能位空
SQL的DDL不仅能定义一组个关系,还能够定义每个关系的信息,包括:
- 关系模式
- 属性的取值类型
- 完整性约束
- 关系维护的索引集合
- 关系的安全性和权限信息
- 关系在磁盘上的物理存储结构
SQL语言基本模式定义
SQL提供的基本类型:
- char(n): 固定字符串长度
- varchar(n): 可变字符串长度
- int: 整型类型,等价于全程integer
- smallint: 小整数类型
- numeric(p,d): 定点数,精度用户指定。p为数字位数,d为小数位数
- null: 每种类型都可以包含一个空值,可以声明不为空
- float(n): 精度至少为n的浮点数
- real, double precison:浮点和双精度
- date: 日期,含年月日,如'2020-2-26'
- time: 时间,含时分秒,如'00:00:00' or '00:00:00.00'
- timestamp: 时间+日期(时间戳), 如'2020-2-26 00:00:00.00'
ps:不同DBS的数据类型的声明有所区别
基本模式定义:
用creat table命令定义SQL关系:
CREATE TABLE r( ( A1 D1, A2 D2, ... An Dn, <完整性约束1>; ... <完整性约束k> ) );
其中, r是关系名,每个Ai是关系r模式中的一个属性名,Di是属性Ai的域
完整性约束:(少数介绍)
not null,一个属性上的not null表示该属性上不允许空值
primary key(A1,...,An),声明表示A1……An构成关系的主码
主码属性必须唯一且非空,SQL_89中需要特别声明
foreign key(A1,...,An)creference, 声明 表示关系中任意元组
在属性上(A1,...,An)上的取值必须对应关系s中某元组的主码属性上的取值
check(P), P 是谓词条件,检测P
例:声明ID为instructor的主码,并确保,salary的值非负
CREATE TABLE instructor( ID char(5), name varchar(20) not null, dept_name varchar(20), salary numeric(8,2), primary key(ID), check(salary >= 0); );
drop table:删除数据库中关于被去掉关系的所有信息
DROP TABLE r;
如 DROP TABLE instructor2;
alter table:为已有关系增加属性
ALTER TABLE r ADD A D;
如 ALTER TABLE instructor2 ADD brithday date;
ps:新添加的值都会被设为null
这个命令还可以用于修改关系中的属性
如 ALTER TABLE instructor MODIFY (ID cahr(10));