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:非空约束

2:唯一性约束

3:主键约束

4:外键约束


在MySQL中是有着约束的,约束是什么呢,约束又有什么作用呢。约束顾名思义它是对表有着约束的,而它的作用是为了让数据更加有用,具有有效性。

1:非空约束

如何加非空约束,就是在创建表时定义数据类型的
时候在他的最后面加个not  null就行






drop table if exists stu;     
create table stu(
  name char(10),
  score int not null          
);

insert into stu values('sdff',100);     //正常添加数据

?

再加个空值看看会怎么样


insert into stu(name) values('kl');

很遗憾,加了非空约束,它是不允许你讲它的值设定为空值的。

2:唯一性约束

唯一性约束的定义跟前面的非空约束是一样的
都是在创建数据类型的时候,定义的唯一性
约束。非空约束是not bull,而唯一性约束
是unique。



drop table if exists stu;

create table stu(
  name char(10),
  score int unique
);

insert into stu values('sd',99);
insert into stu values('sd',87);

?

但是我现在在设置了唯一性约束的score字段中
在插入一条99与前面的99会出现重复,会不会报错呢

insert into stu values('kl',99);

?

?唯一性约束,唯一性约束,现在不唯一了,肯定会报错了。

唯一性约束,能不能联合起来具有唯一性呢?

联合起来的唯一性约束大家知道是什么意思呢
假如我联合两个字段,两个字段其中一个字段出现
重复是没有问题的,但如果全部都重复,这才会报错
这就叫联合唯一性约束。


理论知识永远比不过实践,我们看一看具体的例子吧




drop table if exists stu;

create table stu(
 id int,
 name char(10),
 email char(10),
 unique(name,email)
);

insert into stu values(123,'sh','7878');
insert into stu values(111,'sh','9090');
insert into stu values(89,'jk','7878');

?这样子创建是允许的,那么这就是联合唯一性约束,除非联合的全部重复,不然是不会报错的。

如下会报错。

insert into stu values(199,'sh','7878');

?那么唯一性约束可以联合起来的话,not null和唯一性约束可以联合吗,当然可以,不过在MySQL中他们的联合就是相当于后面我们讲到的主键约束(注意是MySQL中,其他数据库就不一定是了),那这里我就不多说了。

3:主键约束

主键是什么呢,主键是一行的标记,就是相当于我们的身份证号,独一无二,可以代表我们的身份,那么我这样一说,你是不是就觉得每张表都应该有主键呢,却是如此,每张表都应该有身份证号的(主键),不然表无效。

主键:  primary key

该如何使用呢,跟前面两个约束四一样的,都是在定义数据类型
的时候,在最后面定义就行。


drop table if exists stu;

create table stu(
name char(10),
id int primary key,
score int
);

insert into stu values('kl',123,98);
insert into stu values('op',189,90);

?接下来你就会发现主键的一些作用了

插入这些代码会报错(报错的理由就不用说了吧,大家肯定都知道滴)


insert into stu values('hj',123,12);

insert into stu values('rt',189,78);

insert into stu(name,score) values('ioio',15);

?4:外键约束

外键约束,怎么说呢,举个例子好点,直接定义却是云里雾里的。

假如有一个学生表(有学生学号,班级号),班级表(班级号,班级名)
现在给学生表一个外键约束,给学生表中的班级号添加了外键约束(与班级表中的班级号相关联)
之后学生表中的班级号只能在班级表中的班级号中填写,不能出现班级表中的班级号的其他数据
如班级表中的班级号没有89,那么学生表中的班级号就无法填写89。、


drop table if exists stu;
drop table if exists class; 
create table class(
  name char(10),
  num int primary key          //一定要注意,你要设置的外键约束所关联的那个父,一定要是主键约 
                                 束,不然会报错的
);

create table stu(
   id int,
   cno int,
   foreign key(cno) references class(num)
);

insert into class values('一班',18);
insert into class values('二班',20);


insert into stu values(123,18);
insert into stu values(122,18);
insert into stu values(189,20);

如果想添加一些数据,外键约束会帮你看看是否符合条件的。

这些代码是会报错的。

insert into stu(199,21);
insert into stu(178,18);

?

在这里我在拓展一个自增(默认从1开始自增)的好东西,
具体不说了,大家只要会用就行啦



drop table if exists stu;

create table stu(
  id int primary key auto_increment,   //注意一定要设置有主键哦
  name char(10)
);


insert into stu(name) values('kl');
insert into stu(name) values('op');
insert into stu(name) values('ioio');
insert into stu(name) values('fg');
insert into stu(name) values('bnbn');

OK, 本文到此结束,如有错误,还请大佬指正!!!

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/24 9:06:41-

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