查看约束:SHOW CREATE TABLE table_name;
主键约束
主键约束在显著的特征是主键列中的值是不允许重复的,通过主键约束可强制表的实体完整性。当创建或更改表时可通过定义PRIMARY KEY 约束来创建主键。一个表只能有一个PRIMARY KEY 约束,且PRIMARY KEY 约束中的列不能接受NULL值。
设置该字段为主键,主键约束名称为pk_name:
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY (字段名);
设置主键约束的几种方式:
- 创建表的时候指定主键约束:
CREATE TABLE table_name(
Id int PRIMARY KEY,
NAME VARCHAR(20)
);
或
CREATE TABLE table_name(
Id INT,
Name VARCHAR(20),
PRIMARY KEY (id)
);
或
CREATE TABLE table_name(
id INT,
name VARCHAR(20),
CONSTRAINT pk PRIMARY KEY(id)
);
- 修改某一列为主键
Alter table 表名称 add primary key 字段名;
Alter table 表名称 modify 字段名 属性 primary key;
Alter table 表名称 change 字段名 字段名 属性 primary key;
删除主键约束
Alter table 表名称 drop primary key;
自增长列(标识列)
特点:
- 标识列必须和一个key搭配
- 一个表最多有一个标识列
- 标识列的类型只能是数字型
- 标识列可以通过 set auto_increment_increment=3;设置步长(全局,退出数据库重新进入会恢复默认值),可以通过插入行时手动插入标识列值设置起始值。
Create table goods(
No int primary key auto_increment,
Name varchar(10)
);
修改为自增长:
Alter table表名 modify 列名 列类型 auto_icrement;
或
Alter table 表名 change 列名 列名 列类型 auto_increment;
删除自增长列:
Alter table 表名 modify 列名 列类型;
联合主键
在创建表时,可以在列定义中指定多个列作为联合主键:
Create table 表名(
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
Primary key (列名1,列名2, 列名3)
);
修改列的时候创建:
Alter table 表名 add primary key(列名1,列名2,列名3);
删除:
Alter table 表名称 drop primary key;
联合主键要求每个列组合的值都是唯一的。
唯一约束
对于非主键列的值也要求唯一时,就需要唯一的约束
创建表时:
CREATE TABLE table_name(
Id int ,
NAME VARCHAR(20) unique
);
或
CREATE TABLE table_name(
id INT,
name VARCHAR(20),
CONSTRAINT uq unique(name)
);
修改表时
Alter table 表名 add unique(列名称);
Alter table 表名 add constraint unique(列名称);
Alter table 表名 change 列名 列名 类型 unique;
Alter table 表名modify 列名 列类型 unique;
删除唯一约束
Alter table 表名称 drop index 设置唯一时的名称;
(如果没有设置约束名称,名称默认是字段名)
唯一约束允许有多个NULL值
默认约束
为列中的值设置默认值,default value
创建表时:
Create table 表名(
Id int default value,
Name varchar(20) unique
);
修改表:
Alter
Table 表名 modify 列名 类型 default 默认值;
Alter table 表名 change 列名 列名 列类型 default 默认值;
删除:
Alter table 表名 modify 列名 列类型;
非空约束
Not null:非空,用于保证该字段的值不能为空
创建表时:
Create table 表名(
Id int not null,
Name varchara(20)
);
修改表:
Alter table 表名 modify 列名 列类型 not null;
Alter table 表名 change 列名 列名 列类型 not null;
删除:
Alter table 表名 modify 列名 列类型;
检查约束
检查约束允许你在表定义中声明条件,并确保符合该条件的数据才能插入或更新到相应的列中。
创建表时:
Create table 表名(
Id int auto_increment primary key,
Name varchar(50),
Age int ,
Emall varcharI(100),
Check (age>=18)
);
修改表时:
Alter table 表名 change 列名 列名 列类型 check(condition);
Alter table 表名 modify 列名 列类型 check(condition);
Alter table 表名 add constraint 列名check(condition);
删除检查约束
Alter table 表名 drop constraint 约束名;4
外键约束
用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。
创建表时:
Constraint fk_a_b foreign key a(a.id) referencrs b(b.id);
修改表时:
Alter table 表名 add 约束名称 foreign key (从表字段) references 主表表名(主表字段);
删除:
Alter table 表名称 drop foreign key 索引名;
关联数据:设置外键时在后面添加 on delete cascade/ on update cascade
On delete set null/on update set null 在删除/更新主表时,外键列的值会变成null