MySQL 表内容的增删查改 -- CRUD操作,聚合函数,group by 子句

目录

1. Create

1.1 语法

1.2 单行数据 + 全列插入

1.3 多行数据 + 指定列插入

1.4 插入数据否则更新数据

1.5 替换

2. Retrieve

2.1 SELECT 列

2.1.1 全列查询

2.1.2 指定列查询

2.1.3 查询字段为表达式

2.1.4 为查询结果指定别名

2.1.5 结构去重

2.2 WHERE 条件

2.2.1 运算符介绍

2.2.2 案例

2.3 对筛选结果排序显示 

2.3.1 案例

2.4 分页显示结果

3. Update

3.1 案例

4. Delete

4.1 案例

4.2 截断表

5. 插入查询结果

6. 聚合函数

6.1 案例

7. group by 子句的使用

7.1 案例


        CRUD: create(创建),retrieve(读取),Update(更新),delete(删除)

1. Create

1.1 语法

INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

        插入数据的时候,value_list 中列的数量和顺序要和 前面定义表([(column [, column] ...)] )的列的一致。

        这里先创建一张学生表,用于下列实验。 

1.2 单行数据 + 全列插入

        如果定义表中没有指定列,表示全列插入。也可以在定义表中指定全部列表示全列插入。

1.3 多行数据 + 指定列插入

1.4 插入数据否则更新数据

        由于在插入的时候会发生主键或者唯一键冲突,可以选择性的进行同步更新操作:

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

        如下图中的语句,当插入的数据没有主键或者唯一键冲突的时候插入数据,如果有主键或唯一键冲突则将原数据更新为 update 之后的数据。

1.5 替换

REPLACE [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

        如果插入的数据与表中的数据没冲突,则插入该数据;如果插入的数据与表中的数据有冲突,则将表中数据替换为该数据。 

2. Retrieve

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...DISTINCT:表示去重。
{* | {column [, column] ...}:*表示通配符,column表示要查看的列。
WHERE ...:后面跟筛选条件。
ORDER BY column [ASC | DESC], ...:按照 column 升序或降序排序。
LIMIT ...:限制条数。

        下列是后续实验使用的表的结构以及其数据。 

2.1 SELECT 列

2.1.1 全列查询

        通常情况下不建议使用 * 进行全列查询,因为查询的列越多,意味着需要传输的数据量越大,并且会影响到索引的使用。 

2.1.2 指定列查询

        指定列的顺序不需要按定义表的顺序来写。可以指定想要查询的若干列进行查询。

2.1.3 查询字段为表达式

        (1)表达式不包含字段

        (2)表达式包含一个字段

        (3)表达式包含多个字段 

2.1.4 为查询结果指定别名

SELECT column [AS] alias_name [...] FROM table_name;

        as 可以省略。 

2.1.5 结构去重

2.2 WHERE 条件

2.2.1 运算符介绍

        比较运算符: 

        '=' 不能用于判断是否等于 NULL。 

        between 的区间是左闭右闭的。 

        like 前可以加 not 表示取反。

        逻辑运算符:

2.2.2 案例

        (1)查看英语低于60分的同学。

        (2)查看语文成绩在 [80, 90] 分的同学。 

        (3)数学成绩是 98 或 99 的同学。 

        (4)筛选出姓孙的同学,孙某以及孙某某。

        (5)筛选语文成绩好于英语成绩的同学。 

        (6)筛选总分在 200 分一下的同学。 

        从上图可以看到,语句 1 可以正常执行,而语句 2 则会失败。原因是因为 select 语句是有执行顺序的。首先执行的是 from 表示从那个表中找,其次是 where 子句,表示筛选的条件,最后在是列的显示。上述的语句 2 中,在执行 where 的时候还没有进行重命名,所以使用 total 充当筛选条件是不可行的,其次,重命名也不能在 where 子句中进行。

2.3 对筛选结果排序显示 

        order by 的执行顺序在显示列之后,所以可以使用重命名的列名进行排序。

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

        注:没有 order by 子句查询出来的顺序是未定义的。 NULL 视为比任何值都小。

2.3.1 案例

        (1)按数学成绩升序或降序显示同学及其数学成绩。

        (2) 按数学降序,英语升序,语文升序的方式显示各科成绩。

        上述语句表明的是,当数学相等的时候,按照英语成绩升序排列,当数学成绩相等并且英语成绩相等的时候,按照语文成绩相等来排。 

2.4 分页显示结果

-- 起始下标为 0-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

        对未知表进行查询的时候最好加上一条 limit 语句,避免因为表中数据过大,查询全表数据导致数据库卡死。

3. Update

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...];

        对查询到的结果进行列值更新如果没有 where 子句会对全表进行修改

3.1 案例

        (1)将孙悟空的数学成绩修改为 80 分。

        (2)将总分倒数前 3 的同学数学加 30 分。 

4. Delete

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];

        对查询到的结果进行删除

4.1 案例

        (1)删除孙悟空的成绩。

        (2)删除整张表的数据。 

        整张表的数据删除之后,并不会重置 auto_increment 项。

4.2 截断表

TRUNCATE [TABLE] table_name;

        truncate 也是清空整张表的数据,只能对整张表操作,不能想 delete 一样删除部分数据。会重置 auto_increment 项。truncate 不对数据操作,直接把表清空,所以比 delete 快,但是 truncate 在删除数据的时候,并不会记录到日志当中,也不会经过真正的事务,所以无法回滚。

5. 插入查询结果

INSERT INTO table_name [(column [, column ...])] SELECT ...;

        案例:删除表中的重复记录。

        (1)创建原始数据表并插入测试数据。

        (2)创建一张空表,结构和原表一样。 

        (3)将原表去重的数据插入到新表中。 

        (4)将原表重命名为其他,然后将新表重命名为原表。 

6. 聚合函数

6.1 案例

        (1)统计学生数学成绩的平均值。

        (2)返回 > 70 分以上的最低数学成绩。

7. group by 子句的使用

        分组的目的是为了进行分组之后,方便进行聚合统计。

select column1, column2, .. from table group by column;

7.1 案例

        创建一个雇员信息表(来自oracle 9i的经典测试表),EMP 员工表,DEPT 部门表,SALGRADE 工资等级表。

        (1)显示每个部门的平均工资和最高工资。 

        (2)显示每个部门的每种岗位的平均工资和最低工资。 

        (3)显示平均工资低于 2000 的部门和它的平均工资。

        having 对聚合统计之后的结果进行条件筛选。 

知识点1:        

        SQL 查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit

 

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

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

相关文章

LabVIEW累加器标签通道

主要展示了 Accumulator Tag 通道的使用,通过三个并行运行的循环模拟不同数值的多个随机序列,分别以不同频率向累加器写入数值,右侧循环每秒读取累加器值,同时可切换查看每秒内每次事件的平均值,用于演示多线程数据交互…

【iOS】源码阅读(五)——类类的结构分析

文章目录 前言类的分析类的本质objc_class 、objc_object和NSObjectobjc_object:所有对象的基类型objc_class:类的底层结构NSObject:面向用户的根类 小结 指针内存偏移普通指针----值拷贝对象----指针拷贝或引用拷贝用数组指针引出----内存偏…

Baklib构建企业CMS高效协作与安全管控体系

企业CMS高效协作体系构建 基于智能工作流引擎的设计逻辑,现代企业内容管理系统通过预设多节点审核路径与自动化任务分配机制,有效串联市场、技术、法务等跨部门协作链路。系统支持多人同时编辑与版本追溯功能,结合细粒度权限管控模块&#x…

Linux环境变量与地址空间

哈喽,各位Linux初学者们!今天咱们来聊聊Linux中那两个看起来很高大上但实际上跟我们日常使用息息相关的概念:环境变量和地址空间。别被这些术语吓到,我会用最接地气的方式给你解释清楚! 一、环境变量:Linu…

Oracle SHARED POOL的SUB POOL技术

从Oracle 9i开始,SHARED POOL可以分为多个SUB POOL,其数量受以下几个因素影响: 系统CPU的数量。默认情况下,在Oracle中每4个CPU分配一个SUB POOL,最多不能超过7个。 共享池的大小。SUB POOL的最小容量随着Oracle版…

Collection集合遍历的三种方法

1.foreach循环遍历 格式&#xff1a;for&#xff08;元素的数据类型 变量名&#xff1a;数组或集合&#xff09;{ } 2.使用迭代器遍历 方法名称&#xff1a;Iterator<E> iterator&#xff08;&#xff09; 说明&#xff1a;返回集合中的迭代器对象&#xff0c;该迭代…

头歌之动手学人工智能-Pytorch 之autograd

目录 第1关&#xff1a;Variable 任务描述 编程要求 测试说明 没有伟大的愿望&#xff0c;就没有伟大的天才。——巴尔扎克开始你的任务吧&#xff0c;祝你成功&#xff01; 第2关&#xff1a;Variable 属性 任务描述 编程要求 测试说明 真正的科学家应当是个幻想家&a…

篇章二 数据结构——前置知识(二)

目录 1. 包装类 1.1 包装类的概念 1.2 基本数据类型和对应的包装类 1.3 装箱和拆箱 1.4 自动装箱和自动拆箱 1.5 练习 —— 面试题 2. 泛型 2.1 如果没有泛型——会出现什么情况&#xff1f; 2.2 语法 2.3 裸类型 1.没有写<> 但是没有报错为什么&#xff1f; …

Git典型使用场景相关命令

Git典型使用场景相关命令 1 建立本地仓库与远程仓库的联系2 作为开发者参与项目的常用命令2-1 一般步骤2-2 **合并与同步主分支改动**2-3 **查看日志和差异**2-4 **提交后想修改或撤销**2-5 分支管理2-6 清除未被追踪的文件&#xff08;谨慎使用&#xff09; 3 作为远程仓库管理…

redis缓存-更新策略-三大缓存问题

缓存&#xff1a;数据交换的缓冲区&#xff0c;存储的数据的临时地方&#xff0c;读写性能较高。 步骤&#xff1a; 先从redis里面查询 缓存命中&#xff1a;直接返回结果缓存未命中 从数据库里面查询 没有数据&#xff1a;返回null有数据&#xff1a;存到redis里面&#xff…

[TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令

目录 1.寄存器宏 - FIELD() 2.寄存器操作 - FIELD_SETTER() & FIELD_GETTER() 3.指令辅助方法 - HELPER() 3.1.辅助宏 3.2.指令示例 3.3.函数调用 4.PSW 寄存器读写 - psw_read() & psw_write() 1.寄存器宏 - FIELD() FIELD() 宏定义寄存器 MASK // include/hw…

《软件工程》第 4 章 - 需求获取

在软件工程中&#xff0c;需求获取是挖掘用户真实需求的关键步骤&#xff0c;它为后续的设计、开发和测试提供坚实基础。本章将围绕需求获取的流程、方法及工具展开&#xff0c;结合实际案例与 Java 代码&#xff0c;深入讲解这一重要环节。 4.1 软件需求的初始表示 4.1.1 用例…

react diff 算法

diff 算法作为 Virtual DOM 的加速器&#xff0c;其算法的改进优化是 React 整个界面渲染的基础和性能的保障&#xff0c;同时也是 React 源码中最神秘的&#xff0c;最不可思议的部分 diff 算法会帮助我们就算出 VirtualDOM 中真正变化的部分&#xff0c;并只针对该部分进行原…

Gin项目脚手架与标配组件

文章目录 前言设计思想和原则✨ 技术栈视频实况教程sponge 内置了丰富的组件(按需使用)几个标配常用组件主要技术点另一个参考链接 前言 软件和汽车一样&#xff0c;由多个重要零部件组装而成。 本文堆积了一些常用部件&#xff0c;还没来得及好好整理。先放着。 神兵利器虽多…

【Webtrees 手册】第 10章 - 用户体验

Webtrees 手册/用户体验 < Webtrees 手册 跳转到导航跳转到搜索 信息 手册部分仍在建设中 请耐心等待或随意贡献自己的力量:-)。 第 10 章 - 用户体验 <- 章节概述 目录 1多位系谱学家的合作 1.1家庭研究模型1.2“孤胆战士”模型1.3示范“本地家庭书”1.4模特“俱乐部”…

Linux 进程概念(下)

目录 前言 4.进程状态 一.普遍的操作系统层面上宏观概念&#xff1a; 二.具体的Linux操作系统的状态&#xff1a; 5.进程优先级&#xff08;了解&#xff09; 6.其他概念 进程切换 前言 本篇是接着上一篇的内容继续往下了解进程相关的一些概念&#xff01; 4.进程状态 运…

使用java实现word转pdf,html以及rtf转word,pdf,html

word,rtf的转换有以下方案&#xff0c;想要免费最靠谱的是LibreOffice方案, LibreOffice 是一款 免费、开源、跨平台 的办公软件套件&#xff0c;旨在为用户提供高效、全面的办公工具&#xff0c;适用于个人、企业和教育机构。它支持多种操作系统&#xff08;Windows、macOS、…

IP证书的作用与申请全解析:从安全验证到部署实践

在网络安全领域&#xff0c;IP证书&#xff08;IP SSL证书&#xff09;作为传统域名SSL证书的补充方案&#xff0c;专为公网IP地址提供HTTPS加密与身份验证服务。本文将从技术原理、应用场景、申请流程及部署要点四个维度&#xff0c;系统解析IP证书的核心价值与操作指南。 一…

GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

超简单Translation翻译模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻译模型可以实现200多种语言翻译&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互译模型。由于项目需要&#xff0c;在本地进行搭建&#xff0c;并记录下搭建过程&#xff0c;方便后人。 1. 基本硬件环境 CPU&#xff1a;N年前的 Intel…