==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍
1.索引
创建索引的语法:create index 索引名 on 表名(字段1,字段2,……,字段n)
例子: create index idx_person_name on person(name);
create index idx_person_nameage on person(name,age);
删除索引的语法:drop index 索引名 on 表名
例子: drop index idx_person_name on person;
drop index idx_person_nameage on person;
2.约束
1).非空约束
使用not null定义,创建表时默认是允许为空的
例子:create table person(id int not null,name varchar(20));
2).唯一约束
使用unique定义,意思是一个字段中不能有两个值相同
单字段唯一约束:
例子:create table person(id int unique,name varchar(20));
复合字段唯一约束: 复合字段中单一的字段值可以重复,但是多个字段值不能同时重复
定义复合唯一约束需要定义在所有字段列表之后,语法如下:constraint 约束名 unique(字段1,……,字段n)
例子:create table person(
number varchar(20),
departmentnumber varchar(20),
name varchar(20),
age int,
constraint unic_dep_num unique(number,departmentnumber)
);
可以在一个表中添加多个复合唯一约束,只要约束名不一样就行.
例子:create table person(
number varchar(20),
departmentnumber varchar(20),
name varchar(20),
age int,
constraint unic_1 unique(number,departmentnumber),
constraint unic_2 unique(departmentnumber,name)
);
使用alter table语句可以为一张已经存在的数据表添加新的约束
alter table 表面 add constraint 唯一约束名 unique(字段1,……,字段n)
例子:alter table person add constraint unic_3 unique(name,age);
alter table 语句也能删除已经创建好的复合唯一约束
alter table 表名 drop index 唯一约束名
例子:alter table person drop index unic_1;
3).check约束
check约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做出的修改不会成功.
注意:MYSQL中的check只是个修饰作用,并无实际效果
例子:create table person(
number varchar(20),
name varchar(20),
age int check(age>0),
workyear int check(workyear>0)
);
还可以命名约束
CONSTRAINT chk_Person CHECK (Id_P>0)
撤销约束
例子:ALTER TABLE Persons
DROP CHECK chk_Person
4).主键约束
主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能包含null值,所以从某种意义来说主键约束是uinque约束和非空约束的组合.
例子:create table person(
number varchar(20) primary key,
name varchar(20),
age int
)
5).外键约束
语法:foreign key 外键字段 references 外键表名(外键表的主键字段)
也可以用alter table语句的方式添加外键约束
alter table book add constraint fk_book_author foreign key(authorid) references author(id);
删除方式是先删除引用表,再删除被引用表.