Mysql(四)---增删查改(进阶)
文章目录
- 前言
- 1.查询操作
- 1.1.全列查询
- 1.2.指定列查询
- 1.3.列名为表达式查询
- 1.4.查询中使用别名
- 1.5.去重查询
- 1.6.排序
- 1.6.2.NULL
- 1.7.条件查询
- 1.8.分页查询
- 2.修改
- 3.删除
前言
上一篇博客,我们学习了一些主键的概念,并且分别创造了一些示例表,下面我们添加训练案例,来对增删改查进行全面的学习。
数据案例:位于大松鼠的gitee码云中:https://gitee.com/sun-meng-yu/csdn—mysql-database
将data.sql文件一运行,就会出现6个表
1.查询操作
语法:
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
1.1.全列查询
语法:
select * from 表名
例如:查询 departments 表中的所有数据
select * from department;
1.2.指定列查询
语法:
select 列名[,列名][,列名] from 表名;
查询 departments 表中所有部门名称。
1.3.列名为表达式查询
在查询中也可以使用算数表达式,来改变数据的显示格式,例如知道了学生的语数英三科成绩,那么正好可以知道三科成绩之和
算数运算符:* / + - (优先级从高到低)
示例:
查询雇员的年薪,并显示他们的雇员ID,名字。(employees的salary是月薪)
select employee_id,Last_name,12 * salary from employees;
由于人数众多,我就不在截全了
示例2:
计算 employees 表中的员工薪水加 100 以后的全年薪水是多少,
并显示他们的员工ID与名字。
select employee_id,Last_name,12 * (salary+100) from employees;
1.4.查询中使用别名
上面12*salary这个列名,不好看,并且咱们也知道代表年薪的意思,那么我们可以使用别名来进行代替。
select 列名 [as] 别名 [,列名 [as] 别名]... from 表名;
示例:
查询 employees 表为表定义别名为emp,将雇员 last_name ,列定
义别名为 name,将12*salary定义为年薪
1.5.去重查询
关键字:distinct
select distinct 列名 from 表
示例:
查询 employees 表,显示唯一的部门 ID
select distinct department_id from employees;
1.6.排序
语法:
select 列名 from 表名 order by 列名 [asc | desc];
排序规则:
升序 asc (默认)降序 desc
示例1:
显示雇员ID,名字。计算雇员的年薪,年薪列别名为annsal,并对
该列进行升序排序,
select employee_id,last_name,12*salary as annsal from employees order by annsal asc;
可不可以按照两个进行排序,一个是升序,另一个是降序
示例2:
以升序排序显示 DEPARTMENT_ID 列,同时以降序排序显示
SALARY 列
select department_id,salary from employees order by department_id asc,salary desc;
注意
查看表结构中用到了desc(describe缩写)描述
排序中示desc(descend缩写)
在mysql中一个关键字,表示除了两种意思,要尽量杜绝这种现象,注意以后写代码的命名规范。
1.6.2.NULL
如果一行中的某个列缺少数据值,该值被置为 null, 或者说包含一个空。
空是一个难以获得的、未分配的、未知的,或不适用的值。空和 0或者空格不相同。 0 是一个数字,而空格是一个字符。
示例:
计算年薪包含佣金
select department_id,Last_name,commission_pct,12*salary*commission_pct from employees;
NULL和任何值进行计算都是NULL
NULL的特殊之处
- NULL数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
- 不论和什么值进行运算,返回的值都是NULL
- NULL始终倍判定为FALSE
- NULL的值不是我们以前学过的其他编程语言中的0,在Mysql中他就是NULL
1.7.条件查询
根据指定的一些条件,过滤到不符合条件的记录,把符合条件的记录返回给用户可以通过一些运算符,比如比较运算符,逻辑运算符等
比较运算符:
运算符 | 说明 |
---|---|
>,<,>=,<= | 大于,小于,大于等于,小于等于 |
= | 等于,NULL不安全,例如 NULL = NULL的结果是NULL |
<=> | 等于,NULL安全,例如 NULL <=> NULL的结果是TRUE(1) |
!=,<> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE(1) |
In(option,…) | 如果是option中的任意一个,返回TRUE(1) |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
LIKE | 模糊匹配,%表示任意多个(包括0个)字符;_表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
---|---|
AND | 多个条件必须都为TRUE(1),结果才是TRUE(1) |
OR | 任意一个条件为TRUE(1),结果为TRUE(1) |
NOT | 条件为TRUE(1),结果为FALSE(0) |
示例:
1.检验 = 和 <=>
2.查询 departments 表中部门 ID 为 90 的部门名称与工作地点 ID。
select department_id,location_id from department where department_id = 90;
3,查询 employees 表中员工薪水大于等于 3000 的员工的姓名与薪
水。
select last_name from employees where salary >= 3000;
4.查询 employees 表,薪水在 3000-8000 之间的雇员ID、名字与薪
水。
select department_id,last_name,salary from employees where salary between 3000 and 8000;
5.查询 employees 表,找出薪水是 5000,6000,8000 的雇员ID、名字
与薪水。
select department_id,last_name,salary from employees where salary in (5000,6000,8000);
6.查询 employees 中雇员名字第二个字母是 e 的雇员名字
select last_name from employees where last_name like '_e%' ;
7.找出 emloyees 表中那些没有佣金的雇员雇员ID、名字与佣金。
IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此,你不能用 = ,因为 null 不能等于
或不等于任何值。
select department_id,last_name,commission_pct from employees where commission_pct is null;
8.查询 employees 表中雇员薪水是 8000 的并且名字中含有e 的雇员
名字与薪水。
select last_name,salary from employees where salary = 8000 and last_name like '%e%';
1.8.分页查询
前面在学习select * from 表名;的时候,说过,不加限制记录的查询是不安全的,因此我们引出分页查询
通过分页查询可以有效的控制一次查询出来的结果,
可以有效地减少数据库服务器的压力,同时对用户也比较友好
语法:
SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY
LIMIT 开始位置,查询数量;
和
SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY
LIMIT 查询数量 OFFSET 开始位置;
offset 表示偏移量,意思是从哪开始读取数据
示例:
1.查询雇员表中所有数据按 id 排序,实现分页查询,每次返回两条结
果。
select * from departments order by DEPARTMENT_ID limit 0,2;
2.查询雇员表中所有数据按 id 排序,使用 LIMIT OFFSET 实现分页查
询,每次返回两条结果。
select * from departments order by DEPARTMENT_ID limit 2 offset 4;
2.修改
语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
因为上面的数据库对接下来的联合查询等仍有用处,
为此我们在使用新的数据来完成下面的操作
先运行下面的代码
DROP TABLE IF EXISTS exam;
CREATE TABLE exam (id bigint,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);
示例:
1.将孙悟空的数学成绩改为80分
update exam set math = 80 where name = '孙悟空';
2.在插入一条学生姓名为孙悟空的数据,然后在执行同样的更新操作
insert into exam values(11,'孙悟空',40,,46,37);
update exam set math = 80 where name = '孙悟空';
谨记:不能写成这个代码
update exam set math = 80;
update操作的时候,如果不加where条件,修改的将是整张表中的所有记录,是非常危险的!
3.将总成绩倒数前三的同学的数学成绩再上30分
那么我们就将总成绩倒数前三的同学的数学成绩再减去30分
update exam set math = math - 30 where math is not null order by (chinese + math + english) limit 3;
3.删除
语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
示例:
1.删除孙悟空同学的考试成绩
delete from exam where name = '孙悟空';
2.删除英语成绩倒数前三的同学的所有考试成绩
delete from exam order by english asc limit 3;
谨记:跟update用法一样,如果不加where限制的话,那么整张表都会清空
小技巧:
我们可以在设置一个字段deleteStatus,专门去显示数据是否删除,只需要更改deleteStatus的值,不不用使用delete,就可以完成删除操作。
下一篇博客,我们就要介绍联合查询等相关知识点,我们不见不散!
相关文章:

Mysql(四)---增删查改(进阶)
文章目录 前言1.查询操作1.1.全列查询1.2.指定列查询1.3.列名为表达式查询1.4.查询中使用别名1.5.去重查询1.6.排序1.6.2.NULL 1.7.条件查询1.8.分页查询 2.修改3.删除 前言 上一篇博客,我们学习了一些主键的概念,并且分别创造了一些示例表,…...

SOAP @WebService WSDL
SOAP & WebService & WSDL SOAP(Simple Object Access Protocol)WebService(Web服务)WSDL(Web Services Description Language) SOAP(Simple Object Access Protocol) **是一…...

【Qt】QWidget的toolTip属性
QWidget的toolTip属性 如果一个GUI程序,界面比较复杂,按钮比较多,使用toolTip可以设置当鼠标悬停在控件上的时候,可以弹出一个提示。 API说明 setToolTip 设置 toolTip. ⿏标悬停在该 widget 上时会有提⽰说明. setToolTipDur…...

【操作系统】什么是进程?什么是线程?两者有什么区别(面试常考!!!)
什么是进程/任务(Process/Task) 当我们打开我们的电脑的任务管理器就可以看到我们的电脑正在执行的进程。 每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资…...

AI -- Machine Learning
1. What is Machine Learning 1.1 Artificial Intelligence vs. Machine Learning 1.2 Relations to Other Disciplines 与其他学科的关系 1.3 Human Learning vs. Machine Learning 1.4 What is Skill in Machine Learning 什么是机器学习的技能 1.5 Two General Types of Le…...

了解交换机_1.交换机的技术发展
1.LAN的分段-单网线 最简单的网络是两台计算机通过一根网线相连: 一根网线它有很多限制,首先只能连接两台电脑,其次不能距离太远,主要因为: (1)单路网线太长会存在信号衰减;…...

ubuntu 24.04 安装 Nvidia 显卡驱动 + CUDA + cuDNN,配置 AI 深度学习训练环境,简单易懂,一看就会!
ubuntu 24.04 安装 Nvidia 显卡驱动 CUDA cuDNN,配置 AI 深度学习训练环境,简单易懂,一看就会! 1.查看本机显卡型号 lspci | grep -i nvidia输出如下: 01:00.0 3D controller: NVIDIA Corporation GM108M [GeForc…...

跟李沐学AI:目标检测的常用算法
区域神经网络R-CNN 使用启发式搜索算法来选择锚框 -> 使用预训练模型来对每个锚框抽取特征 -> 训练一个SVM对类别进行分类 -> 训练一个线性回归模型来预测边缘框偏移 锚框大小不一,如何将不同的锚框统一为一个batch? -> 兴趣区域池化层 兴趣区域(RoI…...

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(一)---UnrealCV获取深度+分割图像
前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程使用的环境: ubuntu 22.04 ros2 humblewindows11 UE5.4.3python8 本系列教程将涉及以…...

Java算法解析一:二分算法及其衍生出来的问题
这个算法的前提是,数组是升序排列的 算法描述: i和j是指针可以表示查找范围 m为中间值 当目标值targat比m大时,设置查找范围在m右边:i m-1 当目标值targat比m小时,设置查找范围在m左边:j m1 当targat的…...

数学建模预测类—【一元线性回归】
每日格言:行动是治愈恐惧的良药,而犹豫拖延将不断滋养恐惧. 目录 前言 一、什么是回归分析? 1.概念理解 2.分类和一般步骤 二、一元线性回归(Matlab算法) 1.利用regress函数 2、例题讲解 总结 前言 在具体讲述线性回归…...
配置更加美观的 Swagger UI
//注册Swagger服务 private static void AddSwaggerService(IServiceCollection services){services.AddSwaggerGen(opt >{opt.SwaggerDoc("Push", new OpenApiInfo{Version "v1",Title "Push API",Description "Push API 文档"…...
软件测试 - 基础(软件测试的生命周期、测试报告、bug的级别、与开发人员产生争执的调解方式)
一、软件测试的生命周期 测试贯穿软件的整个生命周期 软件测试的生命周期: 需求分析 →测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估->上线->运行维护 需求分析:判断用户的需求是否合理,是否可实现 测试计划:计划项…...

RTX 4070 GDDR6显存曝光:性能与成本的平衡之选
近期,关于NVIDIA RTX 4070新显卡的信息曝光,这款显卡将配备较为缓慢的GDDR6显存,而非更高性能的GDDR6X。这一配置的选择引发了业内的广泛关注,特别是在性能与成本的平衡问题上。 新版RTX 4070 OC 2X的核心特点 **1.显存类型与带…...

canvas的基础使用
canvas的基础使用 一、画一条直线二、线的属性设置三、防止多次绘制的样式污染四、闭合五、快捷绘制矩形六、绘制圆形七、绘制文字八、绘制图片js版dom版图片截取 一、画一条直线 画一条直线需要用到三个方法:cxt.moveTo、cxt.lineTo、cxt.stroke <canvas id&qu…...

Windows 常用网络命令之 telnet(测试端口是否连通)
文章目录 1 概述1.1 启用 telnet 2 常用命令2.1 ping:测试网络是否连通2.2 telnet:测试端口是否连通 3 扩展3.1 进入 cmd 命令3.2 cls 清屏命令 1 概述 1.1 启用 telnet telnet ip:port // 格式 telnet 10.0.24.154:8001若出现上述提示&…...
x264 编码器像素运算系列:asd8函数
x264 编码器中像素间运算 在 x264 编码器中有多种像素间的运算,如下: sad 计算:SAD(Sum of Absolute Differences,绝对差值和)是一种在图像处理和视频编码中常用的度量,用于计算两个图像块之间的差异。SAD值越小,表示两个图像块越相似。hadamard_ac计算:用于计算Hadam…...

什么是AR、VR、MR、XR?
时代背景 近年来随着计算机图形学、显示技术等的发展,视觉虚拟化技术得到了广泛的发展,并且越来越普及化,慢慢的也走入人们的视野。目前市场上视觉虚拟化技术的主流分为这几种 VR、AR、MR、XR。这几项技术并不是最近才出现的,VR的…...

Epic Games 商店面向欧盟 iPhone 用户上线
Epic Games Store 终于在欧盟推出,为玩家提供了不通过 App Store 就能在 iPhone上访问游戏的途径。在经历了漫长而昂贵的关于支付和竞争对手应用程序店面的法律战,以及公证方面的麻烦之后,Epic Games 成功地为App Store 带来了一个数字店面。…...
【计算机毕设项目】2025级计算机专业小程序项目推荐 (小程序+后台管理)
以下项目选题适合计算机专业大部分专业,技术栈主要为:前端小程序,后端Java语言,数据库MySQL 后台免费获取源码,可提供远程调试、环境安装配置服务。(文末有联系方式) 以下是本次部分项目推荐1…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...