MySQL— 基础语法大全及操作演示!!!(下)

MySQL—— 基础语法大全及操作演示(下)—— 持续更新

    • 三、函数
      • 3.1 字符串函数
      • 3.2 数值函数
      • 3.3 日期函数
      • 3.4 流程函数
    • 四、约束
      • 4.1 概述
      • 4.2 约束演示
      • 4.3 外键约束
          • 4.3.1 介绍
          • 4.3.2 语法
          • 4.3.3 删除/更新行为
    • 五、多表查询
      • 5.1 多表关系
          • 5.1.1 一对多
          • 5.1.2 多对多
          • 5.1.3 一对一
      • 5.2 多表查询概述
          • 5.2.1 数据准备
          • 5.2.2 概述
          • 5.2.3 分类
      • 5.3 内连接
      • 5.4 外连接
      • 5.5 自连接
          • 5.5.1 自连接查询
          • 5.5.2 联合查询
      • 5.6 子查询
          • 5.6.1 概述
          • 5.6.2 标量子查询
          • 5.6.3 列子查询
          • 5.6.4 行子查询
          • 5.6.5 表子查询
    • 六、事务
      • 6.1 事务简介
      • 6.2 事务操作
          • 6.2.1 未控制事务
          • 6.2.2 控制事务一
          • 6.2.3 控制事务二
      • 6.3 事务四大特性
      • 6.4 并发事务问题
      • 6.5 事务隔离级别

【MySQL— 基础语法大全及操作演示!!!(上)】

三、函数

函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL中
已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。

那么,函数到底在哪儿使用呢?

我们先来看两个场景:
在这里插入图片描述

  1. 在企业的OA或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2017-11-12,那如果快速计算出天数呢?
  2. 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的分数值,如98/75,如何快速判定分数的等级呢?

其实,上述的这一类的需求呢,我们通过MySQL中的函数都可以很方便的实现 。

MySQL中的函数主要分为以下四类: 字符串函数数值函数日期函数流程函数

3.1 字符串函数

MySQL中内置了很多字符串函数,常用的几个如下:

在这里插入图片描述

举个栗子: 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001。

update emp set workno = lpad(workno, 5, '0');

在这里插入图片描述

3.2 数值函数

常见的数值函数如下:

在这里插入图片描述
举个栗子: 通过数据库的函数,生成一个六位数的随机验证码。

  • 思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的,所以可以在其基础
    上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0
select lpad(round(rand()*1000000 , 0), 6, '0');

在这里插入图片描述

3.3 日期函数

常见的日期函数如下:

在这里插入图片描述

举个栗子: 查询所有员工的入职天数,并根据入职天数倒序排序。

  • 思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

在这里插入图片描述

3.4 流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现 条件筛选,从而提高语句的效率。

在这里插入图片描述
举个栗子: 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)

selectname,( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else'二线城市' end ) as '工作地址'
from emp;

在这里插入图片描述

🚀🚀🚀 函数操作 快速食用:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------->

## 3.1 字符串函数-----------------------------------------------------
# 1. concat : 字符串拼接
select concat('1 Hello', ' MySQL');
# 2. lower : 全部转小写
select lower('Hello');
# 3. upper : 全部转大写
select upper('Hello');
# 4. lpad : 左填充,达到5个字符
select lpad('01', 5, '-');
# 5. rpad : 右填充,达到5个字符
select rpad('01', 5, '-');
# 6. trim : 去除头尾空格
select trim(' Hello MySQL ');
# 7. substring : 截取子字符串,从第一个截取5个字符
select substring('r Hello MySQL', 1, 5);## 3.2 数值函数-------------------------------------------------------
# 1. ceil:向上取整,值为2
select ceil(1.1);
# 2. floor:向下取整,值为1
select floor(1.9);
# 3. mod:取模,值为3
select mod(7, 4);
# 4. rand:获取随机数
select rand();
# round:四舍五入,值为2.34
select round(2.344, 2);## 3.3 日期函数-------------------------------------------------------
# 1. curdate:当前日期
select curdate();
# 2. curtime:当前时间
select curtime();
# 3. now:当前日期和时间
select now();
# 4. YEAR , MONTH , DAY:当前年、月、日
select year(now());
select month(now());
select day(now());
# 5. date_add:增加指定的时间间隔
select date_add(now(), interval 70 year );
# 6. datediff:获取两个日期相差的天数
select datediff('2021-10-01', '2021-12-01');## 3.4 流程函数-------------------------------------------------------
# 1. if,返回 Error
select if(false, 'Ok', 'Error');
# 2. ifnull
select ifnull('Ok','Default'); 	# 返回 Ok
select ifnull('','Default');	# 返回 ‘’ 
select ifnull(null,'Default');	# 返回 Default
# 3. case when then else end
selectname,( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else'二线城市' end ) as '工作地址'
from emp;

四、约束

4.1 概述

  • 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  • 目的:保证数据库中数据的正确、有效性和完整性。
  • 分类:
    在这里插入图片描述

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

4.2 约束演示

4.3 外键约束

4.3.1 介绍
4.3.2 语法
4.3.3 删除/更新行为

五、多表查询

5.1 多表关系

5.1.1 一对多
5.1.2 多对多
5.1.3 一对一

5.2 多表查询概述

5.2.1 数据准备
5.2.2 概述
5.2.3 分类

5.3 内连接

5.4 外连接

5.5 自连接

5.5.1 自连接查询
5.5.2 联合查询

5.6 子查询

5.6.1 概述
5.6.2 标量子查询
5.6.3 列子查询
5.6.4 行子查询
5.6.5 表子查询

六、事务

6.1 事务简介

6.2 事务操作

6.2.1 未控制事务
6.2.2 控制事务一
6.2.3 控制事务二

6.3 事务四大特性

6.4 并发事务问题

6.5 事务隔离级别

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

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

相关文章

2022年09月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;统计误差范围内的数 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。 时间限制&#xff1a;5000 内存限制&#xff1a;65536 输入 输入包含三行&#xff1a; 第一行为N&#xff0c;表示整数序列的长度(N < 100); 第二行为N个整数&#xff0c;…

数据结构之动态内存管理机制

目录 数据结构之动态内存管理机制 占用块和空闲块 系统的内存管理 可利用空间表 分配存储空间的方式 空间分配与回收过程产生的问题 边界标识法管理动态内存 分配算法 回收算法 伙伴系统管理动态内存 可利用空间表中结点构成 分配算法 回收算法 总结 无用单元收…

亚马逊新品如何快速上首页

将亚马逊新品快速上首页是许多卖家的目标&#xff0c;但要注意&#xff0c;这涉及到多种因素&#xff0c;包括产品质量、市场竞争、营销策略等。以下是一些可能帮助您的亚马逊新品快速上首页的方法&#xff1a; 1、优化产品信息&#xff1a;确保您的产品标题、描述和关键词字段…

网络层协议

网络层协议 IP协议基本概念协议头格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由IP协议头格式后续 在复杂的网络环境中确定一个合适的路径 IP协议 承接上文&#xff0c;TCP协议并不会直接将数据传递给对方&#xff0c;而是交付给下一层协议&#xff0c;…

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细&#xff0c;不做赘述。 但这个过程比较复杂&#xff0c;前后端对接过程中很容易出现报错&#xff0c;这里遇到了以下报错&#xff0c;不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误&#xff0c;catch输…

k8s node 误删除了如何自动创建 csr重新加入集群

worker node 节点当部署晚 kubelet、kube-proxy就会加入集群&#xff0c;如何加入呢&#xff0c; [rootkube-node01 ssl]# mv kubelet-client-2023-08-13-01-19-00.pem kubelet-client-current.pem kubelet.crt kubelet.key /tmp/kubelet [rootkube-node01 ssl]# systemctl da…

VVIC-商品详情

一、接口参数说明&#xff1a; item_get-根据ID取商品详情&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/vvic/item_get 名称类型必须描述keyString是调用key&#xff08;点击获取测试k…

C++——移动构造和完美转发

1.什么是右值 右值引用是C11的概念&#xff0c;与之对应的是左值引用。 当一个对象被用作右值的时候&#xff0c;用的是对象的值(内容)&#xff1b;当对象被用作左值的时候&#xff0c;用的是对象的身份(在内存当中的位置)。 以上的概念是摘录自《C primer》。 但是这样的概…

Vue3 setup中使用$refs

在 Vue 3 中的 Composition API 中&#xff0c;$refs 并不直接可用于 setup 函数。这是因为 $refs 是 Vue 2 的实例属性&#xff0c;而在 Vue 3 中&#xff0c;setup 函数是与模板实例分离的&#xff0c;不再使用实例属性。 实际工作中确实有需求&#xff0c;在setup 函数使用…

IDEA关闭项目,但是后台程序没有关闭进程(解决方案)

最近遇到一个很奇怪的问题&#xff0c;idea关闭项目后&#xff0c;系统进程没有杀死进程&#xff0c;再次执行的时候会提示端口占用&#xff0c;并提示Process exited with an error: 1 (Exit value: 1) 错误原因&#xff1a;应用程序关闭后&#xff0c;进程不能同步关闭 解决方…

MAC钓鱼并Root权限上线CS并权限维持,以及所有的坑如何解决

本文转载于&#xff1a;https://www.freebuf.com/articles/web/350592.html 作者&#xff1a;文鸯涂鸦智能安全实验室 制作MAC 一、下载工具 首先从github上下载CrossC2。链接&#xff1a;https://github.com/gloxec/CrossC2/releases/tag/v3.1.0。 根据你CS客户端的操作系统选…