数据库的五大约束

本文详细介绍了数据库中的六种约束类型:主键约束,确保数据唯一且不能为空;自增约束,自动为主键生成唯一标识;唯一约束,允许数据唯一但可为空;非空约束,限制字段不能为空;默认约束,为字段设定默认值;以及外键约束,建立表间关系,防止数据冗余。检查约束虽然在某些版本的数据库中效果有限,但在理论上用于限制字段值的范围。

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

文章目录

  • 1.主键约束:primary key    自增:auto_increment
  • 2.唯一约束:unique
  • 3.非空约束:not null
  • 4.默认约束:default  _______
  • 5.外键约束:foreign key
  • 6.检查约束:check

 





1.主键约束:primary key    自增:auto_increment

代码示例:

create table abc(

id int primary key auto_increment

);

测试:

insert into abc values(null);

insert into abc values(null);

insert into abc values(null);

select * from abc;

 

主键特点:唯一且不能为空,通常情况下,每张表都会有它的主键。

自增特点:设置主键自增策略后,数据库会在表中保存一个自增的变量值,初始值为1,当需要id值的时候,不需要我们指定值,数据库会从自增自动获取一个id值,作为主键插入到表中,每次用完后都会自增1。

 





2.唯一约束:unique

代码示例:

create table test(

id int primary key auto_increment,

username varchar(50) unique

);

测试:

insert into test values(null,'lisi');

insert into test values(null,'lisi');

select * from test;

 

唯一约束特点:

如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

 


 

3.非空约束:not null

代码示例:

代码示例:

create table user(

id int primary key auto_increment,

password varchar(50) not null

);

测试:

insert into user values(null,null);

insert into user values(null,123);

 

 

非空约束特点:

如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。


 4.默认约束:default  _______(下划线为设置的默认值)

代码示例:

CREATE TABLE h(

 id INT PRIMARY KEY AUTO_INCREMENT,#主键自增

 sex VARCHAR(10) DEFAULT '男' #默认约束

)

 

默认约束特点:

默认约束的字段值默认为默认约束的设置值。

 

 

5.外键约束:foreign key

代码示例:

案例(用主键连接两个表,使两个表产生关系):

(主表)

CREATE TABLE tb_user(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(20)

)

(子表)

CREATE TABLE tb_user_addr(

user_id INT PRIMARY KEY,

addr VARCHAR(20),

#当前子表的主键为主表的主键

FOREIGN KEY(user_id) REFERENCES tb_user(id)

)

 

注释:1、两表id值必须保持一致(tb_user为主表:子表id必须取自主表id),否则报错。

2、想删除主表里的信息,必须先删除子表里的数据。

 

 

作用:避免存储重复的数据。

:设置id为外键后,主表中存在的id,子表中不能重复出现。

(即:增加外键后,子表中出现的id的值必须是取自主表中已经存在的id值)

 

 

6.检查约束:check(几乎不用)

代码示例:

例:CREATE TABLE i(

id INT(12),

age INT,

CHECK(age>18 AND age<200)

)

 

检查约束作用:

设置检查约束的字段值,如左侧示例代码:age的值必须大于18,小于200,否则报错。

(提示:现在检查约束已经用的很少了,我在发布之前在SQLyog上特意测试过代码,发现检查约束几乎可以说是毫无约束效果可言,大概是我现在用的版本高了一点的原因,换个低版本说不定可以测试出来效果,可惜我没有这个耐心,大概这也是。。嗯,和大佬的区别这就体现出来了吗?!

不过有兴趣的朋友可以测试一下。

且以上内容仅供参考。

完。)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值