MySQL的表的约束以及查询

本篇文章继续给大家梳理MySQL的操作

目录

 表的约束

空属性

默认值

列描述

0填充

主键

主键常识

添加主键

删除主键

复合主键

自增长

唯一键

 外键

单/多行输入与全/指定列的插入

全列输入

单行输入

多行插入

指定列插入

单行输入

多行插入

插入否则更新

替换

查询

全列查询

指定列查询

结果去重

where条件

比较运算符

函数

日期函数

字符串函数

数学函数

多表查询

子查询

多行子查询

多列子查询

合并查询

union


 表的约束

正真约束字段的是数据类型,但是数据类型类型约束很单一,因此需要一些额外的约束,来保证数据的合法性

空属性

首先关键字是null,它表示的是空,not null表示的是非空

创建表中,可以在字段的数据类型后面跟上这个关键字,在插入数据时就会起到约束作用

样例:

当然啦,上面这个是在Linux中的展示。什么,你说你想看在MySQL中的呀,行吧行吧,满足你的愿望

其实在大体上都是与Linux中的差不多的,那么这个是非空的例子,相信大家看完这个例子就算是设置为空属性的也可以无师自通了

默认值

关键字:default

用法:跟在字段的数据类型后面

基本语法:default 内容     这里稍微举个例子:默认值为数字,default  0   默认值为字符,default 'a'

样例:

列描述

关键字:comment

用法:跟在字段的数据类型后面

基本语法:comment '内容'

样例:

这里说一下,这个comment与c/c++,java,python中的注释很像都是给程序员看的,在查询表的时候不会被展示出来

0填充

关键字:zerofill

用法:跟在字段的数据类型后面

样例:

最后的结果图也就成了这样

从图中我们可以看到字段a后面有zerofill因此有了0填充,而b没有zerofill,所以只输出了2

主键

关键字:primary key

主键常识

用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个

主键所在的列通常是整数类型。

主键对应的字段中不能重复,一旦重复,操作失败。

添加主键

当表创建好以后但是没有主键的时候,可以再次追加主键

基本语法:

案例:

删除主键

基本语法:alter table 表名 drop primary key;

复合主键

基本语法及案例:

自增长

关键字:auto_increment

理解性记忆:auto在c++中是自动判断类型,increment是增长的意思,它俩由于在意思上表达有点远因此需要一座桥将它俩连接到一起,于是就有了自增长

什么是自增长?

当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

特点:

1. 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)

2. 自增长字段必须是整数

3. 一张表最多只能有一个自增长

唯一键

一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以 解决表中有多个字段需要唯一性约束的问题。

唯一键的本质和主键类似,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较

主键和唯一键的区别:

我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息 出现重复。

举个简单的例子:

假设一个场景, 比如在公司,我们需要一个员工管理系统,系统中有一个员工表,员工表中有两列信息,一个身份证号码,一 个是员工工号,我们可以选择身份号码作为主键。 而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。 具体指的是在公司的业务上不能重复,我们设计表的时候,需要这个约束,那么就可以将员工工号设计成为唯 一键。

当然啦这个例子也是借鉴了b站的一位up主的讲解。

唯一键的使用:

 外键

作用:于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null

基本语法:foreign key (字段名) references 主表(列)

单/多行输入与全/指定列的插入

全列输入

单行输入

语法:insert into 表名 value(内容);

多行插入

语法:insert into 表名 values(内容),(内容),(内容);

指定列插入

单行输入

insert into 表名(列名)value(内容);

多行插入

insert into 表名 values(内容),(内容),(内容);

插入否则更新

INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...

替换

基本语法:replace into students(sn,name) values(内容);

查询

全列查询

语法:select* from 表名;

指定列查询

语法:select 列名 from 表名;

结果去重

关键字:distinct

语法:select distinct 列名 from 表名;

where条件

比较运算符

逻辑运算符

函数

日期函数

字符串函数

数学函数

 

多表查询

select ename, sal,dname from EMP, DEPT where EMP.deptno=DEPT.deptno and DEPT.deptno =

 //              列名                              表名                                  条件

10;

注意:当需要拿出一个表中的某一列进行与另一个表中的某一列进行比较时

语法:表名.列名

子查询

样例:

select empno,ename from emp where emp.empno=(select mgr from emp where

ename='FORD');

基本语法:select 列名 from 表名 where  列名 = (select 列名 from 表名)

差不多是这样的意思 ,总之,子查询的本质是select语句中又包含了一个select语句

多行子查询

多列子查询

样例:

select ename from EMP where (deptno, job)=(select deptno, job from EMP where ename='SMITH') and ename <> 'SMITH';

where语句内的解释:

where (deptno, job)=(select deptno, job from EMP where ename='SMITH') and ename <>

                 列名                           子查询

'SMITH';

 当子查询返回的deptno和job与括号内的deptno和job相等

合并查询

为了合并多个select的执行结果,可以使用集合操作符 union,union all

union

该操作符用于取得两个结果集的并集。会去重

union all

该操作符用于取得两个结果集的并集。不会去重

本篇文章的内容就先到这,下篇文章再见!!!

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

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

相关文章

MySQL 日志 主从复制

1. 日志 学习链接&#xff0c;click mysql中有4种日志&#xff1a; 错误日志二进制日志查询日志慢查询日志 1.1 错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysqld启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当…

自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)

在全球公共卫生事件频发的背景下&#xff0c;防护口罩佩戴检测成为保障公众健康和控制病毒传播的重要手段之一。特别是在人员密集的公共场所&#xff0c;例如医院、学校、公共交通工具等地&#xff0c;口罩的正确佩戴对降低病毒传播风险、保护易感人群、遏制疫情扩散有着至关重…

vue使用List.reduce实现统计

需要对集合的某些元素的值进行计算时&#xff0c;可以在计算属性中使用forEach方法 1.语法&#xff1a;集合.reduce ( ( 定义阶段性累加后的结果 , 定义遍历的每一项 ) > 定义每一项求和逻辑执行后的返回结果 , 定义起始值 ) 2、简单使用场景&#xff1a;例如下面…

Ubuntu24.04安装和配置Redis7.4

Ubuntu24.04安装和配置Redis7.4 #切换到root用户 sudo su -#更新源 apt update apt upgrade#安装 lsb-release、curl 和 gpg &#xff0c;以便能够添加 Redis 仓库 apt install lsb-release curl gpg#导入 Redis 的 GPG 密钥 curl -fsSL https://packages.redis.io/gpg | gpg …

【Linux】进程的优先级

进程的优先级 一.概念二.修改优先级的方法三.进程切换的大致原理&#xff1a;四.上下文数据的保存位置&#xff1a; 一.概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。 优先权高的进程有优先执行权利。配置进程优先权对多任务环…

ESLint 使用教程(七):ESLint还能校验JSON文件内容?

系列文章 ESLint 使用教程&#xff08;一&#xff09;&#xff1a;从零配置 ESLint ESLint 使用教程&#xff08;二&#xff09;&#xff1a;一步步教你编写 Eslint 自定义规则 ESLint 使用教程&#xff08;三&#xff09;&#xff1a;12个ESLint 配置项功能与使用方式详解 ES…

【软件工程】一篇入门UML建模图(类图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

uniapp 跨域前端代理

manifest.json里找到H5&#xff0c;添加下面代码 请求封装里直接 url ‘/test’ 就可以 "devServer" : {"https" : false,"port" : 8080,"proxy" : {"/test" : {"target" : "http://192.168.5.20:8080&qu…

AWTK-WIDGET-WEB-VIEW 实现笔记 (3) - MacOS

MacOS 上实现 AWTK-WIDGET-WEB-VIEW 有点麻烦&#xff0c;主要原因是没有一个简单的办法将一个 WebView 嵌入到一个窗口中。所以&#xff0c;我们只能通过创建一个独立的窗口来实现。 1. 创建窗口 我对 Object-C 不熟悉&#xff0c;也不熟悉 Cocoa 框架&#xff0c;在 ChatGPT…

QT仿QQ聊天项目,第三节,实现聊天界面

一&#xff0c;界面控件示意图 界面主要由按钮QPushButton,标签QLabel,列表QListWidget 要注意的是QListWidget既是实现好友列表的控件&#xff0c;也是实现聊天气泡的控件 二&#xff0c;控件样式 QPushButton#btn_name {border:none;}QPushButton#btn_close {border:1px;bac…

微信小程序自定义顶部导航栏(适配各种机型)

效果图 1.pages.js&#xff0c;需要自定义导航栏的页面设置"navigationStyle": "custom" 2.App.vue,获取设备高度及胶囊位置 onLaunch: function () {// 系统信息const systemInfo uni.getSystemInfoSync()// 胶囊按钮位置信息const menuButtonInfo uni.…

7、硬盘品牌分类介绍:海力士 - 计算机硬件品牌系列文章

海力士&#xff0c;‌全称为SK海力士&#xff0c;‌是一家总部位于韩国的全球顶级半导体供应商&#xff0c;‌专注于动态随机存取存储器(‌DRAM)‌、‌NAND快闪存储器(‌NAND Flash)‌及CMOS图像传感器(‌CIS)‌等产品的研发、‌生产和销售。‌作为韩国第三大财阀SK集团旗下的子…

Android Studio开发学习(五)———LinearLayout(线性布局)

一、布局 认识了解一下Android中的布局&#xff0c;分别是: LinearLayout(线性布局)&#xff0c;RelativeLayout(相对布局)&#xff0c;TableLayout(表格布局)&#xff0c; FrameLayout(帧布局)&#xff0c;AbsoluteLayout(绝对布局)&#xff0c;GridLayout(网格布局) 等。 二、…

C++:哈希拓展-位图

目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…

[AI] 如何让计算机具备核心直觉知识:从常识推理到具身智能

随着人工智能(AI)技术的发展,如何让计算机具备核心的“直觉知识”成为重要的研究课题之一。十多年来,AI研究者们持续探索如何使机器不仅能处理大量数据,还能像人类一样理解和推理日常常识。认知科学家雷纳特提出,赋予机器常识将是推动AI进步的关键,因此他致力于建立一个…

C++中的 std::optional

std::optional<T>是 C17 中的一个标准库组件&#xff0c;optional <T>对象默认是空的&#xff0c;也就是处于无效状态&#xff0c;给它赋值后因为里面有了元素&#xff0c;就变成了有效状态。 1.引入背景 c函数常用返回值表示函数是否执行成功。如返回nullptr表示…

实用教程:如何无损修改MP4视频时长

如何在UltraEdit中搜索MP4文件中的“mvhd”关键字 引言 在视频编辑和分析领域&#xff0c;有时我们需要深入到视频文件的底层结构中去。UltraEdit&#xff08;UE&#xff09;和UEStudio作为强大的文本编辑器&#xff0c;允许我们以十六进制模式打开和搜索MP4文件。本文将指导…

Docker占用空间太大磁盘空间不足清理妙招

docker占用空间太大了&#xff0c;磁盘空间不足&#xff0c;清理3妙招 清除所有已停止的容器&#xff08;container&#xff09;、未被任何容器所使用的卷&#xff08;volume&#xff09;、未被任何容器所关联的网络&#xff08;network&#xff09;、所有悬空镜像&#xff08…

Spring Boot 接口防重复提交解决方案

文章目录 前言使用Token机制实现步骤1.生成Token2.传递Token3.验证Token 使用Redis实现步骤1.引入Redis依赖2.生成Token3.传递Token4.验证Token 使用Spring AOP实现步骤1.定义注解2.创建切面3.使用注解 总结 前言 在Web开发中&#xff0c;防止用户重复提交表单是一个常见的需求…