索引和约束的创建

来源:互联网 发布:阿里云客服好干吗 编辑:程序博客网 时间:2024/05/24 02:38

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);         删除方式是先删除引用表,再删除被引用表.     
0 0
原创粉丝点击