MySql提供了非常丰富的约束操作,现将之总结一下。
/*****************************主键约束**************************************/
1、创建表时设置主键约束
(1)使用SQL语句设置单一列约束
a、设置列级主键约束
create table customerInfo(
id INT PRIMARY KEY,
name VARCHAR(20),
age INT
);
b、设置表级主键约束
create table customerInfo(
id INT,
name VARCHAR(20),
age INT,
PRIMARY KEY(id)
);
(2)在创建表时设置联合主键
a、设置列级主键约束
create table customerInfo(
id INT PRIMARY KEY,
name VARCHAR(20) PRIMARY KEY,
age INT
);
b、设置表级主键约束
create table customerInfo(
id INT,
name VARCHAR(20),
age INT,
PRIMARY KEY(id, name)
);
2、在修改表时添加主键约束
(1)在修改表时设置单一列约束
alter table table_name
ADD CONSTRAINT pk_name PRIMARY KEY;
alter table customerInfo ADD CONSTRAINT PK_customerInfo PRIMARY KEY(age);
(2)在修改表时设置联合主键
alter table table_name
ADD CONSTRAINT PK_name PRIMARY KEY();
alter table customerInfo ADD CONSTRAINT PK_customerInfo PRIMARY KEY(id, age);
3、删除主键
alter table table_name DROP PRIMARY KEY;
/*****************************************************************************/
/*****************************外键约束**************************************/
1、创建表时设置外键约束
create table TypeInfo(roomtypeId INT PRIMARY KEY, roomtype VARCHAR(20));
create table RoomInfo(
roomId INT PRIMARY KEY,
roomtypeId INT,
roomname VARCHAR(30),
CONSTRAINT FK_RoomInfo FOREIGN KEY(roomId) REFERENCES TypeInfo(roomtypeId)
);
2、修改表时添加外键约束
alter table table_name1 ADD CONSTRAINT fk_name FOREIGN KEY(列1)REFERENCES table_name2(列2);
alter table RoomInfo ADD CONSTRAINT FK_RoomInfo FOREIGN KEY(roomtypeId) REFERENCES TypeInfo(roomtypeId);
3、删除外键
alter table table_name DROP FOREIGN KEY FK_NAME;
alter table RoomInfo DROP FOREIGN KEY FK_RoomInfo;
/*****************************************************************************/
/*****************************默认值约束**************************************/
1、创建表时设置默认值约束
create table table_name(id int DEFAULT 0, name VARCHAR(20)); //(0为默认值)
2、修改表时添加默认值约束
alter table table_name alter id set 2;
3、删除默认值
alter table table_name alter id DROP DEFAULT;
/*****************************************************************************/
/*****************************非空约束**************************************/
1、创建表时设置非空约束
create table table_name(id int NOT NULL, name VARCHAR(20));
2、修改表时添加非空约束
alter table table_name MODIFY name VARCHAR(20) NOT NULL;
/*****************************************************************************/
/*****************************检查约束**************************************/
1、创建表时设置检查约束
create table table_name(age int CHECK(age >= 18), name VARCHAR(20));
2、修改表时添加检查约束
alter table table_name ADD CONSTRAINT UQ_age CHECK(age >= 20);
注意:mysql中虽然可以设置检查约束,但是检查约束在表中是不生效的,仍然可以插入不符合条件的数据。
/*****************************************************************************/
/*****************************唯一约束**************************************/
1、创建表时设置唯一约束
create table table_name(age int, name VARCHAR(20) UNIQUE);
create table table_name(age int, name VARCHAR(20), UNIQUE(name));
共同唯一约束
create table table_name(age INT, name VARCHAR(20), UNIQUE(age, name));
2、修改表时添加唯一约束
alter table table_name ADD CONSTRAINT UQ_name UNIQUE(name);
3、删除唯一约束
DROP INDEX UQ_name ON table_name;
/*****************************************************************************/