跳至主要內容

1.6 MySQL中的约束 🎉

刘春龙...大约 4 分钟数据库mysql

1.6 MySQL中的约束 🎉

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  • 主键约束(Primary Key) PK

    • 主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。 主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。
  • 外键约束(Foreign Key) FK

    • 外键约束经常和主键约束一起使用,用来确保数据的一致性。
  • 唯一性约束(Unique)

    • 唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。
  • 非空约束(Not Null)

    • 非空约束用来约束表中的字段不能为空。
  • 检查约束(Check)

    • 检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前 MySQL 数据库不支持检查约束。

主键约束 💎

增加主键约束 👻

添加主键约束(Primary Key)

  • 单一主键
    • 使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
  • 联合主键
    • 使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

使用DDL语句添加主键约束

ALTER TABLE  表名 ADD PRIMARY KEY(列名)

示例:将 emp 表中的 employee_id 修改为主键。

alter table emp add primary key(employee_id);

主键自增长

MySQL 中的自动增长类型要求:

  • 一个表中只能有一个列为自动增长。
  • 自动增长的列的类型必须是整数类型。
  • 自动增长只能添加到具备主键约束与唯一性约束的列上。
  • 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
alter table 表名 modify 主键 类型 auto_increment;

示例:将 emp 表中的 employee_id 主键修改为自增。

alter table emp modify employee_id int auto_increment;

删除主键约束 👻

使用DDL语句删除主键

ALTER TABLE  表名 DROP PRIMARY KEY;

注意

删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后再删除主键。

示例:删除emp表中的 employee_id 主键约束。
去掉自动增长:

alter table emp modify employee_id int;

删除主键

alter table emp drop primary key;

外键约束 💎

增加外键约束 👻

使用DDL语句添加外键约束

ALTER TABLE  表名 ADD CONSTRAINT  约束名 FOREIGN KEY( 列 名 ) REFERENCES  参照的表名(参照的列名);

示例:

创建 departments 表包含 department_id 、department_name ,location_id。

create table departments(department_id int,department_name varchar(30),location_id int);

修改departments表,向department_id列添加主键约束与自动递增。

alter table departments add primary key(department_id);
alter table departments modify department_id int auto_increment;

修改 emp 表,添加 dept_id 列。

alter table emp add column dept_id int;

向 emp 表中的 dept_id 列添加外键约束。

alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);

删除外键约束 👻

使用DDL语句删除外键约束。

ALTER TABLE  表名 DROP FOREIGN KEY  约束名;

示例:删除 dept_id 的外键约束。

alter table emp drop foreign key emp_fk;

唯一性约束 💎

增加唯一性约束 👻

使用DDL语句添加唯一性约束。

ALTER TABLE  表名 ADD CONSTRAINT  约束名 UNIQUE(列名);

示例:向 emp 表中的 name 添加唯一约束。

alter table emp add constraint emp_uk unique(name);

删除唯一性约束 👻

使用DDL语句删除唯一性约束。

ALTER TABLE  表名 DROP KEY  约束名;

示例:删除 name 的唯一约束。

alter table emp drop key emp_uk;

非空约束 💎

增加非空约束 👻

使用DDL语句添加非空约束。

ALTER TABLE  表名 MODIFY  列名 类型 NOT NULL;

示例:向 emp 表中的 salary 添加非空约束。

alter table emp modify salary float(8,2) not NULL;

删除非空约束 👻

使用DDL语句删除非空约束。

ALTER TABLE  表名 MODIFY  列名 类型 NULL;

示例:删除emp表中salary 的非空约束。

alter table emp modify salary float(8,2) NULL;

创建表时添加约束 💎

查询表中的约束信息:

SHOW KEYS FROM  表名;

示例:创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值。

create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null);
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7