《mysql》--mysql约束

数据库约束

有的时候数据库中的数据是有一定要求的,有些数据认为是合法数据,有些是非法数据,如果靠人工检查显然是不靠谱的;

数据库会自动的对数据的合法性进行校验检查目的就是,保证数据中能够避免被插入/修改一些非法的数据

MySQL中提供了以下约束:

not null-指示某列不能存储null值

unique-保证某列的每行必须有唯一值

default-规定没有给列赋值时的默认值

paimary key--not null和nuique的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易增删查改

foreign key-保证一个表中的数据匹配另一个表中的值的参照完整性

check-保证列中的值符合指定的条件

//这些约束一般都是在创建表时添加上的

not null

在创建表时在所对应的字段后面加上not null该列字段就不能为空

举例: create table student1(name varchar(20) not null,age int,score int,calss varchar(20));

unique

在创建表时在对应字段后面追加上unique,该列就不能出现重复的数据

举例: create table student1(name varchar(20) ,age int,score int unique,calss varchar(20));

default

创建表时在对应字段后面追加上在default '默认值',可以设定该行字段的默认值

举例:create table student1(name varchar(20) default 'unknow' ,age int,score int,calss varchar(20));

主键

创建表时在对应字段后面追加上paimary key,确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。

举例: create table student1(id int primary key,name varchar(20) default 'unknow' ,age int,score int);

自增主键primary key auto_increment

//可以自己增加的主键,会在原有主键的最大值上+1,最为新数据的主键

举例: create table student1(id int paimary key auto_increment key,name varchar(20) default 'unknow' ,age int,score int);

我们再来看另外一个例子:

//相当于使用了一个变量,来保存了当前的id的最大值,后续分配自增主键,都是根据这个最大值来分配,如果手动指定id,也会更新最大值

//3-4之间的id在这里就是浪费了,不过并不影响后面的操作

//此处id的自动分配也是有局限性的,如果是单个的mysql服务器,就没问题,但如果是一个分布式系统,有多个mysql服务器构成的集群,这个时候依靠自增主键就不行了

外键

foreign key (字段名) references 主表(列)

举例: create table classes(classID int primary key auto_increment,

grade int,

class varchar(20));

create table student(

id int primary key auto_increment,

classID int,name varchar(20),

foreign key(classID) references classes(classID));

//描述了两个表之间的关联关系,这里classes是父表,student是子表

//两个表用外键连接起来,子表(student)中的classID列中的数据必须在父表(classes)中的classID列里能找到一样的数据,不然无法插入

//针对父表进行修改/删除操作,如果当前被修改/删除的值,已经被子表引用了,这样的操作也会失败,外键约束始终要保持,子表中的数据在对应的父表的列中存在

以上就是博主对mysql约束的分享如果有不懂的或者有其他见解的欢迎在下方评论或者私信博主,也希望多多支持博主之后和博客!!🥰🥰

相关推荐
一 乐1 天前
海产品销售系统|海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·后端
mjhcsp1 天前
C++ 三分查找:在单调与凸函数中高效定位极值的算法
开发语言·c++·算法
我命由我123451 天前
Element Plus 组件库 - Select 选择器 value 为 index 时的一些问题
开发语言·前端·javascript·vue.js·html·ecmascript·js
沐知全栈开发1 天前
MySQL 删除数据库指南
开发语言
立志成为大牛的小牛1 天前
数据结构——四十二、二叉排序树(王道408)
数据结构·笔记·程序人生·考研·算法
qq. 28040339841 天前
js 原型链分析
开发语言·javascript·ecmascript
大飞哥~BigFei1 天前
RabbitMq消费延迟衰减重试实现思路
java·分布式·rabbitmq
Elnaij1 天前
从C++开始的编程生活(13)——list和浅谈stack、queue
开发语言·c++
有趣的野鸭1 天前
JAVA课程十一次实验课程主要知识点示例
java·前端·数据库
Funny_AI_LAB1 天前
李飞飞联合杨立昆发表最新论文:超感知AI模型从视频中“看懂”并“预见”三维世界
人工智能·算法·语言模型·音视频