【MySQL】表的基本增删查改(结合案例)

文章目录

  • 1.前言
  • 2.插入数据(Create)
    • 2.1案例
    • 2.2单行数据+全列插入
    • 2.3多行数据+指定列插入
    • 2.4插入否则更新
    • 2.5替换
  • 3. 读取数据(Retireve)
    • 3.1案例
    • 3.2全列查询
    • 3.3指定列查询
    • 3.4查询字段为表达式
    • 3.5为查询结果起别名
    • 3.6去重
    • 3.7where条件
      • 3.7.1案例
    • 3.8排序
    • 3.9筛选分页
  • 4. 修改数据(Update)
  • 5.删除数据(Delete)
    • 5.1delete删除
    • 5.2截断表
    • 5.3truncate和delete的区别
  • 6.将查询结果当作数据进行多行插入
  • 7.聚合函数
  • 8.分析基本查询的执行顺序
  • 9.分组查询
  • 10.SQL查询的顺序

1.前言

在前面我们学习了针对库的操作以及针对表结构的操作,下面我们来学习针对表中数据的操作。对数据操作的类型无非就是C(创建)R(读取)U(修改)D(删除),针对以上四种类型的操作,结合案例展开讨论

2.插入数据(Create)

语法:

insert
	表
	插入列
values
   数据

2.1案例

现创建一张学生表,表结构如下:

CREATE TABLE students (
   id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
   sn INT NOT NULL UNIQUE COMMENT '学号',
   name VARCHAR(20) NOT NULL,
   qq VARCHAR(20)
);

在这里插入图片描述

2.2单行数据+全列插入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3多行数据+指定列插入

在这里插入图片描述

2.4插入否则更新

如果我们再插入数据时遇到了主键或者唯一键冲突,我们选择性的进行同步操作,例如:
在这里插入图片描述

在这里插入图片描述
使用ON DUPLICATE KEY UPDATE可以在发生冲突之后执行update语句。

2.5替换

主键或者唯一键发生冲突,删除再插入
没有发生冲突就直接插入
在这里插入图片描述

3. 读取数据(Retireve)

读取数据其实就是查询数据,查询数据使用select语句
语法:

select {cloumn1,cloumn2..} from {table1,table2...} [where...] [order by...] [goup by...] [limit...]

3.1案例

创建一个exam_result表记录学生的考试成绩:

CREATE TABLE exam_result ( 
 id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 
 name VARCHAR(20) NOT NULL COMMENT '同学姓名', 
 chinese float DEFAULT 0.0 COMMENT '语文成绩', 
 math float DEFAULT 0.0 COMMENT '数学成绩', 
 english float DEFAULT 0.0 COMMENT '英语成绩' 
); 

给出一组数据用于测试:

INSERT INTO exam_result (name, chinese, math, english) VALUES 
 ('唐三藏', 67, 98, 56), 
 ('孙悟空', 87, 78, 77), 
 ('猪悟能', 88, 98, 90), 
 ('曹孟德', 82, 84, 67), 
 ('刘玄德', 55, 85, 45), 
 ('孙权', 70, 73, 78), 
 ('宋公明', 75, 65, 30);//多行全列插入

3.2全列查询

在这里插入图片描述

3.3指定列查询

假设要查看所有同学的数学成绩以及姓名
在这里插入图片描述

3.4查询字段为表达式

假设要查询所有同学的总成绩
在这里插入图片描述

3.5为查询结果起别名

使用as可以给一个表达式或者是一张表或者一个字段起别名,例如还是查询所有同学的总成绩:
在这里插入图片描述
其中as也可以省略不写

3.6去重

可以在查询字段前添加distinct表示对该字段去重,例如查询所有同学的数学成绩:
去重前:
在这里插入图片描述
去重后
在这里插入图片描述
这样就没有重复的数学成绩了。

3.7where条件

使用where可以保证查询数据的准确性。
下面给出常见的比较运算符
在这里插入图片描述
逻辑运算符
在这里插入图片描述
下面结合具体案例来使用where

3.7.1案例

  • 案例一:查询英语成绩不及格的同学及其英语成绩
    在这里插入图片描述
  • 案例二:语文成绩在 [80, 90] 分的同学及语文成绩
    在这里插入图片描述
    在这里插入图片描述
  • 案例三:数学成绩是 98 或者 78的 同学及数学成绩
    在这里插入图片描述
  • 案例四:查询姓孙的同学的成绩
    在这里插入图片描述
  • 案例五:查询名字姓孙某(两个字)同学的成绩
    在这里插入图片描述
  • 案例六:在students表中查询qq为NULL的同学的语文成绩
    在这里插入图片描述

3.8排序

语法:

select 
	聚合函数,
	列(要求出现在group by的后面)
fromwhere 
	筛选条件
order by 
	cloumn asc;//升序
	cloumn desc;//降序

  • 案例1:查询所有同学的数学成绩并按照升序显示
    在这里插入图片描述
  • 案例2:查询所有同学的总成绩并安装降序排序
    在这里插入图片描述

3.9筛选分页

语法:

-- 起始下标为 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; 

比如查询所有同学的总成绩,显示分数最高的三个人
在这里插入图片描述
也可以使用offset:
在这里插入图片描述

4. 修改数据(Update)

语法:

UPDATE table_name SET column = expr [, column = expr ...] 
 [WHERE ...] [ORDER BY ...] [LIMIT ...] 
  • 案例:将孙某同学的成绩改为60分
    在这里插入图片描述

5.删除数据(Delete)

5.1delete删除

delete可以删除表中的部分数据,也可以删除全部数据。delete并不会影响表的结构。
语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...] 
  • 案例1:删除孙悟空同学的考试成绩
    查看原数据:
    在这里插入图片描述
    删除后:
    在这里插入图片描述

  • 案例2:删除整张表的数据
    delete table table_name表示删除table_name表的数据,这里不做演示。

5.2截断表

截断truncate和delete都是对表中数据进行删除,truncate只能用来删除表中的所有数据
语法:

TRUNCATE TABLE table_name;

5.3truncate和delete的区别

  • 作用范围:truncate只能作用于整个表不能带条件,而delete可以删除表中部分数据且可以带条件
  • 速度和性能:truncate是批量删除,delete是逐行删除。truncate删除数据之后并不会留下日志记录,而delete会,所以truncate的速度较快
  • 重置表的索引:除了删除数据之外,truncate还会重置表中的索引值,比如自增键(auto_incream)又变为了1。
    总结:如果希望删除表中所有数据其希望操作更快,用truncate.如果希望删除操作能回滚即恢复数据,或者只是删除部分数据,那就用delete

6.将查询结果当作数据进行多行插入

语法:

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

mysql支持将select查询到的结果作为数据对某一张表进行多行插入,比如当我们想复制一个表中的数据到另一个表里。
现给出原始表数据:

-- 创建原数据表 
 
CREATE TABLE duplicate_table (id int, name varchar(20)); 
Query OK, 0 rows affected (0.01 sec) 
 
-- 插入测试数据 
INSERT INTO duplicate_table VALUES 
 (100, 'aaa'), 
 (100, 'aaa'), 
 (200, 'bbb'), 
 (200, 'bbb'), 
 (200, 'bbb'), 
 (300, 'ccc'); 

在这里插入图片描述

  • 案例:删除duplicate_table表中的重复数据
    思路:创建一张空表,表结构和duplicate_table保持一致,然后将duplicate_table去重查询到的数据插入到新表中,再将新表重命名为duplicate_table
    其中复制一个表的结构我们可以使用like,例如:
    在这里插入图片描述

duplicate_table去重查询到的数据插入到新表中:
在这里插入图片描述
重命名表名
在这里插入图片描述
在这里插入图片描述

7.聚合函数

MySQL中的聚合函数主要用于对一组数据进行计算,返回单个值。常见的聚合函数包括SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)、COUNT(计数)等。

在这里插入图片描述

  • 案例:统计班级有多少学生
    在这里插入图片描述
  • 案例:统计数学成绩总分
    在这里插入图片描述
  • 案例:统计数学的平均成绩
    在这里插入图片描述
  • 案例:返回数学成绩做高分
    在这里插入图片描述

8.分析基本查询的执行顺序

比如以下语句:
在这里插入图片描述

执行的顺序为:

  1. from exam_result
  2. where math>60
  3. select name,math
  4. order by math asc

9.分组查询

在select中使用group by 子句可以对指定列进行分组查询
语法:

select 
	聚合函数,
	列(要求出现在group by的后面)
fromwhere 
	筛选条件
group by 
	分组的列表
having
   条件查询
order by 
	排序
limit
   分页

其中having表示对分组结果进行条件筛选,执行顺序在group by之后。

下面有一张员工表EMP,字段包括员工工资sal、部门号deptno,岗位job。具体内容如下:
在这里插入图片描述

  • 案例1:显示每个部门的平均工资和最高工资
    思路:按照部门号进行分组,于是我们得到了诺干个子表,子表属于同一部门的。再聚合统计每个子表的平均工资的最高工资好平均工资。
    sql语句:
select deptno,max(sal),avg(sal) from emp group by deptno;

在这里插入图片描述

  • 案例2:显示每个部门的每种岗位的平均工资和最高工资
    思路:先按部门号分组,再按岗位分组,再聚合统计每个组的平均工资和最高工资
    sql语句:
select deptno,max(sal),avg(sal) from emp goup by deptno,joib;

在这里插入图片描述

  • 案例3:统计平均工资低于2000的部门和它的平均工资
    思路:先按部门分组,再对每个组求平均工资,最后使用having 对分组结果进行查询,即查询部门平均工资低于2000的
    sql语句:
select avg(sal) avg_sal from emp group by deptno having avg(sal)<2000;

在这里插入图片描述

10.SQL查询的顺序

from > where > group by > having> select > distinct > order by > limit

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识 AQS

一、什么是 AQS AQS是一个用来构建锁和同步器的框架。JUC 的同步器底层都是用了 AQS&#xff0c;例如ReentrantLock&#xff0c;Semaphore&#xff0c;CountDownLatch&#xff0c;CyclicBarrier&#xff0c;ReentrantReadWriteLock。 二、前置知识 在了解 AQS之前&#xff0c…

C++ 01 之 hello world

c01helloworld.cpp #include <iostream>using namespace std;int main() {cout << "hello world" << endl;return 0; } #include<iostream>; 预编译指令&#xff0c;引入头文件iostream.using namespace std; 使用标准命名空间cout <&l…

LW-DETR:实时目标检测的Transformer, Apache-2.0 开源可商用,论文实验超 YOLOv8

LW-DETR&#xff1a;实时目标检测的Transformer&#xff0c; Apache-2.0 开源可商用&#xff0c;论文实验超 YOLOv8 LW-DETR 架构实例化高效训练高效推理 目的与解法拆解ViT编码器和DETR解码器多级特征图聚合变形交叉注意力窗口注意力和全局注意力 论文&#xff1a;https://arx…

1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题

给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意味在这段时间内&#xff0c;「劳累的天数」是严格 大…

什么是 URL 过滤?是如何保障浏览体验的?

互联网是一个无边无际的空间&#xff0c;几乎包含了你能想象到的一切。不幸的是&#xff0c;这意味着也存在着从不合适到非常危险的网站。这就是 URL 过滤可以发挥作用的地方。 一、URL 过滤的含义 我们希望您已经熟悉 URL&#xff08;统一资源定位器&#xff09;&#xff0c;…

在韩国遇到阿姨叫“아줌마”还是“이모”?都不如称呼好!柯桥学韩语来银泰附近基础教学通俗易懂

认识母音 母音&#xff0c;又叫元音&#xff0c;共21个&#xff0c;包含10个基本母音和11复合母音&#xff08;又称双元音&#xff09;。 10个基本母音&#xff1a;ㅏ(a)、ㅑ(ya)、ㅓ(eo)、ㅕ(yeo)、ㅗ(o)、ㅛ(yo)、ㅜ(u)、ㅠ(yu)、ㅡ(eu)、ㅣ(i) 11个复合母音&#xff1a;ㅐ(a…

【ETAS CP AUTOSAR基础软件】BswM模块详解

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中BswM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解BswM这一基础软件模块。文中涉及的SOLAR-AB配置以及模块相关代码都是依托于ETAS提供的…

pdf添加书签的软件,分享3个实用的软件!

在数字化阅读日益盛行的今天&#xff0c;PDF文件已成为我们工作、学习和生活中不可或缺的一部分。然而&#xff0c;面对海量的PDF文件&#xff0c;如何高效地进行管理和阅读&#xff0c;成为了许多人关注的焦点。其中&#xff0c;添加书签功能作为提高PDF文件阅读体验的重要工具…

数据结构01 栈及其相关应用

栈是一种线性数据结构&#xff0c;栈的特征是数据的插入和删除只能通过一端来实现&#xff0c;这一端称为“栈顶”&#xff0c;相应的另一端称为“栈底”。 栈及其特点 用一个简单的例子来说&#xff0c;栈就像一个放乒乓球的圆筒&#xff0c;底部是封住的&#xff0c;如果你想…

c++线性关系求值

目的 线性关系是最简单的关系,但也是编程当中最常用的一种关系,很多行业,都用。 可以说,其是准确的,有时利用了正比例的关系,其具有预测性,检验其它数据是否正确,应用实在太多了。 生活中太多的东西可以认为成线性的,比如:年龄越大,经验越丰富,这也是线性关系,因…

揭秘湖北工程类助理工程师证书:纸质版 vs 电子版,哪个更靠谱

"揭秘湖北工程类助理工程师证书&#xff1a;纸质版 vs 电子版&#xff0c;哪个更靠谱&#xff1f;" 2024年湖北工程类助理工程师证书纸质版VS电子版 很多人会疑惑不是从2021年底就发布相关文件&#xff0c;湖北初级、中级、高级职称进入电子版证书时代&#xff0c;为…

分组聚集查询-GROUP BY子句

一、GROUP BY子句位置 SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】 FROM <表名或视图名1>【&#xff0c;<表名或视图名2>&#xff0c;...】 【WHERE <元组选择条件表达式>】 【GROUP BY <属性列名1>【&#xff0…

2024 年 5 月公链研报:监管调整与市场新动向

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;公链 Research 页面 五月份&#xff0c;加密货币市场经历了重要的监管和政治动态。美国证券交易委员会&#xff08;SEC&#xff09;批准了现货以太坊 ETF 的初步申请文件&#xff0c;这一举措提振了以太坊及其…

pom学习笔记:kimi的自动化操作

1.先看结构&#xff1a; 声明&#xff1a;我是初学&#xff0c;可能有不合理的地方。 2.Base层。 我是把原来一个kimi的自动问答的代码改过来。 分析&#xff1a;其实我是新手&#xff0c;因为我用的浏览器是固定的&#xff0c;也没有打算和别人用。所以浏览器层面年的全部写…

蓝牙芯片TD5322A,蓝牙5.1数传芯片介绍—拓达半导体

蓝牙芯片原厂&#xff0c;拓达芯片TD5322A是一颗支持蓝牙BLE和SPP的数传芯片&#xff0c;蓝牙5.1版本。芯片的优点是尺寸小(SOP-8封装&#xff09;&#xff0c;性能强&#xff0c;价格低&#xff0c;以及简单明了的透传和串口AT控制功能&#xff0c;大大降低了在其它电子产品中…

React 渲染流程分析

React 页面是由组件组成的&#xff0c;从根组件直到叶组件&#xff0c;内部的组件数通过 Fiber 来保存并触发并发更新。页面的展示分为两部分&#xff0c;首先是初始化&#xff0c;所有组件首次展示&#xff0c;都要进行渲染&#xff0c;之后是更新流程&#xff0c;也就是页面产…

团队知识管理首选:12款优秀开源Wiki系统推荐

文章介绍了12款好用的开源Wiki&#xff1a;PingCode、DokuWiki、MediaWiki、Tiki Wiki CMS Groupware、XWiki、BookStack、PMWiki、Foswiki、GitBook、Wiki.js、TiddlyWiki、Slite。以及对比了一款非开源但提供免费版本的Wiki工具&#xff0c;以供大家选择。 在企业知识管理和团…

Vue3+vite部署nginx的二级目录,使用hash模式

修改router访问路径 import { createRouter, createWebHashHistory } from vue-routerconst router createRouter({history: createWebHashHistory (/mall4pc-bbc/),routes: [XXX,] })配置package.json文件 "build:testTwo": "vite build --mode testing --ba…

python dropna怎么用

pandas的设计目标之一就是使得处理缺失数据的任务更加轻松些。pandas使用NaN作为缺失数据的标记。 使用dropna使得滤除缺失数据更加得心应手。 dropna常用参数&#xff1a; # DataFrame.dropna(axis0, howany, threshNone, subsetNone, inplaceFalse) 主要的2个参数&#xff…

运筹学基础与应用(简洁版总复习)

第一章 线性规划及单纯形法 图解法 单纯形法 大m法 看案例&#xff08;综合题&#xff09; 化标准形式 目标函数的转换 min z变为max z 变量的变换 变量取值无约束 约束方程的转换 ≤&#xff1a;加一个松弛变量 ≥&#xff1a;减一个剩余变量 变量符号≤0的变换 保持变量≥…