《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约束的分享如果有不懂的或者有其他见解的欢迎在下方评论或者私信博主,也希望多多支持博主之后和博客!!🥰🥰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础 - 使用 ssh 服务管理远程主机(window linux vscode)

目录 零. 简介 一. 打开linux shh 二. window连接linux 三. linux连接linux 四. VSCode远程 零. 简介 SSH(Secure Shell)服务是一种网络协议,主要用于在不安全的网络环境中为计算机之间的通信提供安全的加密连接。 SSH 服务具有以下重要…

二、安装虚拟机

本篇来源:山海同行 本篇地址:https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源:以整理到-山海同行 一、官网下载centos7 1. 进入CentOS 官方网站 官方网站:https://www.centos.org/download/ 2. 选择iso 点击下…

高中数学:不等式-常用不等式知识点汇总

一、基本性质 比较大小的常用两种方法:作差法,作商法 等式性质 不等式性质 二、基本(均值)不等式 扩展 三、二次函数与一元二次方程不等式 定义 解的对应关系 一元二次不等式的求解过程 四、二元一次不等式(组)与线性规划 关键在于求多个不等…

无线领夹麦克风怎么挑选,能让声音变好听的领夹麦推荐大全

近年来,随着直播销售和个人视频日志(Vlog)的流行,自媒体内容创作已经成为一种文化现象。这一现象不仅改变了人们获取信息的方式,也极大地推动了相关音频设备的发展。无线领夹麦克风,以其轻巧的设计和出色的…

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …

字节码编程ASM之idea插件asm bytecode outline的使用

写在前面 直接用ASM来编写字节码程序难度其实还是蛮大的,为此,就有热心人事开发了相关的idea插件 ,其中比较优秀的一个是asm bytecode outline,本文就来一起看下如何使用。 1:安装 file->setting->plugins,搜索asm bytec…

gin-vue-amdin 新增路由

1:在api目录的example 下新建controller 层如下图(): 在enter.go 中 加入 这个新建的结构体: 2:在router 的example 文件夹下 新建对应的路由文件 3:在initlize 的router 中 添加对应的代码&a…

PDF处理篇:有哪些免费的PDF注释工具

PDF 是一种功能强大的格式,广泛用于处理和传输数据。您可以创建自己的 PDF 文件,也可以使用其他人创建的 PDF 文件。但是,有时您想在 PDF 文件中包含其他文本、图形和其他元素。这就是 PDF 注释器为您提供帮助的地方。 有许多可用的 PDF 注释…

无线领夹麦克风品牌排名,揭秘哪种领夹麦性价比高!

在直播电商和Vlog的热潮推动下,自媒体内容创作迎来了前所未有的繁荣。麦克风行业也因应这一趋势,迎来了快速的增长期。特别是无线领夹麦克风,以其便携性和高效的录音能力,迅速成为视频制作者的新宠。它不仅在直播带货和短视频制作…

allure安装教程

1、下载 allure的官网下载地址: https://github.com/allure-framework/allure2/releases 注意:官网时常访问失败,可以访问以下网址: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 选择一个版本&…

Uniapp的使用

为什么要使用uniapp uniapp 可以进行多端开发,uniapp 在设计的时候就拥有许多兼容性代码,可以兼容很多的平台 如 支付宝小程序 html页面 微信小程序等,注重开发效率而不是运行效率时 ,就可以考虑一下 uniapp 当然也可以去…

ABAP ALV报表性能优化 经验总结

优化ALV报表,最主要就是优化取数逻辑和数据库查询。因为几乎在所有的程序中都会用到数据库查询,所以这篇文章的内容也不仅局限于SAP、ABAP程序,虽然ABAP有其特殊之处。 优化的时候我遵从以下几个原则: 1.把数据库连接视为一种极其…

Vivo手机怎么录屏?分享2种录屏方法

“新换的Vivo手机还挺好用的,但是今天看到一个视频想录下来保存,但找不到录屏功能啊,想问问大家Vivo手机的录屏功能怎么打开啊?还有Vivo手机能不能录制出高质量的视频呢?” 随着智能手机的普及,录屏功能已…

ChatTTS源码部署

感谢阅读 默认已完成的操作准备工作下载源码安装依赖下载补丁(报错在运行) 界面展示(discord上有各种补丁,我的加了UI补丁和音色增强)提示词常用(这个每个音基本都能生效)语调类语速类情感类 默认已完成的操作 python版本>3.9 cuda版本的…

《化工管理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《化工管理》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《化工管理》级别? 答:国家级。主办单位:中国石油和化学工业联合会 主管单位&…

国产操作系统上配置ssh互信 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上配置ssh互信 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇在国产桌面操作系统上配置SSH互信的文章。SSH(Secure Shell)是一种安全协议,用于在不安全的网络上安全地…

uniapp app分享页面到微信的功能方法

最近开发uniapp app项目时,有分享页面的功能需求,因此,给大家分享一下,在uniapp环境里,是如何分享页面到微信H5页面的。 如上图所示:app主体代码就是这样了,查看相应配置就可以,同时…

Swoole v6 能否让 PHP 再次伟大?

大家好,我是码农先森。 现状 传统的 PHP-FPM 也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求。而且对于 PHP 脚本来说,只是接收请求和响应请求,并不参与网络通信。对数据库资源的操作…

Android (已解决)Execution failed for task ‘:app:lint‘

文章目录 一、错误原因二、解决方法 一、错误原因 这个错误信息表示在执行 Lint 检查时发现了错误,导致构建过程被中断。Lint 是一个用于检测 Android 项目中潜在问题的工具,比如性能、安全性、可用性等方面的问题。当Lint检查到严重错误时,…

“北京到底有谁在啊”影视APP开发,解锁最简单的快乐

随着电视剧《玫瑰的故事》在腾讯视频APP热播,APP也增加了很多热度,一款丰富的影视APP,无论是热门大片、经典影视剧、还是最新综艺节目,能畅享无限精彩的影视内容! 开发影视APP,需要专业的技术服务商来解决…