mysql字段约束

本文详细介绍了MySQL中四种主要的字段约束:主键(primary key)、唯一(unique)、非空(not null)和外键(foreign key)。主键约束确保数据的唯一性和非空性,常用作表的标识;唯一约束允许为空但不允许重复;非空约束则规定字段不能为NULL;外键用于建立表间关联,虽然在某些情况下可能影响操作便捷性。示例展示了各种约束的创建方法。
摘要由CSDN通过智能技术生成

mysql字段约束

1.前言

之前一直想着整理mysql字段约束相关的知识,但是这个知识之前只是知道个大概,这次正好看到一个帖子讲的挺好,顺便好好的整理一下

2.字段约束种类

  • 主键(primary key)
  • 唯一(unique)
  • 非空(not null)
  • 外键约束

3.示例

主键(primary key)

特点:唯一且不能为空!!!

当主键为数值时,为了方便维护,可以设置主键为自增(auto_increment)

示例:创建user表,指定id为主键, 并指定主键自增

第一种方式:主键自增和主键声明放一起

create table user(
	id int primary key auto_increament,
	name varchar(50) 
    ......
);

第二种方式:主键自增放在最后

create table user(
	id int  auto_increament,
	name varchar(50) ,
    ......,
    primary key(id)
);

唯一(unique)

特点:唯一约束特点是不能重复!!(允许为空)

重点说明:

唯一约束,可以为空

允许为空

示例:创建user表, 指定用户名不能重复

create table user(
	id int primary key auto_increament,
	username varchar(50) unique,
	...
);

非空(not null)

特点:不能为空值, 即插入数据时该列必须得有值!!

示例:创建user表, 指定密码不能为空

create table user(
	id int primary key auto_increament,
	username varchar(50) unique,
	password varchar(50) not null,
	...
);

外键

示例:员工部门表,员工表设置部门id为外键

第一种方式:建表的时候指明外键

-- 创建部门表
create table dept(
	id int primary key auto_increment,	-- 部门编号
	name varchar(20)					-- 部门名称
);

-- 创建员工表
create table emp(
	id int primary key auto_increment,	-- 员工编号
	name varchar(20),					-- 员工姓名
	dept_id int,						-- 部门编号
	foreign key(dept_id) references dept(id) -- 指定dept_id为外键
);

第二种方式:如果表已存在,可以使用下面这种方式:

-- 创建部门表
create table dept(
	id int primary key auto_increment,	-- 部门编号
	name varchar(20)					-- 部门名称
);

-- 创建员工表
create table emp(
	id int primary key auto_increment,	-- 员工编号
	name varchar(20),					-- 员工姓名
	dept_id int							-- 部门编号
);

-- 如果表已存在,可以使用下面这种方式:
alter table emp add constraint fk_dept_id foreign key(dept_id) references dept(id);

其中 add constraint fk_dept_id 表示新增列,列名为**fk_dept_id** (名字由自己定义)

说明:

一般情况下,我们表是不设置外键的,因为外键的设置导致很多操作不方便

4.重点说明

  • 唯一(unique)约束是可以设置空值的

  • 正常情况下不设置外键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值