【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

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

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

相关文章

算法刷题【二分法】

题目&#xff1a; 注意题目中说明了数据时非递减的&#xff0c;那么这样就存在二分性&#xff0c;能够实现logn的复杂度。二分法每次只能取寻找特定的某一个值&#xff0c;所以我们要分别求左端点和有端点。 分析第一组用例得到结果如下: 成功找到左端点8 由此可知&#xff0…

[数据集][目标检测]胸部解剖检测数据集VOC+YOLO格式100张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;100 标注数量(xml文件个数)&#xff1a;100 标注数量(txt文件个数)&#xff1a;100 标注类别…

环境监控与管理平台

随着全球气候变化的日益严峻&#xff0c;环境监控与管理成为了当代社会不可或缺的重要任务。HiWoo Cloud平台&#xff0c;作为一款环境监控与管理平台&#xff0c;正以其卓越的性能、强大的功能和灵活的部署方式&#xff0c;为各行各业的环保事业提供强有力的技术支撑。 一、H…

被封号后,我终于明白免费代理的危害

在数字时代&#xff0c;网络已经成为人们日常生活和商业活动中不可或缺的一部分。为了实现更广阔的业务拓展和更畅通的网络体验&#xff0c;许多人开始考虑使用代理服务器。然而&#xff0c;虽然免费代理可能听起来像是个经济实惠的选择&#xff0c;但事实上&#xff0c;它可能…

CTFHUB-SQL注入-Cookie注入

由于本关是cookie注入&#xff0c;就不浪费时间判断注入了&#xff0c;在该页面使用 burp工具 抓包&#xff0c;修改cookie后面&#xff0c;加上SQL语句&#xff0c;关掉burp抓包&#xff0c;就可以在题目页面显示结果了 判断字段数量 发现字段数量是2列 使用id-1 union sele…

君子签帮助物流组织打造线上签约平台,助力简化成本,高效运转

各类物流组织日常业务可能涉及“企业入驻、快递、整车运输、货运、仓储、供应链等”多种类型&#xff0c;各个环节都存在大量的文件/单据签署&#xff0c;网点、客户、司机、收货人遍布全国各地&#xff0c;复杂的签署需求&#xff0c;以及庞大的签字、用印需求&#xff0c;让各…

数据通信与网络

计算机网络的组成 计算机网络是由计算机系统、网络节点和通信链路等组成的系统。 逻辑上分为资源子网和通信子网。 CCP&#xff1a;communication control processor 通信控制处理机&#xff0c;网络节点&#xff0c;交换机、路由器等设备。 逻辑组成&#xff1a; &#xf…

数据结构——02-算数表达式-栈-实验题目分享

一、实验题目 算数表达式计算&#xff1a; 设计算法根据用户输入的合法表达式计算结果并显示出来 表达式中的符号为、-、*、/、&#xff08;、&#xff09; 表达式中数字为整数 二、实验环境 Windows 11 Visual Studio Code &#xff08;总体代码在最后&#xff09; 三…

论文笔记:ATime-Aware Trajectory Embedding Model for Next-Location Recommendation

Knowledge and Information Systems, 2018 1 intro 1.1 背景 随着基于位置的社交网络&#xff08;LBSNs&#xff09;&#xff0c;如Foursquare和Facebook Places的日益流行&#xff0c;大量用户签到数据变得可用 这些大量签到数据的可用性带来了许多有用的应用&#xff0c;以…

kotlin类型检测与类型转换

一、is与!is操作符 1、使用 is 操作符或其否定形式 !is 在运行时检测对象是否符合给定类型。 fun main() {var a "1"if(a is String) {println("a是字符串类型:${a.length}")}// 或val b a is Stringprintln(b) } 二、"不安全的"转换操作符…

搜索是门艺术,大神都是这样找资源

以下所有资源均可在星云导航找到&#xff0c;网站地址&#xff1a;https://www.xygalaxy.com/ 浏览器搜索高级用法 1、排除干扰&#xff0c;指定关键词 1.1、排除指定关键字 格式&#xff1a;关键字1 -关键字2比如搜索&#xff1a;星云导航&#xff0c;不想要CSDN的内容 星…

【全开源】快递寄件小程序源码(FastAdmin+ThinkPHP+原生微信小程序)

&#x1f4e6;快递寄件小程序&#xff1a;轻松寄送&#xff0c;便捷生活 &#x1f69a;一、引言&#xff1a;告别繁琐&#xff0c;让寄件更简单 在繁忙的生活中&#xff0c;寄送快递往往成为我们的一大难题。传统的寄件方式需要前往快递公司网点&#xff0c;填写繁琐的寄件信…

单目标应用:基于蛇鹫优化算法SBOA的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、蛇鹫优化算法求解微电网 2.1算法简介 蛇鹫优化算法&#xff08;Secre…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习

原文链接&#xff1a;基于python多光谱遥感数据处理、图像分类、定量评估及机器学习 普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光…

企业中的绩效管理

背景 企业中为何需要绩效管理&#xff0c;企业绩效管理为何比较难&#xff0c;这在企业管理中是非常难&#xff0c;同样也是非常有价值的命题&#xff0c;那么首先应该对这个命题有清晰的认知&#xff0c;特别是要想明白为何企业需要绩效管理&#xff0c;应该先明白企业。 企…

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置

1.template结构 <view class"content-tabs-box"><view class"content-tabs" :class"{is-fixed: isTabFixed}"><viewv-for"(item, index) in detailTabs" :key"index" class"tab" :class"{act…

【git使用四】git分支理解与操作(详解)

目录 &#xff08;1&#xff09;理解git分支 主分支&#xff08;主线&#xff09; 功能分支 主线和分支关系 将分支合并到主分支 快速合并 非快速合并 git代码管理流程 &#xff08;2&#xff09;理解git提交对象 提交对象与commitID Git如何保存数据 示例讲解 &a…

lnmp的介绍与源码部署以及 |什么是正向、反向、透明代理 | 常见的集群有哪些

lnmp 文章目录 lnmp1.LNMP是什么2. lnmp简介3.系统特点4.优点5.lnmp部署5.1 nginx安装5.2 mysql安装5.3 php安装5.4配置nginx服务处理php 6.扩展知识点1.什么是集群2.常见的集群有哪些集群的分类1、高可用集群2、负载均衡集群3、分布式计算集群4、高性能集群(High Performance …

嵌入式常用调试方法

目录 调试工具 日志打印 1. Debug日志打印 2. RTT日志打印 3. 串口日志打印 总结 嵌入式系统的调试是一个复杂且关键的过程&#xff0c;涉及多种工具和技术的综合应用。以下是对嵌入式常见调试工具、日志打印方式的全面报告&#xff0c;包括Debug、RTT&#xff08;Real-T…

重生奇迹mu魔法师介绍

魔法师擅长&#xff1a;远距作战、攻击&辅助魔法使用 转职&#xff1a;魔导师&#xff08;2转&#xff09;&#xff0c;神导师&#xff08;3转&#xff09; 魔法师可以通过多样的魔法&#xff0c;展现华丽的效果和强大的实力。成长初期因为体力少&#xff0c;经常受到死亡…