MySQL之CRUD、常见函数及union查询

目录

一. CRUD

        1.1 什么是crud

        1.2 SELECT(查询)

        1.3 INSERT(新增)

        1.4 UPDATE(修改)

        1.5 DELETE(删除)

二. 函数

        2.1 常见函数

        2.2 流程控制函数

        2.3 聚合函数

三. union与union all

        3.1 union

        3.2 union all

        3.3 具体不同

        3.4 结论

四. 思维导图


一. CRUD

        1.1 什么是crud

        crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

        1.2 SELECT(查询)

概念:

        查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。

顺序:

        条件查询执行顺序:where(条件)  group by(分组)  having(筛选)  order by(排序)  limit(记录数)

语法:

SELECT
{* | <字段列名>}
[FROM <表1>,<表2>...
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}...]]
[ORDER BY <order by definition>]
[LIMIT [<offset>,] <row count>]
]

含义:

  • `{*|<字段列名>}`:包含星号通配符的字段列表,表示所要查询字段的名称。
  • `<表 1>,<表 2>... ` :表 1和表 2表示查询数据的来源,可以是单个或多个。
  • `WHERE <表达式>` :是可选项,如果选择该项,那么限定查询数据必须满足该查询条件。
  • `GROUP BY< 字段 >` :该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
  • `[ORDER BY < 字段 >]` :该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)降序(DESC),默认情况下是升序。
  • `[LIMIT[<offset>,]<row count>]` :该子句告诉 MySQL 每次显示查询出来的数据条数。

        1.3 INSERT(新增)

概念:

        使用 INSERT 语句向数据库已有的表中插入一行或者多行元祖数据。

语法:

插入单行:INSERT... SET语句

INSERT INTO <表名>
SET <列名1> = <值1>,
   <列名2> = <值2>,
   ...

插入多行:INSERT...VALUES语句

INSERT INTO <表名> [ <列名1> [ , ...<列名n>] ]
VALUES (值1) [.... , (值n) ];

含义:

  • `<表名>`:指定被操作的表名。
  • `<列名>`:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可省略,直接采用 INSERT <表名> VALUES(...)即可。
  • `VALUES` 或 `VALUE` 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。

总结: 

由 INSERT 语句的两种形式可以看出:

  1. - 使用 INSERT...VALUES 语句可以向表中插入一行数据,也可以插入多行数据;
  2. - 使用 INSERT...SET 语句可以指定插入行中每列的值,也可以指定部分列的值;
  3. - INSERT...SELECT 语句向表中插入其他表中的数据。
  4. - 采用 INSERT ... SET 语句可以向表中插入部分列的值,这种方式更为灵活;
  5. - INSERT...VALUES 语句可以一次插入多条数据。

        1.4 UPDATE(修改)

语法:

UPDATE <表名> SET 字段 1= 值 1 [, 字段 2 = 值 2] [WHERE 子句]
[ORDER BY 子句] [LIMIT 子句]

含义:

  • `<表名>`:用于指定要更新的表名称。
  • `SET` 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
  • `WHERE` 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
  • `ORDER BY` 子句:可选项。用于限定表中的行被修改的次序。
  • `LIMIT` 子句:可选项。用于限定被修改的行数。

        1.5 DELETE(删除)

语法:

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

含义:

  • `<表名>`:指定要删除数据的表名。
  • `ORDER BY` 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
  • `WHERE` 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中所有行。 
  • `LIMIT` 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。

二. 函数

        2.1 常见函数

字符函数:

如果忘了函数的意思可以直接 SELECT + 你想要测试的函数就好,就能看到函数的效果

  • 转小写:LOWER ('SQL Course') ----- sql course
  • 转大写:UPPER ('SQL Course') ------ SQL COURSE
  • 拼接:CONCAT ('Hello','World') ------ HelloWorld
  • 截取:SUBSTR ('HelloWorld',1,5) ---- Hello
  • 长度:LENGTH ('HelloWorld') ---- 10
  • 字符出现索引值:amcdINSTR ('HelloWorld','W') ----- 6
  • 字符截取后半段:TRIM ('H' FROM 'HelloWorld') ----- elloWorld
  • 字符替换:REPLACE ('abcd','b','m') ----- amcd

数字函数:

  • 四舍五入:ROUND (45.926, 2) ----- 45.93
  • 截取:TRUNC (45.926, 2) ------ 45.92
  • 求余:MOD (1600, 300) ----- 100

日期函数:

  • 获取当前日期:now()
  • 将日期格式的字符转换成指定格式的日期:STR_TO_DATE ('9-13-1999','%m-%d-%Y') ---- 1999-09-13
  • 将日期转换成字符:DATE_FORMAT (‘2018/6/6’,‘%Y年%m月%d日’) ---- 2018年06月06日

        2.2 流程控制函数

使用场景:

行转列:
        把基本不需要改动的数据放在行
        把可能要进行变化的数据放在列

语法:

CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END

示例:

01)查询同时存在" 01 "课程和" 02 "课程的情况

SELECT
t3.*,
(CASE WHEN t1.cid = '01' THEN t1.score END) 语文,
(CASE WHEN t2.cid = '02' THEN t2.score END) 数学
FROM
( SELECT * FROM t_mysql_score sc WHERE sc.cid = '01') t1,
( SELECT * FROM t_mysql_score sc WHERE sc.cid = '02') t2,
t_mysql_student t3
WHERE
t1.sid = t2.sid
AND t1.sid = t3.sid

02)查询会议信息(包含会议信息表数据,主持人姓名、审批人姓名、会议状态)

SELECT a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren,b.`name`,a.location
     ,DATE_FORMAT(a.startTime,'%Y-%m-%d %H:%i:%s') as startTime
     ,DATE_FORMAT(a.endTime,'%Y-%m-%d %H:%i:%s') as endTime
     ,a.state
     ,(case a.state
     when 0 then '取消会议'
     when 1 then '新建'
     when 2 then '待审核'
     when 3 then '驳回'
     when 4 then '待开'
     when 5 then '进行中'
     when 6 then '开启投票'
     else '结束会议' end
     ) as meetingState
     ,a.seatPic,a.remark,a.auditor,c.`name` as auditorName
     FROM t_oa_meeting_info a
     inner join t_oa_user b on a.zhuchiren = b.id
     left JOIN t_oa_user c on a.auditor = c.id where 1 = 1 ;

        2.3 聚合函数

  • sum 求和
  • avg 平均值
  • max 最大值
  • min 最小值
  • count 计算个数

三. union与union all

        3.1 union

  • 概念:

        1. 用于合并两个或者多个SELECT语句的结果集,并去除重复的行。

        2. UNION操作符执行去除重复行的操作,它通过对所有的结果集进行排序和比较来实现

  • 语法:

        将多个SELECT语句放在一起,并使用UNION关键字将它们连接起来。每个SELECT语句的列数、列名和数据类型必须相同。

  • 使用场景:

        当需要合并多个查询结果,并且不希望出现重复行时,可以使用UNION操作符。它适用于数据需要去重的情况。

        3.2 union all

  • 概念:

        1. 用于合并两个或者多个SELECT语句的结果集,包括重复的行。

        2. UNION ALL操作符不执行去除重复行的操作,它直接将所有的结果集合并在一起。

  • 语法:

        将多个SELECT语句放在一起,并使用UNION ALL关键字将它们连接起来。每个SELECT语句的列数、列名和数据类型可以不同。

  • 使用场景:

        当需要合并多个查询结果,包括重复行时,可以使用UNION ALL操作符。它适用于不需要去重的情况,或者在已经确定结果不会有重复行的情况下。

        3.3 具体不同

我们可以在数据库使用sql语句进行直观的差别展示

  • 初始数据:

        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

         SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

  • UNION:

        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

        UNION

        SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

        678只出现了1次

  • UNION ALL:

        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

        UNION ALL

        SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

        678重复出现       

        3.4 结论

        相当于数学中的交集和并集,所谓去重并不需要所有列相同。

四. 思维导图

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

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

相关文章

【愚公系列】2023年12月 HarmonyOS应用开发者高级认证(完美答案)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

6. Mybatis 缓存

6. Mybatis 缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率MyBatis系统中默认定义了两级缓存 一级缓存二级缓存 默认情况下&#xff0c;只有一级缓存&#xff08;SqlSession级别的缓存&#xff0c;也称为本地缓存&…

Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解&#xff1a; 可以看一下模型的大致结构&#xff1a;主要有encode和decode两大部分组成&#xff0c;数据经过词embedding以及位置embedding得到encode的时输入数据 输入部分 embedding就是从原始数据中提取出单词或位置&…

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术&#xff0c;可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡&#xff0c;能够提升网络吞吐量、实现网络冗余、负载均衡等功能&#xff0c;有很…

2023年工作初体验

23年终于正式入职&#xff0c;参与了正式上线的电商平台、crm平台等项目的研发&#xff0c;公司规模较小&#xff0c;气氛融洽&#xff0c;没有任何勾心斗角、末位淘汰&#xff0c;几乎没什么压力。虽然是我的第一家公司&#xff0c;但实际是个适合养老的公司&#xff08;笑 总…

双击shutdown.bat关闭Tomcat报错:未设置关闭端口~

你们好&#xff0c;我是金金金。 场景 当我startup.bat启动tomcat之后&#xff0c;然后双击shutdown.bat关闭&#xff0c;结果报错了~ 排查 看报错信息很明显了&#xff0c;未配置关闭端口&#xff0c;突然想起来了我在安装的时候都选的是默认的配置&#xff0c;我还记得有这…

快速批量运行命令

Ansible 是 redhat 提供的自动化运维工具&#xff0c;它是 Python编写&#xff0c;可以通过 pip 安装。 pip install ansible 它通过任务(task)、角色(role)、剧本(playbook) 组织工作项目&#xff0c;适用于批量化系统配置、软件部署等需要复杂操作的工作。 但对于批量运行命…

宝塔部署nuxt3项目问题解决

使用宝塔部署nuxt3项目一直没成功&#xff0c;网站502&#xff0c;要不就是资源加载不出来 测试使用宝塔版本8.0.4 添加node项目方式失败&#xff0c;项目更目录设置到server,无法设置运行目录为public, 导致网站资源加载不出来&#xff0c;设置到.output目录&#xff0c;会提…

继电器组开发控制

也是通过树莓派IO口的控制来实现继电器组的开发 继电器组有四根信号线&#xff0c;2根电源线。 通过gpio readall 查看树莓派各个端口的信息选择26 27 28 29 作为信号端口 编程可能会遇到的一些问题 1、通过键盘输入指令的时候&#xff0c;如果用scanf 会有bug&#xff0c;导…

JavaScript高级程序设计读书记录(一):语言基础,语法,变量,数据类型

1. 语法 很大程度上借鉴了 C 语言和其他类 C 语言&#xff0c;如 Java 和 Perl. 1.1 区分大小写 1.2 标识符 第一个字符必须是一个字母、下划线&#xff08;_&#xff09;或美元符号&#xff08;$&#xff09;&#xff1b; 剩下的其他字符可以是字母、下划线、美元符号或数…

排除启动类故障----三大实验

目录 一、模拟破坏mbr和分区表然后修复 二、修复grub引导故障 三、遗忘root用户密码 一、模拟破坏mbr和分区表然后修复 1、mbr处于第一块磁盘的第一个物理扇区&#xff0c;总共512个字节&#xff0c;前446个字节是grub程序&#xff0c;后面64个字节是分区表 2、故障原因&a…

Linux 进程(九) 进程等待

子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏&#xff0c;所以父进程回收子进程是必然要做的。 另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill …

googlecode.log4jdbc慢sql日志,格式化sql

前言 无论使用原生JDBC、mybatis还是hibernate&#xff0c;使用log4j等日志框架可以看到生成的SQL&#xff0c;但是占位符和参数总是分开打印的&#xff0c;不便于分析&#xff0c;显示如下的效果: googlecode Log4jdbc 是一个开源 SQL 日志组件&#xff0c;它使用代理模式实…

day06、SQL语言之概述

SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库

BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)

目录 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; 二、模型 2.1 配置模型 2.2 健康模型 三、状态 3.1 Composition Data 四、资料获取 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; BLE Mesh Foundation model Layer是蓝牙…

redis服务迁移数据工具--RDM

一、背景&#xff1a; 在日常的运维工作经常遇见各种数据迁移工作&#xff0c;例如mysql数据库迁移、redis数据库迁移、minio数据迁移等等工作。这里介绍一下redis数据库的迁移过程。 二、迁移思路&#xff1a; redis服务/集群的数据迁移思路是需要新建一个配置、密码一样的re…

【Leetcode】2487. 从链表中移除节点

文章目录 题目思路代码 题目 2487. 从链表中移除节点 思路 1、递归移除节点&#xff1a; 如果头节点为空&#xff0c;直接返回空。递归调用函数处理下一个节点 head->next。在递归返回后&#xff0c;判断当前节点的值是否小于之前记录的最大值 maxVal。如果小于 maxVal…

洛谷p1829(莫比乌斯反演)

思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const double eps 1e-8; const int N 1e710; const long long mod 20101009…

【鸿蒙】安装DevEco Studio运行HarmonyOS第一个APP(小白必看)

文章目录 前言一、DevEco Studio是什么&#xff1f;二、DevEco Studio安装运行1. 下载DevEco Studio2. 安装DevEco Studio3. 启动DevEco Studio4. 运行APP5. 修改代码 三、DevEco Studio调试注意事项总结 前言 鸿蒙OS是华为公司开发的一款基于微内核、耗时10年、4000多名研发人…

MySQL检索距离当前最近的7个小时内,靠近每个时间点数据信息

MySQL检索距离当前最近的7个小时内&#xff0c;靠近每个时间点数据信息 如果你想在最近7个小时内找到每个时间点最接近的数据&#xff0c;即使某些时间点没有数据&#xff0c;你可以使用子查询和窗口函数。以下是一个示例查询&#xff1a; sqlCopy codeSELECTt.time_point,CO…