1.sql的基本组成
数据定义:ddl
数据操纵:dml
嵌入式sql和动态sql:高级语言
完整性:ddl定义的设置设置数据必须满足的完整性约束条件的命令
权限:ddl 关系和视图的权限
几个动词:
- 数据查询:select
- 数据定义:create drop alter
- 数据操纵:insert update delete
- 数据控制:grant revoke
2.基本类型
char
varchar
int
smallint
numeric 纽迈瑞克 英[njuː'merɪk] p整数位 n小数位
double
float
boolean
date
time
3.表的创建修改和删除
1.创建
create table 表名(
列名 数据类型 【列级完整性约束】
列名 数据类型 【列级完整性约束】
....
表级完整性约束
)
实体完整性:
-
一个的可以直接在列后面加上PRIMARY KEY
表级完整性约束一般就是PRIMARY KEY(属性1,属性2) 一个或者多个都可以
参照完整性:
列后面加上reference 表名 属性名
最后面加上:foreign key reference 表名(属性名) on delete cascade | set null
on delete cascade:表示删除被参照的元组的时候 同时删除参照关系中的元组
on delete set null:表示删除被参照关系的元组时,将参照关系的相应属性设置为空值
属性上加约束
primary key
reference 表名 属性名
not null
unique
not null unique:不为空且唯一
check 限制取值
check (sex = 男 or sex = 女)
check(余额 >= 0)
check(年龄 >= 18 and 年龄 <= 60)
全局约束
- 基于元组的检查子句
create table e (
eno char(10) primary key,
入职日期 date,
离职日期 date,
check(入职日期 <= 离职日期)
);
基于断言的语法格式
create assertion 断言名 check 条件
create assertion asse_sc check
(
not exists (
select * from sc where Cno in (
select Cno from c where teacher = '张勇' )
and Sno in (select Sno from Students where sex ='M')
)
)
修改表
alter table 表名 add column 列名 数据类型 列级完整性约束;
alter table 表名 drop 完整性约束
alter table 表名 modify 列名 数据类型
alter table s modify status int;修改数据类型为int
添加check约束起名为c_cno
alter table s add constraint c_cno check()
drop table 表名
3.索引的创建和删除
- 唯一索引:保证数据的唯一性
- 加快检索速度
- 加速表与表之间的连接
- 在使用order by和group by子句中进行检索数据时,可以显著减少查询分组和排序的时间
- 使用优化隐藏器提高系统的性能
- 索引可以分为聚集索引和非聚集的
索引创建
create unique/cluster index 索引名字 on 表名 列名 次序,列名 次序
次序:ase desc
unique:此索引的每一个索引值只对应唯一的记录
cluster:表名要建立的索引是聚簇索引 意思为索引项的顺序是与表中记录的物理顺序一致的索引组织
create unique index sss on S(sno) 在S表的Sno列上加上索引默认是升序
create unique index ppp on P(pno) desc
create unique index aaa on SPJ(sno asc, pno desc) ;spj表加上索引 属性sno升序 pno降序
drop index 索引名
视图的创建
create view 视图名字(列名)
as select 子查询
with check option:表示update insert delete操作时数据能及时更新
create view student_v as
select sno,sname,sage,sex
from student
where sd = 'cs'
with check option;
drop view 名称;
