SQL结构化查询语言,用户操作关系数据库的通用语言,按其功能分为四大部分(DDL,DCL,DML):
数据库定义语句
① CREATE(创建基本表)
格式:[ ] 内的内容表示可选:
实例:
create domain person_name char(20)
create table T
( tno char(10),--长度固定为10
tname person_name not null,--非空值约束
sal int,
dno char(10) unique,--唯一性约束,可以为空,可以存在多个这是和主键约束的区别
constraint pk_t primary key (tno),--主键约束,并将该约束命名为pk_t
foreign key(dno) references D(dno),--参照完整性约束
check (sal > 0))--最后一句没有逗号了
四个约束:
primary key (tno)主码约束(不但要求unique而且要求是非空的);
unique唯一性约束要求是唯一的,但是可以是空的;
not null 非空约束;
foreign key(dno) reference D(dno),(key后面有括号,约束除了not null)参照完整性约束,该关系中的dno参照的是关系D中的dno。
②alter(修改基本表定义)
示例:
--ADD(增加列)
alter table T add location char(30);--增加location列,长度固定为30
--MOIDIFY(修改列或者完整性约束)
alter table S modify sno varchar(300);--修改列的长度时,只能长不能短
alter table T add location char(30) not null;
--location列已经存在,修改列的定义的时候要用modify,以上方式不对,应该为
alter table T modify location char(30) not null;
--DROP(删除基本表或列或约束)
alter table drop column s [CASCADE│RESTRICT];
--删除列,注意column关键字,cascade是指在基本表中删除某列时所有引用该列*视图*和约束一起删除
--restrict是指只有在没有视图或约束引用该列属性时才可被删除
alter table S drop constraint pk_s;--删除约束直接加约束名
注意:
alter有三种方法add,drop ,modify增删改,均是对约束或者列操作。对表的操作是create,alter,drop。
table T,column s,constrain pk_s,你在操作之前要告诉系统你操作的是什么东西。
③drop(删除基本表)
删除表:drop table T
注意和alter里面的drop区分,alter里面Drop的对象是列或者约束。
④索引
a.什么是索引?
索引类似于字典前面的索引,其目的是加快检索速度,由数据库管理员建立,DBMS自动维护和使用。
b.格式
unique或distinct加在index前面表示唯一性索引,依旧是索引列上没有相同的值,若索引列有相同的值则无法创建。
cluster聚簇索引,即表中元祖按照索引列内容排序,因为只能按一种规则进行排序,所以一个表只能有一个聚簇索引,但聚簇索引可以是多个列,如出生年和出生月一起做聚簇索引。
asc desc索引表中的排列次序,默认是升序,直接在列名后面写就行不需要括号。
删除索引:
索引可以动态添加,索引可以加快查询速度,但降低插入修改速度。
所以内部实现为B+树,hash表。
不允许用户在操作中指定索引,索引怎么用什么时候用完全由DBMS决定。