约束

创建表的时候可以给字段添加相应的约束,约束的目的:保证表中数据的合法性,唯一性,有效性。

非空约束(not null):约束字段不能为NULL

唯一约束(unique):约束字段不能重复

主键约束(primary key):约束字段既不能为NULL也不能重复

外键约束(foreign key):阿里巴巴手册,已经禁止使用外键了

检查f约束(check):Oracle数据库有check约束,但是Mysql没有。

注意:我们主要还是记住英文,平时使用的都是英文!

1.非空约束 not null

1
2
3
4
5
CREATE TABLE mytable(
   id  INT(10),
   username VARCHAR(30) NOT NULL,    #添加非空约束
   PASSWORD VARCHAR(30)
);

测试

1
2
insert into mytable(id,password) values(1,'123') ;  #由于我们的的用户字段要求非空,所以会执行失败
ERROR 1364(HY000) : Filed 'username' doesn't have a default value

2.唯一约束(unique)

测试

列级约束

测试

表级约束

测试

 

3.主键约束(primary key) *
必须记住:一张表的主键约束只有一个 ;最好与别的字段不相关,仅仅代表唯一标识 !

1
2
3
4
5
CREATE TABLE mytable(
   id  INT(10) PRIMARY KEY,       #添加主键约束【属于列级约束】
   username VARCHAR(30),
   email VARCHAR(30)
);

测试

 

【表级约束】

主键值自增:在primary key后面添加auto_increment(从1开始,递增);

了解:Oracle也提供一个自增序列叫做序列(sequence);

4.外键约束(foreign key)

关于外键约束的相关术语

  • 外键约束:foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。

t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表。

顺序要求:

  • 删除数据的时候,先删除子表,再删除父表。
  • 添加数据的时候,先添加父表,在添加子表。
  • 创建表的时候,先创建父表,再创建子表。
  • 删除表的时候,先删除子表,在删除父表。

使用外键【Alibaba规范不推荐使用】

1
2
3
4
5
6
7
8
9
10
11
12
create table t_class(
    cno int ,<br>    cname varchar(255) ,    #被引用:父表
    primary key(cno)
);
 
create table t_student(
    sno int ,
    sname varchar(255) ,   #子表
    classno int
    foreign key(classno) reference t_class(cno)
);
#t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表

 

  • reference是引用;
  • 外键可以为NULL;
  • 此时classno中的数据来自cno;
  • 外键引用的字段不一定是主键,但是起码是被unique约束;
posted @   腹白  阅读(246)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示