MySQL 表的增删查改(CRUD)

MySQL 表的增删查改(CRUD)

文章目录

  • MySQL 表的增删查改(CRUD)
    • 1. 新增(Create)
    • 2. 查询(Retrieve)
      • 2.1 全列查询
      • 2.2 指定列查询
      • 2.3 查询字段为表达式
      • 2.4 别名
      • 2.5 去重:DISTINCT
      • 2.6 排序:ORDER BY
      • 2.7 条件查询
      • 2.8 分页查询: LIMIT
    • 3. 修改(Update)
    • 4. 删除(Delete)

在这篇文章中我们将对MySQL表的CRUD进行讲解

CRUD 即增加(create)、查询(Retrieve)、更新(Update)、删除(Delete)

1. 新增(Create)

语法:

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

在这里我们先创建一张学生表:

 create table student_test (id int,sn int comment '学号',name varchar(20) comment '姓名',qq_mail varchar(20) comment 'QQ邮箱');

在这里插入图片描述

操作:

  • 单行数据 + 全列插入

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

    在这里插入图片描述

  • 多行数据 + 指定列插入

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

    在这里插入图片描述

2. 查询(Retrieve)

注:查询的所有操作都不会对数据库硬盘上存储的数据进行修改,都是针对临时表展开的操作

语法:

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

这里我们先创建一张考试成绩表并填入数据:

mysql> create table exam_result (id int,name varchar(30),chinese decimal(4, 1),math decimal (4, 1),english decimal (4, 1));mysql> insert into exam_result (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);

在这里插入图片描述

2.1 全列查询

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

在这里插入图片描述

2.2 指定列查询

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

在这里插入图片描述

2.3 查询字段为表达式

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4 别名

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

语法:

SELECT column [AS] alias_name [...] FROM table_name;
-- 结果集中,表头的列名 = 别名 (as建议加上)
SELECT id, name, chinese + math + english as total FROM exam_result;

在这里插入图片描述

2.5 去重:DISTINCT

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

SELECT DISTINCT math from exam_result;

在这里插入图片描述

2.6 排序:ORDER BY

语法:

-- ASC 为升序 (从小到大) -- 默认为ASC
-- DESC 为降序 (从大到小)
SELECT ... FROM table_name ORDER BY column [ASC|DESC], [...];
  1. 没有ORDER BY 子句的查询,返回的顺序是未定义的,不要依赖这个顺序

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

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

    在这里插入图片描述

  3. 使用表达式及别名排序

    -- 查询同学及总分,由高到低
    SELECT name, chinese + math + english as total FROM exam_result ORDER BY CHINESE + math + english DESC;SELECT name, chinese + math + english as 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 条件查询

比较运算符:

算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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;-- 查询总分在250分以下的同学
    SELECT name, chinese, math, english as total FROM exam_result where chinese + math + english < 250;
    

    在这里插入图片描述

    注:这里如果使用别名来进行判断会报错:

    在这里插入图片描述

  • 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 WHEARE (chinese > 80 or math > 70) and english > 70;
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    and的优先级高于or

  • 范围查询

    1. BETWEEN … AND …

      -- 查询语文成绩在 [80,90] 分的同学及语文成绩
      SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
      

      在这里插入图片描述

      :此时的范围为闭区间

    2. IN

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

      在这里插入图片描述

  • 模糊查询: LIKE

    这里需要使用到两个符号:通配符%_

    • % :匹配任意个字符

    • _ :只能匹配一个字符

    在这里先插入一些数据:

    在这里插入图片描述

    % 操作:

    -- 匹配名字中以孙开头的同学
    SELECT * FROM exam_result WHERE name like '孙%';-- 匹配名字中以孙结尾的同学
    SELECT * FROM exam_result WHERE name like '%孙';-- 匹配名字中包含孙的同学
    SELECT * FROM exam_result WHERE name like '%孙%';
    

    在这里插入图片描述

    注: %也可以表示匹配到0个字符

    _ 操作:

    -- 匹配名字中以孙开头的同学
    SELECT * FROM exam_result WHERE name like '孙_'; // 此处为空
    SELECT * 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

limit: 限制这次请求返回多少个记录(一页里有几条数据)

offset: 描述当前结果从第几条开始获取,不写offse 为默认情况 (从第 0 条开始)

语法:

-- 起始下标为0
-- 从 0 开始,筛选 n 条结果 (返回n条数据)
SELECT ... FROM table_name [WHERE ...][ORDER BY] LIMIT 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 页
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 ...]

update 表名 set 列名 (此处可以修改多个列)= 值 where 条件 (如果条件不写,就是针对所有的行进行修改)

注:进行修改时,要定位到行和列,再修改值

案例:

-- 将孙悟空的数学成绩变更为 85 分
UPDATE exam_result SET math = 85 WHERE name = '孙悟空';-- 将曹孟德 的数学变成90分,语文变成85分
UPDATE exam_result SET math = 90, chinese = 85 where name = '曹孟德';-- 将总成绩前三的 3 位同学的数学成绩减 10 分
UPDATE exam_result set math = math - 10 ORDER BY chinese + math + english DESC 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 = '孙行者';

在这里插入图片描述

在这里插入图片描述

-- 删除整张表
-- 准备测试表
CREATE TABLE for_delete (id INT, name VARCHAR(20));
-- 插入测试数据
INSERT INTO for_delete (name) values ('A'), ('B'), ('C');
--删除整表数据
DELETE FROM for_delete;

在这里插入图片描述

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

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

相关文章

CodeWhisperer 的使用心得

文章作者&#xff1a;小SS 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术推荐给全球云社…

王道p18 6.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同(c语言代码实现)

视频讲解在这里&#xff1a;&#x1f447; 顺序表p18 第6题wd数据结构课后代码题&#xff08;c语言代码实现&#xff09;_哔哩哔哩_bilibili 本题代码如下 void deleterepeat(struct sqlist* L) {if (L->length 0)printf("表空");int i 0;int k 0;for (i 1…

Android MVI架构的深入解析与对比

什么是MVI&#xff1f; M&#xff1a;model&#xff0c;此处的model并不是传统的数据模块&#xff0c;它是指用来存储视图状态UI State的一个模块 。比如请求数据时的loading、请求失败的提示页面等UI层面的变化状态。 V&#xff1a;view&#xff0c;视图模块 I&#xff1a;…

Mac终端学习

命令1&#xff1a;ifconfig 作用&#xff1a;列出本机所有的网络设备以及其上面的配置&#xff0c;主要指的是ip地址和mac地址 其他用法&#xff1a;sudo ifconfig en4 add 10.10.10.12 netmask 255.255.255.0 作用&#xff1a;给en4加入别的网段 其他用法&#xff1a;sudo i…

Visual Studio Code 常用快捷键大全

Visual Studio Code 常用快捷键大全 快捷键是编码过程中经常使用&#xff0c;且能够极大提升效率的部分&#xff0c;这里给大家介绍一些VS Code中非常有用的快捷键。 打开和关闭侧边栏 Mac — Command B Windows — Ctrl B Ubuntu — Ctrl B 选择单词 Mac — Command D …

GAMP源码阅读:PPP中的模型改正:天线相位中心、天线相位缠绕、潮汐、地球自转效应、引力延迟

原始 Markdown文档、Visio流程图、XMind思维导图见&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、卫星天线相位中心改正1、原理2、文件读取3、setpcv()&#xff1a;设置天线参数4、satantoff()&#xff1a;卫星 PCO 改正5、satantpcv()&…

CorelDRAW2023最新版本号24.5.0.731

CDR2023是一款近年来备受瞩目的工具软件&#xff0c;它提供了数据存储、分析以及处理的能力。但是&#xff0c;对于许多用户来说&#xff0c;CDR2023到底好用不好用还需要进行深入的分析和探讨。在本文中&#xff0c;我们将从多个角度分析CDR2023这款软件。 CorelDRAW2023版win…

【Proteus仿真】【Arduino单片机】RGB彩灯

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用WS2812 RGB彩灯等。 主要功能&#xff1a; 系统运行后&#xff0c;RGB彩灯花样显示。 二、软件设计 /* 作者&#xff1a;嗨小易&#xff08;…

如何通过智能管理箱实现高效文件管理:关键字轻松修改文件名

在信息化时代&#xff0c;文件管理变得尤为重要。智能管理箱已经成为我们生活中不可或缺的一部分。它可以帮助我们高效地管理各种文件&#xff0c;使得我们的工作和生活更加便捷。是一种高效的文件管理工具&#xff0c;可以帮助我们轻松地整理和分类文件&#xff0c;提高工作效…

Linux - 进程控制(下篇)- 进程等待

进程等待 为什么进程需要等待&#xff1f; 我们知道&#xff0c;在Linux 当中&#xff0c;父子进程之间一些结构就是一些多叉树的结构&#xff0c;一个父进程可能管理或者创建了很多个字进程。 而其实我们在代码当中使用fork&#xff08;&#xff09;函数创建的子进程的父进程…

vivo发布“蓝心千询”自然语言对话机器人

&#x1f989; AI新闻 &#x1f680; vivo发布“蓝心千询”自然语言对话机器人 摘要&#xff1a;vivo今日发布了“蓝心千询”自然语言对话机器人&#xff0c;基于蓝心大模型。蓝心千询可以进行知识信息的快速问答&#xff0c;文学创作、图片生成&#xff0c;甚至还能编写程序…

mit6.s081 笔记

1、系统调用 系统调用具体过程。 在任何地方&#xff0c;当我们需要使用系统调用时&#xff0c;只需要include “user/user.h”&#xff0c;就可以通过里面的函数声明来调系统调用&#xff0c;其函数的具体实现由 user/usys.pl 脚本帮我们生成对应的汇编代码&#xff08;具体代…

ENVI波段合成

1、envi5.3合成&#xff08;这种方法&#xff0c;必须有地理参考才可以&#xff09; 在工具栏处搜索波段&#xff0c;找到波段合成&#xff08;Layer Stacking&#xff09; 设置合成波段&#xff0c;其他默认 2、envi classic&#xff08;没有地理坐标也可以&#xff09; 我们…

https网站加载http资源问题

https网站加载http资源问题 前言&#xff1a;最近项目对接了一个第三方的平台、我们需要展示第三方平台返回来的图片资源、由于我们的服务器设置为了https、但是第三方平台返回的图片链接是 http 资源。所以就出现了图片无法加载出来的问题&#xff0c;在此记录一下问题的解决…

Java日期比较大小的3种方式及拓展

目录 一、字符串String的日期比较 二、数值型long比较 三、日期型Date直接比较 四、Date型日期的获取方式 五、Calendar获取年月日【拓展】 一、字符串String的日期比较 String型的日期通过compareTo()来比较&#xff0c;因为String实现了comparable接口 endDate.compare…

右击文件或者文件夹使用vscode打开

平常我们在打开项目时&#xff0c;经常会需要快捷打开方式&#xff0c;直接使右键使用编辑器打开&#xff0c;但是有时在安装时忘记了选择 “Add “Open with Code” action to Windows Explorer file context menu” 在Windows资源管理器文件上下文菜单中添加“用代码打开”操…

HttpClient基本使用

十二、HttpClient 12.1 介绍 HttpClient是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包&#xff0c;并且它支持HTTP协议最新的版本和建议。 HttpClient作用&#xff1a; 发送HTTP请求接收响应数据 …

有效的括号

给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有…

Python之字符串详解

目录 一、字符串1、转义字符与原始字符串2、使用%运算符进行格式化 一、字符串 在Python中&#xff0c;字符串属于不可变、有序序列&#xff0c;使用单引号、双引号、三单引号或三双引号作为定界符&#xff0c;并且不同的定界符之间可以互相嵌套。 ‘abc’、‘123’、‘中国’…

MySQL:一文掌握MySQL索引

目录 概念优缺点索引的数据结构Hash索引有序数组索引二叉搜索树平衡二叉树B树B树 索引的物理结构MyISAM存储引擎InnoDB存储引擎 索引的分类页、区、段change buffer 和索引回表和覆盖索引索引优化面试题索引哪些情况下会失效什么是索引下推主键选择自增和uuid的区别 概念 官方…