IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql数据库约束和默认 -> 正文阅读

[大数据]mysql数据库约束和默认

目录

约束:

1.null/not null约束

2.unique约束(唯一约束)

3.primary key约束(主键约束)

4.foreign key约束(外键约束)

5.check约束

默认:default


约束:

1.null/not null约束

null约束:字段可以为null、空

not null约束:字段不能为null、空

在数据库中字段默认为null,如果设置为not null,则在插入时必须写入数据否则报错。

-- 测试数据
CREATE TABLE student (
 ? id INT NOT NULL,  
 ? sn INT,
 ? name VARCHAR(20),
 ? qq_mail VARCHAR(20)
);

在插入:insert into student values (null,1,'张三',1234);
????????则会报:ERROR 1048 (23000): Column 'id' cannot be null
在插入:insert into student(sn) values(1);
????????则会报:ERROR 1364 (HY000): Field 'id' doesn't have a default value


2.unique约束(唯一约束)

unique约束:代表该字段值不能相同

举例:sn字段都插入3时,则会报:ERROR 1062 (23000): Duplicate entry '3' for key 'sn'

注意若字段值为null时可以重复


3.primary key约束(主键约束)

主键约束:可以唯一标识一条数据。(换种说法:利用主键可以精准定位到一条数据

比如:一个身份证号就可以当做主键,因为通过身份证号就能准确找到一个人的信息。

主键约束 = not null + unique约束,并且一张表中只允许有一个主键。

1.主键约束不能为null

2.主键约束不能重复

3.在mysql中,如果是整型主键还可以使用auto_increment(mysql关键字)从1开始自增,此时主键就可以不用插入,他会从1开始自动插入。(auto_increment会从数据库记录的最大值开始+1)


4.foreign key约束(外键约束)

外键约束:用来设计表与表的关系,表1(主表:主键)——表2(从表:外键),通过外键来建立(连接)表与表的关系

1.外键的取值范围:是主表主键的取值范围
比如:一张班级表:主键为班级id,班级id插入1班,2班,3班,那么你学生表中的外键就只能取值为 1班,2班,3班。(就好比学校开了1,2,3班,有个学生说他是4班的,这不合适吧.....)

2.在主表中主键不能重复,但是在从表中外键是可以重复的
比如:你还是班级表(主表)有三个班级id(主键)不能重复,但是学生表(从表)中班级id(外键)是可以重复的,多个学生对应一个班级。

3.关系中一对多还是一对一是有方向的。一个学生对应一个班级(学生到班级1对1),一个班级有多个学生(班级到学生1对多)

举例:设计一个学生表和班级表
语法格式:
-- 格式:foreign key(外键名) references 主表(主表的主键)

--   表的设计
-- 班级表
DROP TABLE IF EXISTS class;
CREATE TABLE class (
 ? id INT PRIMARY KEY auto_increment, -- 班级主键
 ? name VARCHAR(20)   -- 班级名称
);
insert into class 
values(1,'一班'),
      (2,'二班');
      
-- 学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
 ? id INT PRIMARY KEY auto_increment, -- 学生主键
 ? name VARCHAR(20),  -- 学生名称
   class_id int, -- 外键名
   -- 格式:foreign key(外键名) references 主表(主表的主键)
   foreign key(class_id) references class(id) -- 外键 
);
insert into student 
values(11,'张三',1), -- 外键只能取主表中主键的1,2
      (12,'李四',2),
      (13,'王五',2);

结果:


?

5.check约束

check约束:用来检查字段值所允许的范围。

比如:你规定分数字段的值在0-100之间,当插入的数据为200时,则会报错。

mysql忽略check语句的功能(写不写都一样,不生效)


默认:default

某个字段设置了default及default值,那么在插入数据时给该字段赋值,则该字段会自动赋default值。若插入数据时,给该字段插入了值,那么该字段则为插入值,而不是default值

注意:null也可以插入到默认字段中。

1.未在该字段插入值,则自动插入default值

2.在该字段插入确定值,则为确定值

3.在该字段插入null,则为null值

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:06:45  更:2022-05-06 11:07:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:32:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码