前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL【知识改变命运】08

MySQL【知识改变命运】08

作者头像
用户11319080
发布2024-10-17 19:29:28
发布2024-10-17 19:29:28
11600
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

数据库约束是关系型数据库的一个重要约束 主要保证数据插入的有效性(数据本身是否正确,关联关系是否正确) 人工检查数据工作量太大了,在数据库中定义一些约束,那么数据在写入数据库时候,就会帮助我们做一些检查。

1:约束的几个类型

类型

说明

NOT NULl非空约束

指定非空约束列不能出现NULL 值

DEFALUT 默认约束

当前没有给指定列值时候。默认使用默认值。

UNIQUE 唯一约束

指定唯一约束的列,这条列上面不能出现相同的值

FRIMARY KEY 主键约束

NOT NULL和UNIQUE的结合,可以指定一个或者多个列(复合主键),但是只能有一个主键,有助于数据的查询

POREIGN KEY 外键约束

外键约束关联两张表

CHECK 约束

用于限制或数据库表中的值,确保数据可靠性,准确性

2:NOT NULL非空约束

创建一个表:

创建一个学生表中,name一般不能为NULL,名字为那样就没有意义。我们就要给名字加上NOTNULL 非空约束条件;

我们查询表结构,就可以看出来NULL那一列为no表示不能为NULL值

这样name这一列添加NULL就会报错。

3:UNIQUE 唯⼀约束

当我们设置让一个列有唯一值时候,就可以给这列设置UNIQUE ,比如我们让id列为唯一值; 创建一个表:

我们给id列限制了UNIQUE,id就不能插入重复值,所有当第二次插入数据时候,就报错了,但是可以插入NULL

4:PRIMARY KEY 主键约束

主键约束唯⼀标识数据库表中的每条记录。 主键必须包含唯⼀的值,且不能包含 NULL 值。 每个表只能有⼀个主键,可以由单个列或多个列组成。 通常为每张表都指定⼀个主键,主键列建议使⽤BIGINT类型 比

主键=唯一+非空。 我们也可以给主键加入自增列标识:

我们在设置AUTO_INCREMENT前id列是不可以插入NULL,但是设置后,可以插入NULL,但是NULL会被转化id自增列的数据

在这里插入图片描述
在这里插入图片描述

我们也可以手动设置主键列的值auto_increment

下次auto_increment 就是从1001开始计数。

每个表只能有一个主键

但是一个主键可以包含多个列:

如果是复合健必须所有列都是一样的才能被判定为一样。、

替换,如果存在冲突则替换,不存在冲突则插⼊

代码语言:javascript
代码运行次数:0
运行
复制
# 语法
REPLACE [INTO] table_name
 [(column [, column] ...)]
VALUES
 (value_list) [, (value_list)] ...
value_list: value, [, value] ...

4.1:回顾

接下来介绍一下自增操作: 自增操作不管插入数据失败还是成功都不会回退,自增操作在插入的前面。

5:FOREIGN KEY 外键约束

外键⽤于定义主表和从表之间的关系 外键约束主定义在从表的列上,主表关联的列必须是主键或唯⼀约束 当定义外键后,要求从表中的外键列数据必须在主表的主键或唯⼀列存在或为null。

5.1:创建班级表(主表),并初始化数据

5.2:重构学⽣表(从表),加⼊外键约束

代码语言:javascript
代码运行次数:0
运行
复制
# 语法:
foreign key (id) references class(id)
drop table if exists student;



# 重构表
create table student(
id bigint PRIMARY KEY auto_increment, 
 name varchar(20) not null,
 age int DEFAULT 18,
 class_id bigint,
 foreign key (class_id) references class(id) # 创建外键约束
);

查看表结构,Key列的值为MUL表⽰外键约束的列

正常插⼊数据

插⼊⼀个班级号为100的学⽣,由于主表中没有这个班级,插⼊失败

插⼊班级Id为NULL的记录,可以成功,表⽰当前学⽣还没有分配置班级

删除主表某条记录时,从表中不能有对该记录的引⽤

删除主表某条记录时,从表中不能有对该记录的引⽤

删除主表时要先删除从表

6:DEFALUT 默认值约束

DEFAULT 约束⽤于向列中插⼊默认值,如果没有为列设置值,那么会将默认值设置到该列 语法:

代码语言:javascript
代码运行次数:0
运行
复制
DEFALUT 默认值

7:CHECK 约束

可以应⽤于⼀个或多个列,⽤于限制列中可接受的数据值,从⽽确保数据的完整性和准确性。在8.0.16开始全⾯⽀持CHECK约束,之前的版本会忽略CHECK的定义 但是注意,一般再应用程序级别校验

代码语言:javascript
代码运行次数:0
运行
复制
create table student(
 id bigint PRIMARY KEY auto_increment, # 设置⾃增主键
 name varchar(20) not null,
 age int DEFAULT 18,
 gender char(1),
 check (age >= 16),
 check (gender = '男' or gender = '⼥')
);

列与列之间也可以⽐较,需要在单独⼀⾏中定义

代码语言:javascript
代码运行次数:0
运行
复制
create table t_check (
 c1 int check(c1 <> 0),
 c2 int check(c2 > 0),
 c3 int,
 check(c3 >= c2)
);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1:约束的几个类型
  • 2:NOT NULL非空约束
  • 3:UNIQUE 唯⼀约束
  • 4:PRIMARY KEY 主键约束
    • 4.1:回顾
  • 5:FOREIGN KEY 外键约束
    • 5.1:创建班级表(主表),并初始化数据
    • 5.2:重构学⽣表(从表),加⼊外键约束
  • 6:DEFALUT 默认值约束
  • 7:CHECK 约束
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档