查看某个表的约束和索引
一、定义
对表中的数据进行限定,保证数据的正确性、有效性、和完整性。
二、分类
- 主键约束:primary key,简称PK,数据库主键作用保证实体的完整性,可以是一个列或多列的组合。
- 注意:
- 非空且唯一
- 一张表只能有一个字段为主键
- 主键就是表中记录的唯一标识
- 在创建表时,添加主键
- create table stu(
id int primary key, ---给id添加主键约束
name varchar(20)
);
- 删除主键
- alter table stu drop primary key;
- 创建完表后,添加主键
- alter table stu modify id int primary key;
- 自动增长
- 概念:如果某一列是数值类型的,使用 auto_increment 可以完成值得自动增长
- 在创建表时,添加主键约束,并且完成主键自动增长
- create table stu(
id int primary key auto_increment, --给主键id添加自动增长
name varchar(20) not null ---name为非空
);
- 删除自动增长
- alter table stu modify id int;
- 在创建表以后添加自动增长
- alter table stu modify id int auto_increment;
- 非空约束:not null
- 创建表时添加非空约束;
- create table stu(
id int,
name varchar(20) not null ---name为非空
);
- 创建表完成后,添加非空约束;
- alter table stu modify name varchar(20) null;
- 删除非空约束;
- alter table stu modify name varchar(20);
- 唯一约束:unique
- 创建表时添加唯一约束;
- create table stu(
id int,
photo_number varchar(20) unique
);
*注意smsql中,唯一约束限定的列的值可以有多个null
- 创建表完成后,添加唯一 约束;
- alter table stu modify name varchar(20) unique;
- 删除唯一约束;
- alter table stu drop index phone_number ;
- 外键约束:foreign key
- 在创建表时,可以添加外键
- 语法:
create table 表名(
….
foreign key (外键名) references 主表名称(主表列名称)
);
- 例:
create table student(
sid int auto_increment primary key not null,
sname varchar(20) not null,
score float,
clazzid int,
foreign key(clazzid) references clazz(cid)
);
- 删除外键
- alter table 表名 drop foreign key 外键名称;
- 创建表之后,添加外键
- alter table 表名 add foreign key (外键字段名称) references 主表名称(主表列名称);
- 检查约束
- 注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;
- 例如:age tinyint check(age >20) 或 sex char(2) check(sex in('男','女'))
- Default缺省约束
- default:默认值,在插入数据时某列如果没指定其他的值,那么会将默认值添加到新记录。
- 如果某列已经创建好,那么可以修改列语句修改:
- 例如:原来有默认值,去除默认值
- 例如:原来没有默认值,增加默认值