mysql添加主键、外键、唯一、非空约束
2021/9/6 2:07:07
本文主要是介绍mysql添加主键、外键、唯一、非空约束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 、约束的作用
对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无
法插入到表中。约束在创建表的时候添加比较合适。
2 、约束种类
2.1 主键约束 primary key
2.1.1 主键的作用
- 非空且唯一
- 一张表只能有一个字段为主键,(用来唯一标识数据库中的每一条记录)
- 通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行
2.2.2 主键操作
- 创建表的时候创建主键
create table st5 (
id int primary key, -- id 为主键
name varchar(20),
age int
)
- 删除主键
alter table st5 drop primary key;
- 创建表后添加主键
alter table st5 add primary key(id);
2.2.3 主键自增
主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值
- AUTO_INCREMENT 表示自动增长(字段类型必须为整数类型)
create table st5 (
id int primary key auto-increment, -- 给id 创建自动增长
name varchar(20),
age int
)
-- 插入数据 之后查询数据 发现id是自动增长的
insert into st5 (name,age) values ('小乔',18);
insert into st5 (name,age) values ('大乔',20);
- 修改自增长的默认值起始值
-- 指定起始值为 1000
create table st4 (
id int primary key auto_increment,
name varchar(20)
) auto_increment = 1000;
- 创建好以后修改起始值
alter table st4 auto_increment = 2000;
- 创建完表之后删除自动增长
alter table st4 modify id int;
- 添加自动增长
alter table st4 modify id int auto_increment;
2.2 唯一约束
- 什么是唯一约束:表中某一列不能出现重复的值
2.2.1 唯一约束语法格式:字段名 字段类型 UNIQUE
-- 创建学生表 st7, 包含字段(id, name),name 这一列设置唯一约束,不能出现同名的学生
create table st7 (
id int,
name varchar(20) unique
)
-
注意:唯一约束可以有null值,但是只能有唯一一条记录为null
-
删除唯一约束:alter table st7 drop index name;
-
在表创建完之后创建唯一约束:alter table st7 modify name varchar(20) unique;
2.3 非空约束
- 什么是非空约束:某一列不能为 null。
-- 创建表学生表 st8, 包含字段(id,name,gender)其中 name 不能为 NULL
create table st8 (
id int,
name varchar(20) not null,
gender char(1)
)
-- 删除st8 name的非空约束:alter table st8 modify name varchar(20);
- 默认值:字段名 字段类型 DEFAULT 默认值
-- 创建一个学生表 st9,包含字段(id,name,address), 地址默认值是广州
create table st9 (
id int,
name varchar(20),
address varchar(20) default '广州'
)
-- 添加一条记录,使用默认地址
insert into st9 values (1, '李四', default);
-- 添加一条记录,不使用默认地址
insert into st9 values (3, '李四光', '深圳');
疑问:如果一个字段设置了非空与唯一约束,该字段与主键的区别?
-
主键数在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列。
-
自增长只能用在主键上
2.4 外键约束
什么是外键约束:
1)什么是外键:在从表中与主表主键对应的那一列,如:员工表中的 dep_id
2)主表: 一方,用来约束别人的表,从表: 多方,被别人约束的表
创建/删除 约束的语法
1)新建表时增加外键:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名****)
create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int, -- 外键对应主表的主键
-- 创建外键约束
constraint emp_depid_fk foreign key (dep_id) references department(id)
)
2)已有表增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表字段名);
3)删除外键的语法:
ALTER TABLE 从表drop foreign key 外键名称;
-- 删除 employee 表的 emp_depid_fk 外键
alter table employee drop foreign key emp_depid_fk;
什么是级联操作:
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
ON UPDATE CASCADE:级联更新,只能是创建表的时候创建级联关系。更新主表中的主键,从表中的外键
列也自动同步更新
ON DELETE CASCADE :级联删除
这篇关于mysql添加主键、外键、唯一、非空约束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧