【MySQL】表的增删改查(CRUD)

目录

1.前言

2.增加(Create)

3.查询(Retrieve)

3.1全列查询

3.2指定列查询

3.3查询字段为表达式

3.4别名

3.5去重:DISTINCT

3.6排序:ORDER BY

3.7条件查询:WHERE

3.8分页查询:LIMIT

4.修改(Update)


1.前言

我们前面学习了MySQL数据库的基础知识,今天我们学习MySQL数据库中表的增删改查。增删改查就是CRUD ,即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。注释的话,在SQL中可以使用“--空格+描述”来表示注释说明。

2.增加(Create)

语法:

INSERT INTO 表名 [指定列名] VALUES (value_list, value_list1...);

插入数据: 

  • 单行数据 + 全列插入
-- 插入两条记录, value_list 数量必须和定义表的列的数量及顺序一致
insert into student values (1, 100, '张三', NULL);
insert into student values (2, 101, '李四', '123456@qq.com');

  • 多行数据 + 指定列插入 
-- 插入两条记录, value_list数量必须和指定列数量及顺序一致
insert into student (id, sn, name) values
(102, 20001, '王五'),
(103, 20002, '赵六');

3.查询(Retrieve

语法:

select [DISTINCT] {* | {column [, column] ...} FROM 表名 
[WHERE ...] [ORDER BY column [asc | DESC], ...] LIMIT ...}
-- 创建考试表
create table exam (
id int,
name varchar(30),
Chinese decimal(4, 1),
math decimal (4, 1),
English decimal (4, 1)
);

-- 插入数据
insert into exam (id, name ,Chinese, math, English) values
(1, '唐三藏', 67, 98, 56),
(2, '孙悟空', 87.5, 99, 77),
(3, '猪悟能', 80, 78.5, 90),
(4, '曹孟德', 97, 80, 75),
(5, '刘玄德', 85, 87, 88),
(6, '孙仲谋', 75, 80, 95),
(7, '诸葛孔明', 99, 100, 98);

3.1全列查询

通常情况下不建议使用 * 进行全列查询,因为

  1. 查询的列越多,意味着需要传输的数据量越大;
  2. 可能会影响导索引的使用
SELECT * FROM 表名;

 例如我们通过SELECT * FROM exam; 查询exam表的全部数据。

3.2指定列查询

指定列的顺序不需要按定义表的顺序来。

select id,name,math from exams;

3.3查询字段为表达式

1.表达式不包含字段

select id,name,10 from exams;

2.表达式包含一个字

select id, name, English + 10 from exam;

3.表达式包含多个字段

select id, name, Chinese + math + English from exam;

3.4别名

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

语法:

SELECT column [AS] alias_name [...] FROM 表名;
select id, name, Chinese + math + English as total from exam;

建议不用as

3.5去重:DISTINCT

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

select DISTINCT math from exam;

3.6排序:ORDER BY

语法:

SELECT ... FROM 表名 [WHERE ...] ORDER BY column [ASC|DESC], [...];

Tips:

  • ASC 为升序(从小到大)
  • DESC 为降序(从大到小)
  • 默认为 ASC

1.没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。

2.NULL 数据排序视为比任何值都小,升序出现在最上面,降序出现在最下面。

select name, math from exams ORDER BY math;
select name, math from exams ORDER BY math DESC;

3.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条件为 TRUE(1),结果为 FALSE(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 WHERE English < 60;-- 查询语文成绩好于英语成绩的同学
    select name, Chinese, English from exam where Chinese > English;-- 查询总分在250分以下的同学
    select name, Chinese, math, English as total from exam where Chinese + math + English < 250;

  • AND与OR:

-- 查询语文成绩大于80分,并且英语成绩大于80分的同学
select * from exam where Chinese > 80 and English > 80;-- 查询语文成绩大于80分,或英语成绩大于80分的同学
select * from exam where chinese > 80 or English > 80;-- 观察AND 和 OR 的优先级
select * from exam where Chinese > 80 or math > 70 and English > 70;
select * from exam where (Chinese > 80 or math > 70) and English > 70;

说明:and的优先级高于or

  • 范围查询:

1.BETWEEN … AND …

-- 查询语文成绩在 [80,90] 分的同学及语文成绩
select name, Chinese from exam where Chinese BETWEEN 80 AND 90;

-- 查询数学成绩是 58 或 59 或 98 或 99分的同学及数学成绩
select name, math FROM exam where math IN (58, 59, 98, 99);

  • 模糊查询: LIKE

Tips:

  • % 匹配任意多个(包括 0 个)字符
  • _ 匹配严格的一个任意字符
-- 新增两条学生数据
insert into exam (id, name ,Chinese, math, English) values
(8, '小孙', 90, 96, 99),
(9, '者行孙', 84, 68, 97);
-- 查找名字以孙开头的学生
select * from exam where name like '孙%';-- 查找名字以孙结尾的学生
select * from exam where name like '%孙';-- 查找名字中含孙的学生
select * from exam where name like '%孙%';

我们也可以使用模糊查询中的 _ 匹配严格的一个任意字符,有以下几种情况:

-- 查找名字中以孙开头的同学
select * from exam where name like '孙_';
select * from exam where name like '孙__';-- 查找名字中含孙的同学
select * from exam where name like '_孙_';-- 查找名字中以孙结尾的同学
select * from exam where name like '_孙';
select * from exam 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;

    3.8分页查询:LIMIT

-- 起始下标为0-- 从 0 开始,筛选 n 条结果
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n;-- 从 s 开始,筛选 n 条结果
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT s, n;-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
-- 第 1 页
select id, name, math, English, Chinese from exam ORDER BY id LIMIT 3 OFFSET 0;-- 第 2 页
select id, name, math, English, Chinese from exam ORDER BY id LIMIT 3 OFFSET 3;-- 第 3 页
select id, name, math, English, Chinese from exam ORDER BY id LIMIT 3 OFFSET 6;

-- 删除小孙的考试成绩
DELETE FROM exam WHERE name = '小孙';

offset 是说明从第几条开始查询,而 limit 是说明一次查询多少条记录。

4.修改(Update)

语法:

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

5.删除(Delete) 

语法:

DELETE FROM 表名 [WHERE ...][ORDER BY ...][LIMIT ...]
-- 删除小孙的考试成绩
DELETE FROM exam WHERE name = '小孙';

删除表的例子:

 

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

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

相关文章

【LLM之Agent】《Tool Learning with Large Language Models: A Survey》论文阅读笔记

概述 背景信息 近年来&#xff0c;基于大型语言模型&#xff08;LLMs&#xff09;的工具学习成为增强LLMs应对复杂任务能力的有力范式。尽管这一领域快速发展&#xff0c;现有文献的碎片化以及缺乏系统组织&#xff0c;给新入门者带来了阻碍。因此&#xff0c;本论文旨在对现…

stable-zero123模型构建指南

一、介绍 stabilityai出品&#xff0c;能够对有简单背景的物体进行三维视角图片的生成&#xff0c;简单来说也就是通过调整变换观察的视角生成对应视角的图片。 本项目通过comfyui实现。 二、容器构建说明 1. 部署ComfyUI &#xff08;1&#xff09;使用命令克隆ComfyUI g…

【设计模式系列】命令模式

目录 一、什么是命令模式 二、命令模式的角色 三、命令模式的典型应用场景 四、命令模式在Runnable中的应用 一、什么是命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将一个请求或简单操作封装为一个对象。这个模式提供了一种…

Axure垂直菜单展开与折叠

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;Axure垂直菜单展开与折叠 主要内容&#xff1a;垂直菜单单击实现展开/折叠&#xff0c;点击各菜单项显示选中效果 应用场景&#xff1a;后台菜单设…

Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题

作者&#xff1a;彦鸿 背景 随着 LLM&#xff08;大语言模型&#xff09;技术的不断成熟和应用场景的不断拓展&#xff0c;越来越多的企业开始将 LLM 技术纳入自己的产品和服务中。LLM 在自然语言处理方面表现出令人印象深刻的能力。然而&#xff0c;其内部机制仍然不明确&am…

Apache Seata 新版本集成了 RocketMQ 事务消息

大家好&#xff0c;我是君哥。 Apache Seata 是一款高性能、简单易用的分布式事务中间件&#xff0c;它包含 AT、TCC、SAGA 和 XA 四种模式。 在最近发布的新版本中&#xff0c;Apache Seata 引入了 RocketMQ 中间件&#xff0c;并且跟 RocketMQ 的事务消息配合使用。今天我们…

界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

顺序表(一)(数据结构)

一. 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列 。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;是人为想象出来的数…

1024程序员节 | QT进阶学习——如何通过QT连接云服务器的MySQL数据库并进行数据库操作 和 数据表的增删改查

目录 引出连接本地MySQL1.首先下载MySQL的ODBC驱动2.启动运行&#xff0c;创建用户数据源补充&#xff1a;ANSI 版和 Unicode 版 3.qt代码连接 如何连接华为云服务器中的MySQL1.在Centos中安装Linux版本的ODBC驱动2.在ODBC连接管理器中建立和华为云的链接3.qt代码通过ODBC连接华…

【微软商店平台】如何将exe打包上传微软商店

打开微软合作者中心&#xff1a;https://partner.microsoft.com/en-us/dashboard/home点击App and Games板块可以创建项目。 3. 重新生成包含私钥的自签名证书 运行以下命令&#xff0c;确保生成的证书包含私钥&#xff1a; New-SelfSignedCertificate -Type CodeSigning -Su…

【Java设计模式】1-15章

第1章 内容介绍 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试题 1.1.2 设计模式的重要性 1.2 课程亮点和授课方式 第2章 设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 ①单一职责原则 方案1 package com.atguigu.principle.singleresponsibili…

【Nuvoton干货分享】开发应用篇 4 -- 8bit MCU Flash 操作

我们在进行实际开发设计中&#xff0c;难免需要进行数据存储&#xff0c;早期很多都是外接EEPROM来进行设计&#xff0c;但是需要增加成本。其实芯片内部的Flash也是可以当成数据存储空间的。本章节主要介绍新唐的8位机如何进行常量数据的存储操作。 一、存储空间划分 我这边…

力扣hot100--DFS/BFS

DFS/BFS 1. 79. 单词搜索 中等 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相…

2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP

文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整&#xff0c;仅供参考&#xff01; 除WEB&#xff0c;RE&#xff0c;PWN外&#xff0c;其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…

鲸鱼优化算法(Whale Optimization Algorithm, WOA)原理与MATLAB例程

鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是一种基于鲸鱼捕食行为的智能优化算法。它模拟了座头鲸在狩猎时的“气泡网”捕食策略。 文章目录 1.适应度函数2. 更新公式2.1 突袭行为2.2 螺旋更新3.线性递减参数4. 边界处理 MATLAB 实现示例代码说明…

C语言程序设计:现代设计方法习题笔记《chapter3》

第一题 ​ 代码示例&#xff1a; #include<stdio.h>int main() {printf("Enter a date&#xff08;mm/dd/yyyy&#xff09;: ");int day, month, year;scanf_s("%d/%d/%d", &month, &day, &year);printf("%04d%02d%02d", yea…

一款好用的搜索软件——everthing(搜索比文件资源管理器快)

everthing官网链接 在官网选择下载 1.下载后双击打开 2.点击OK&#xff08;需要其他语言自己选择&#xff09; 3.选择安装位置&#xff08;路径最好别带中文和空格&#xff09; 继续点击下一步 4. 点击下一步 5.继续点击安装 6.然后就完成了 7.点击打开然后就可以搜索了

Elastic Stack简介

本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》 从ELK到Elastic Stack ELK是三个单词的首字母缩写&#xff0c;即Elasticsearch、Logstash和Kibana。 Elasticsearch用于数据存储与检索Logstash用于数据传输与清洗Kibana则用于数据可视化等领域 Elasticsearch的第…

AnaTraf | 网络性能监控系统NPM:提升网络性能与业务连续性

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 网络系统非常复杂&#xff0c;管理和维护它们也越来越具有挑战性。为了确保网络性能和业务的持续稳定运行&#xff0c;IT运维团队需要对网络进行实时监控、优化和快速排查故障。本文将围绕网络性能监控系统&…

raidrive 访问搭建的ftp服务报错超时的情况

尝试了很久&#xff0c;包括改用户权限和密码&#xff0c;后面根据ftp日志&#xff0c;查到用户登录是正常的 /var/log/vsftpd.log 就知道&#xff0c;不是密码问题也不是服务器端的问题&#xff0c;通过多次尝试发现是被动模式的问题&#xff0c;被动模式会通过其他端口进行交…