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;例如下面…

【Linux】进程的优先级

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

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

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

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.…

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的缺陷 简单应用 一.问题导入 这道…

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

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

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

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

Linux性能优化之火焰图简介

Linux 火焰图&#xff08;Flame Graph&#xff09;是一种可视化工具&#xff0c;用于分析程序性能问题&#xff0c;尤其是 CPU 使用情况。它展示了程序中函数调用的层次结构和各个调用栈占用的时间比例。 以下是详细介绍&#xff0c;包括火焰图的工作原理、生成步骤和实际使用中…

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因&#xff0c;我的东西最终需要跑在amd64上&#xff0c;但是因为mac的架构师arm64&#xff0c;所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构&#xff1a; docker inspect 8135f475e221 | grep Arc…

【JavaWeb】JavaWeb入门之XML详解

目录 1.XML介绍 1.1.XML概述 1.1.1.什么是XML 1.1.2.XML的作用 1.1.3.XML与HTML的比较 1.1.4.XML和properties&#xff08;属性文件&#xff09;比较 1.1.5.W3C组织 1.2.XML语法概述 1.2.1.XML文档展示 1.2.2.XML文档的组成部分 1.3.XML文档声明 1.3.1.什么是XML文…

spring源码02-spring容器启动(容器初始化+bean实例化)源码解读【常见面试题】

文章目录 【README】【1】spring容器初始化及bean实例化步骤列表【2】spring容器初始化源码【2.1】容器初始化主要步骤总结&#xff1a;【2.2】容器初始化详细步骤源码分析 【3】bean实例化源码【3.1】bean实例化主要步骤总结&#xff08;非常重要&#xff09;【3.1.1】 bean生…

Python中的正则表达式教程

一、 正则表达式基础 1。1。概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。 它拥有自己独特的语法以及一个独立的处理引擎&#xff0c;在提供了正则表达式…

【Python库安装】Python环境安装景观模式分析常用库PyLandStats

【Python库安装】Python环境安装景观模式分析常用库PyLandStats PyLandStats 简介景观分割景观指标 PyLandStats 安装参考 PyLandStats 简介 PyLandStats 是一个用于景观模式分析的 Python 库。它允许用户计算景观格局的各种统计量和指标&#xff0c;广泛应用于生态学、地理信…

Visual Studio 2022 安装

下载链接 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCommunity&channelRelease&versionVS2022&sourceVSLandingPage&cid2030&passivefalse 安装 以c为例&#xff0c;列出需要勾选的项目&#xff0c;有3个&a…