【MYSQL】表的增删改查(基础)

news2025/1/19 11:15:06

文章目录

  • 🌷 1. 新增(Create)
    • ⭐️ 1.1 单行行数据 + 指定列插入
    • ⭐️ 1.2 多行数据 + 指定列插入
  • 🌷 2. 查询(Retrieve)
    • ⭐️ 2.1 全列查询
    • ⭐️ 2.2 指定列查询
    • ⭐️ 2.3 查询字段为表达式
    • ⭐️ 2.4 别名
    • ⭐️ 2.5 去重:DISTINCT
    • ⭐️ 2.6 排序:ORDER BY
    • ⭐️ 2.7 条件查询:WHERE
    • ⭐️ 2.8 分页查询:LIMIT
  • 🌷 3. 修改(Update)
  • 🌷 4. 删除(Delete)
  • 🌷 5. 内容重点总结

🌷 1. 新增(Create)

语法:

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

案例:

-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   id INT,
   sn INT comment '学号',
   name VARCHAR(20) comment '姓名',
   qq_mail VARCHAR(20) comment 'QQ邮箱'
);

⭐️ 1.1 单行行数据 + 指定列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');

⭐️ 1.2 多行数据 + 指定列插入

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name) VALUES
 (102, 20001, '曹孟德'),
 (103, 20002, '孙仲谋');

在这里插入图片描述

🌷 2. 查询(Retrieve)

语法:

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

案例:

-- 创建考试成绩表
DROP TABLE IF EXISTS exam;
CREATE TABLE exam (
 id INT,
 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);

⭐️ 2.1 全列查询

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
SELECT * FROM exam;

⭐️ 2.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam;

在这里插入图片描述

⭐️ 2.3 查询字段为表达式

-- 表达式不包含字段
SELECT id, name, 10 FROM exam;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam;

⭐️ 2.4 别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称
语法:

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

-- 结果集中,表头的列名=别名
SELECT id, name, chinese + math + english 总分 FROM exam;

⭐️ 2.5 去重:DISTINCT

-- 98 分重复了
SELECT math FROM exam;

在这里插入图片描述

使用DISTINCT关键字对某列数据进行去重:

-- 去重结果
![SELECT DISTINCT math FROM exam;

在这里插入图片描述

⭐️ 2.6 排序:ORDER BY

语法:

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

(1) 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
(2) NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

 --查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;

(3) 使用表达式及别名排序

-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result 
 ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result 
 ORDER BY total DESC;

(4) 可以对多个字段进行排序,排序优先级随书写顺序

-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result 
 ORDER BY math DESC, english, chinese;

⭐️ 2.7 条件查询:WHERE

比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

案例:

  • 🌸 基本查询:
-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name, chinese + math + english 总分 FROM exam_result 
 WHERE chinese + math + english < 200;
  • 🌸 AND与OR:
-- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80;
-- 观察AND 和 OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and english > 70;
  • 🌸 范围查询

(1)BETWEEN … AND …

-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 使用 AND 也可以实现
SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese 
<= 90;

(2) IN

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
-- 使用 OR 也可以实现
SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math 
= 98 OR math = 99;
  • 🌸 模糊查询:LIKE
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权
  • 🌸 NULL 的查询:IS [NOT] NULL
 查询 qq_mail 已知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL;
-- 查询 qq_mail 未知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NULL;

⭐️ 2.8 分页查询:LIMIT

语法:

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

案例:
按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;

🌷 3. 修改(Update)

语法:

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

案例:

-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;
-- 将所有同学的语文成绩更新为原来的 2 倍
UPDATE exam_result SET chinese = chinese * 2;

🌷 4. 删除(Delete)

语法:

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

案例:

-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
 id INT,
 name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;

🌷 5. 内容重点总结

  • 🌸 新增
-- 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
  • 🌸 查询
-- 全列查询
select * from 表
-- 指定列查询
select 字段1,字段2... from 表
-- 查询表达式字段
select 字段1+100,字段2+字段3 from 表
-- 别名
select 字段1 别名1, 字段2 别名2 from 表
-- 去重DISTINCT
select distinct 字段 from 表
-- 排序ORDER BY
select * from 表 order by 排序字段
-- 条件查询WHERE:
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR 
(8)NOT
select * from 表 where 条件
  • 🌸 修改
update 表 set 字段1=value1, 字段2=value2... where 条件
  • 🌸 删除
delete from 表 where 条件

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

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

相关文章

十五、市场活动:excel导入

功能需求 ①用户在市场活动主页面,点击"导入"按钮,弹出导入市场活动的模态窗口; ②用户在导入市场活动的模态窗口选择要上传的文件,点击"导入"按钮,完成导入市场活动的功能. *只支持.xls *文件大小不超过5MB ③导入成功之后,提示成功导入记录条数,关闭…

(只需三步)如何用chatgpt自动生成思维导图

目录 chatgpt是可以生成思维导图的&#xff01;只需三步&#xff0c;非常简单&#xff01; 第一步&#xff1a;打开chatgpt&#xff0c;告诉它主题 第二步&#xff0c;完善思维导图 第三步&#xff1a;查看思维导图的效果 chatgpt是可以生成思维导图的&#xff01;只需三步&am…

21天学会C++:Day1----C++的发展史

CSDN的uu们&#xff0c;大家好。这里是C入门的第一讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 什么是C 2. C的发展史 3. C的重要性 4. 如何学好C 4.1 别人如何学C 4…

海睿思分享 | 制造业数字化转型之业务场景驱动

在开始谈业务场景驱动之前&#xff0c;我们先介绍一下流程驱动和数据驱动的概念。 首先数据和流程在现代制造业相辅相成&#xff0c;流程中有数据&#xff0c;数据往往通过流程传递&#xff0c;而“驱动”是通过建立一定的驱动机制&#xff0c;改变以往人为的业务推进模式&…

Android UI设计经验分享,掌握设计技巧,让你的应用独树一帜

Android UI渲染是指Android应用程序中的用户界面如何被绘制。Android UI渲染很重要&#xff0c;因为渲染过程直接影响应用程序的性能和用户体验。 当用户在Android应用程序中进行交互时&#xff0c;应用程序会相应地创建并更新UI元素&#xff0c;例如TextView、Button、ImageV…

速下载 | 12项网络与数据安全新国标全文公开

根据2023年3月17日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告&#xff08;2023年第1号&#xff09;&#xff0c;全国信息安全标准化技术委员会归口的12项网络安全国家标准正式发布。近日标准全文正式公开&#xff0c;炼石第一时间搜集整理这…

极氪X上市,18.98万元起售,进军紧凑豪华车市场

HiEV消息&#xff08;文/Amy&#xff09;4月12日&#xff0c;纯电SUV极氪X上市&#xff0c;共发布三个版本&#xff0c;官方零售价为&#xff1a; •ME版 五座后驱 189,800元 •YOU版 五座四驱 209,800元 •YOU版 四座后驱 209,800元全系三款车型预计将于6月起开启交付。极氪X限…

【分布式技术专题】「单点登录技术架构」一文带领你好好对接对应的Okta单点登录实现接口服务的实现落地

什么是SAML协议 SAML&#xff08;Security Assertion Markup Language&#xff09;是一种基于XML的标准&#xff0c;用于在不同的安全域之间传递身份验证和授权数据。SAML2.0是SAML协议的最新版本&#xff0c;它提供了一种标准的方式来实现单点登录&#xff08;SSO&#xff09…

1.数据结构---时间复杂度+面试题:消失的数字

文章目录前言1.什么是数据结构?2.什么是算法?3.时间复杂度3.1 实例1:请计算一下Func1中count语句总共执行了多少次&#xff1f;大O的渐进表示法实例2:计算Func2的时间复杂度实例3:计算Func3的时间复杂度&#xff1f;实例4:计算Func4的时间复杂度&#xff1f;大O的渐进表示法总…

Activiti7原生整合和工作流相关概念详解

一、概述 Activiti是一个工作流引擎&#xff0c; Activiti可以将业务系统中复杂的业务流程抽取出来&#xff0c;并用专门的建模语言BPMN2.0进行定义&#xff0c;业务流程按照预先定义的流程进行执行&#xff0c;实现了系统的流程由Activiti进行管理&#xff0c;减少业务系统由…

C++ vasprintf

vasprintf 是一个 C 库函数&#xff0c;它可以通过可变参数创建一个格式化的字符串&#xff0c;并将其存储在动态分配的内存中。它的使用方法与 printf 类似&#xff0c;但它不会将结果打印到标准输出流中&#xff0c;而是将其存储在一个指向字符数组的指针中。 以下是 vasprin…

RFID技术在供应链管理中的应用

RFID是无线射频识别技术的简称&#xff0c;广泛应用于物流、制造、供应链等领域。在供应链管理中&#xff0c;RFID技术可以提供更加精确、实时的信息&#xff0c;帮助企业减少损耗和时间成本&#xff0c;提高效率和可靠性。本文将介绍RFID技术在供应链管理中的应用及其优势。 …

6.redis-集群

01-集群cluster 存在的问题 redis提供的服务OPS(operation per second)可以达到10万/秒&#xff0c;当前业务OPS如果超过10万/秒&#xff0c;怎么办&#xff1f; redis集群 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gITgqXr9-1681709270830)(n…

Nginx学习笔记 - 新

跟着 https://www.bilibili.com/video/BV1yS4y1N76R 视频学的 安装教程 nginx环境搭建 通过不同域名相同端口访问不同页面 首先添加hosts&#xff0c;映射下域名到装nginx的主机IP地址&#xff0c;我这里是虚拟机&#xff0c;且没有买域名就自己本地这样玩 进入nginx安装目…

【C语言学习3——基本的C语言语法知识1】

C语言学习3——基本的C语言语法知识主函数什么是主函数&#xff1f;写一个自己的函数主函数是整个C语言程序的入口要调用函数&#xff0c;必须先知道函数什么是变量&#xff1f;#include <stdio.h> int main() { printf("Hello World\n"); return 0; }相信你已…

科研人的R速成利器,读这两本就够了!

R 是数据科学领域的一门大热的编程语言&#xff0c;可以说它是专门为统计分析而生的。 相比起其他语言&#xff0c;R 简单易学&#xff0c;代码可读性强&#xff0c;并且不需要搭建复杂的编程环境&#xff0c;对初学者非常友好。 今天就和大家分享两本学习R的宝藏图书&#x…

【FPGA实验4】举重比赛机制

举重比赛有三名裁判&#xff0c;当运动员将杠铃举起后&#xff0c;须有两名或两名以上裁判认可&#xff0c;方可判定试举成功&#xff0c;若用A、B、C分别代表三名裁判的意见输入&#xff0c;同意为1&#xff0c;否定为0;F为裁判结果输出&#xff0c;试举成功时F1&#xff0c;试…

02-神经网络基础

一、从机器学习到神经网络 1. 两层神经网络 - 多层感知机 2. 浅层神经网络特点 (1)需要数据量小、训练速度快; (2)对复杂函数的表示能力有限,泛化能力受到制约。 Kurt Hornik 证明了理论上两层神经网络足以拟合任意函数,而且过去没有足够的数据和计算能力,因此之前的…

计算机组成原理实验1---运算器 预习报告

本实验为哈尔滨工业大学计算机组成原理实验&#xff0c;实验内容均为个人完成&#xff0c;目的是分享交流&#xff0c;如有抄袭将追究责任&#xff0c;笔者能力有限&#xff0c;若因此影响读者的分数&#xff0c;本人深表抱歉。 一、 实验目的 了解运算器的组成结构基于数据通…

ChatGPT 究竟在做什么?它为何能做到这些?(2)

机器学习和神经网络的训练 到目前为止&#xff0c;我们一直在讨论那些 “已经知道” 如何完成特定任务的神经网络。但是&#xff0c;神经网络之所以如此有用&#xff08;估计也是在大脑中&#xff09;&#xff0c;是因为它们不仅是可以完成各种任务&#xff0c;而且可以逐步 “…