数据库的五大约束及其内容

文章目录

  • 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>18AND age<200)

)

检查约束作用:

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

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

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

且以上内容仅供参考。

完。)


版权声明:本文为m0_58209328原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。