MySQL——约束类型
文章目录
- 一、主键约束
- 二、唯一约束(unique)
- 三、外键约束(foreign key)
- 四、非空约束(not null)
- 五、检查约束(check)
- 六、默认值约束(default)
- 七、自增约束(AUTO_INCREMENT)
一、主键约束
1.主键约束(PRIMARY KEY)
作用:唯一标识表中的每一行,不允许重复或NULL。
特点:一个表只能有一个主键。可由单列或者多列组成(复合主键)。
2.主键的创建
create table users (
id int primary key,
name varchar(50)
);
为已存在的表添加主键
alter table 表名 modify 字段名 数据类型 primary key;
例如:对xsb表的xh字段添加单一主键
alter table xsb modify xh varchar(20) primary key;
3.复合主键
create table student(
id int,
name varchar(50),
primary key(id,name)
);
为已存在的表添加符合主键
alter table 表名 add primary key(字段名1,字段名2);
例如:alter table xkb add primary key(xh,kcdm);
删除创建的主键约束。
alter table xsb drop primary key
二、唯一约束(unique)
作用:确保列中的值唯一。(MySQL中NULL不参与唯一性比较)。
特点:可以有多个唯一约束。常见于邮箱、用户名等字段。
1.唯一性约束的创建
create table student(
id varchar(20) unique,
name varchar(20)
);
为已存在的表添加唯一性约束
alter table 表名 modify 字段名 数据类型 unique;
例如:alter table xsb modify xm varchar(50) unique;
删除唯一性约束
alter table xsb drop index xm;
三、外键约束(foreign key)
作用:维护表之间的引用完整性,确保外键列的值必须存在于关联表的主键或唯一列中。
特点:要么为空,要么依赖子表的值。
外键的创建
create table student(
xh varchar(20) comment ‘学号’,
name varchar(20) comment ‘姓名’,
foreign key(xh) referennces xkb(xh)
);
student为子表,xkb为父表,将两个表中的学号建立关联关系。这两个字段的数据类型必须是一样的。
comment是备注的意思。
为已存在的表创建外键。
alter table 子表名 add foreign key(字段名) references 父表名(字段名);
例如:alter table xkb add foreign key(xh) references xsb(xh);
删除创建的外键约束。
alter table xkb drop foreign key xkb_ibfk_1;
xkb_ibfk_1外键名可以通过show create table 表名;这个命令查看。
四、非空约束(not null)
作用:禁止列的值为NULL。
例如:
CREATE TABLE products (
name VARCHAR(100) NOT NULL
);
为已存在的表添加非空约束
alter table 表名 modify 字段名 数据类型 not null;
例如:alter table xsb modify xm varchar(50) not null;
删除创建的非空约束。
alter table xsb modify xm varchar(50);
五、检查约束(check)
作用:限制列的值必须满足特定条件
例如:create table employees (
age int check(age >= 18 AND age <= 65)
);
为已存在的表添加检查约束
例如:alter table xsb add check(xb='男’or xb=‘女’);
删除检查约束
alter table xsb drop check xsb_chk_1;
xsb_chk_1 可以通过show create table 表名;这个命令查看。
六、默认值约束(default)
作用:为列指定默认值,插入数据时若未提供值则使用默认值。
create table student(
age int default 18,
name varchar(20) not null
);
为已存在的表添加默认值约束
例如:alter table xsb modify xb char(2) default ‘男’;
删除默认值约束
alter table xsb modify xb char(2);
七、自增约束(AUTO_INCREMENT)
作用:自动为整数列生成唯一递增值,每次在最大值的基础上加一,如果不想自增可以自己在建表是设置值。
特点:仅适用于整数类型的主键或唯一键。
例如:CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
总结:
约束类型 | 关键字 | 作用 | 是否允许NULL |
---|---|---|---|
主键 | PRIMARY KEY | 唯一标识行 | 否 |
唯一 | UNIQUE | 列值唯一 | 是(一个NULL) |
外键 | FOREIGN KEY | 关联其他表 | 是(需匹配主键) |
非空 | NOT NULL | 禁止NULL | 否 |
检查 | CHECK | 限定值范围 | 是(需满足条件) |
默认值 | DEFAULT | 自动填充默认值 | 是 |
自增 | AUTO_INCREMENT | 自动生成递增值 | 否 |
完结。