MySQL 数据库创建表约束

本文详细介绍了数据库中的四种主要约束类型:唯一约束、非空约束、主键约束和外键约束。唯一约束确保列值不重复,允许插入多个NULL;非空约束则不允许NULL值;主键约束结合了非空和唯一约束;外键约束用于建立表间关联,确保数据一致性。了解这些约束对于设计高效、稳定的数据库至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束

约束是用来限制表中的数据长什么样子的。即什么样的数据可以插入到表中,什么样的数据插入不到表中
符合约束要求的数据就可以插入到表中,不符合约束要求的数据就插入不到表中。

1》唯一约束

设置了唯一约束的列值不能有重复值
使用unique 关键字指定唯一约束

例如:
创建收货地址表,给收货人电话这一列加唯一约束
建表语句:
CREATE TABLE address ( add_name VARCHAR (30), add_phone CHAR(11) UNIQUE, add_address VARCHAR (200), is_default CHAR(1), add_account INT ) ;

注意:

设置了唯一约束的列可以插入NULL,可以插入多个NULL,不受唯一约束的限制,其他明确的值受唯一约束限制

2》非空约束

设置了非空约束的这一列插入NULL插入不进去,必须插入明确的值
使用not null关键字设置非空约束

例如:
创建收货地址表,将收货人姓名设置非空约束
建表语句:
CREATE TABLE address ( add_name VARCHAR (30) NOT NULL, add_phone CHAR(11), add_address VARCHAR (200), is_default CHAR(1), add_account INT ) ;

设置非空约束的列,插入null值报错

注意:
设置非空约束的列可以插入重复值

3》主键约束

相当于是非空约束+唯一约束,设置了主键约束的列即不能为NULL,也不能重复
使用primary key关键字设置主键约束
使用最频繁的约束,设计表时,一般情况下,会给每一张表的设置一个主键约束,设置主键约束的这一列一般是id这一列

例如:
创建收货地址表,给id这一列增加主键约束
建表语句:
CREATE TABLE address ( id INT PRIMARY KEY, add_name VARCHAR (30) NOT NULL, add_phone CHAR(11), add_address VARCHAR (200), is_default CHAR(1), add_account INT ) ;

4》外键约束

外键约束经常和主键约束一起使用,对于两个具有关联关系的表而言的(系别表和学生表、账号表和收货地址表),被参考的表叫做主表,(系别表主表和账号表示主表),要参考值的表叫做从表(学生表和收货地址表是从表)

使用foreign key(从表中外键的列名) references 主表名(主表的主键)

加外键的步骤:

1、先创建主表(主表中被参考的那一列设置成主键) 例如:系别表的did设置成主键、账号表的id这一列设置成主键
2、再创建从表(从表中有一列是参考主表中的主键那一列,从表中的这一列设置成外键)

例如:

给收货地址表的所属账号设置外键
1、创建主表:账号表 账号表的id这一列设置成主键
建表语句:
CREATE TABLE account ( id INT PRIMARY KEY, username VARCHAR (25), nicheng VARCHAR (10), sex CHAR(2), passwd VARCHAR (20) ) ;
2、创建从表:收货地址表 所属账号 设置成外键
CREATE TABLE address ( id INT PRIMARY KEY, add_name VARCHAR (30) NOT NULL, add_phone CHAR(11), add_address VARCHAR (200), is_default CHAR(1), add_account INT, FOREIGN KEY (add_account) REFERENCES account (id) ) ;

5》默认值约束

设置了默认值约束的这一列,如果插入数据是不指定值,那么插入的数据的值就是设置的默认值
使用default关键字设置默认值约束

例如:
要给账户表 性列设置默认值是男
建表语句:
CREATE TABLE account ( id INT PRIMARY KEY, username VARCHAR (25), nicheng VARCHAR (10), sex CHAR(2) DEFAULT '男', passwd VARCHAR (20) ) ;

主键: PRIMARY KEY
非空:not null
默认值:default 值
唯一:unique
外键:foreign
key(从表中外键的列名) references 主表名(主表的主键)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@chameleon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值