【MySQL探索之旅】MySQL数据表的增删查改(初阶)

news2024/11/17 21:35:06

在这里插入图片描述

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 0. 前言
  • 1. 新增(Create)
    • 1.1 单行数据+全列插入
    • 1.2 多行数据+全列插入
    • 1.3 指定列插入
  • 2. 查询(Retrieve)
    • 2.1 全列查询
    • 2.2 指定列查询
    • 2.3 表达式查询
    • 2.4 别名
    • 2.5 去重
    • 2.6 排序
    • 2.7 条件查询
    • 2.8 分页查询
  • 3. 修改(Update)
  • 4. 删除(Delete)

0. 前言

前面我们学习了MySQL数据库和数据表的创建、删除。接下来我们就需要将数据保存在数据表中。今天我们就来学习数据表的增删查改(CRUD)。CRUD即增加(Create),查询(Retrieve),更新(Update),删除(Delete)四个单词的首字母缩写。

1. 新增(Create)

一旦创建数据库和数据表,下一步就是向数据表中添加数据。MySQL 通过 insert 语句来添加一条或多条数据。

语法格式:

insert into 表名 values (表达式, ...., 表达式);

示例:创建学生表

-- 创建学生表 id 
create table student(id int, name varchar(20));

1.1 单行数据+全列插入

-- 插入两条记录,表达式数量必须和定义表的列的数量及顺序一致
insert into student values(1,'张三');
insert into student values(2,'李四');

image-20240313203051521

1.2 多行数据+全列插入

-- 同时插入两条记录
insert into student values(4, '王五'),(5,'赵六');

image-20240313203404822

【注意】:一次插入多条数据,效率往往比多次插入一条数据要高。

1.3 指定列插入

-- 表达式 数量必须和指定列数量及顺序一致
insert into student(name) values('王麻子')

image-20240313203744483

2. 查询(Retrieve)

MySQL 通过 select 语句来查询数据,查询结果通常会生成一个临时表。

语法格式:

select 列名 from 表名;

示例:

-- 创建成绩表 学好 姓名 语文成绩 数学成绩 英语成绩
create table result(id int, name varchar(20), chinese decimal(3,1), math decimal(3,1), english decimal(3,1));

-- 插入数据
insert into result values (1,'张三',67, 98, 56);
insert into result values (2,'孙悟空', 87.5, 78, 77);
insert into result values (3,'李四',90,56.5,78);
insert into result values (4,'王五',90,98,78);

2.1 全列查询

-- 通常情况下不建议使用 * 进行全列查询
-- 查询的列越多,意味着需要传输的数据量越大,可能导致数据库崩溃
select * from result;

image-20240313205802296

2.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来
select name,id from result;

image-20240313210118315

2.3 表达式查询

-- 表达式不包含表达式
select id,name,10 from result;

image-20240313210323819

-- 表达式包含一个字段
select id,name,chinese+10 from result;

image-20240313210627016

-- 表达式包含多个字段
select id,name,chinese+math+english from result;

image-20240313210731457

2.4 别名

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

select 表达式 as 别名 from 表名;
-- 表中列名=别名
select id,name,chinese+math+english as 总分 from result;

image-20240313211014758

2.5 去重

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

-- 数学成绩98重复了
select math from result;
select distinct math from result;

image-20240313211244387

2.6 排序

语法:

select 列名 from 表名 order by 列名 [asc | desc];
  1. 没有 order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

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

    select id,name from result order by name;
    select id,name from result order by name desc;
    

    image-20240313214121972

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

    select id,name,chinese+math+english as 总分 from result order by 总分;
    select id,name,chinese+math+english as 总分 from result order by 总分 desc;
    

    image-20240313214628675

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

    -- 查询所有同学的成绩按数学升序、语文降序排序
    select * from result order by math,chinese desc;
    

    image-20240313214827019

2.7 条件查询

学习条件语法之间我们先学习条件查询需要用到的运算符:比较运算符和逻辑运算符

比较运算符:

运算符说明
> < >= <=大于、小于、大于等于、大于等于
=等于 NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!= <>不等于
between a1 and a2范围匹配,[a1 a2],如果 a1<= value <= a2,返回 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 条件可以使用表达式,但是不能使用as 别名
  2. and 的优先级高于or,在同时使用的,需要使用小括号()括起来优先执行的部分。

示例:

  • 基础查询

    -- 查询语文成绩大于80分的同学
    select * from result where chinese > 80;
    -- 查询数学成绩小于英语成绩的同学
    select * from result where math < english;
    -- 查询总成绩大于230的同学
    select id,name,chinese+math+english as 总成绩 from result where chinese+math+english < 230;
    

    image-20240313220918020

  • andor

    -- 查询语文成绩大于80数学成绩小于80的同学
    select * from result where chinese>80 and math<80;
    -- 查询语文成绩大于90或者数学成绩大于80
    select * from result where chinese>90 or math>80;
    
  • 范围查询

    1. between...and...

      -- 查询语文在[80,90]之间的同学
      select * from result where chinese between 80 and 90;
      
      -- 替换成 and 实现
      select * from result where chinese >= 80 and chinese <= 90;
      

      image-20240313222846074

    2. in

      -- 查询数学成绩是58 或者 68 或者 78 或者 88 或者 98的同学
      select * from result where math in(58,68,78,88,98);
      -- 替换成 or 实现
      select * from result where math=58 or math=68 or math 78 or math=88 or math=98;
      

      image-20240313223500118

  • 模糊查询:like

    select * from result where name like "张%";
    select * from result where name like "%张";
    select * from result where name like "_张";
    select * from result where name like "张_";
    

    image-20240313224300769

  • null 查询

    -- 查询名字为null的同学
    select * from result where name is null;
    -- 查询名字不为null的同学
    select * from result where name is not null;
    

    image-20240313224557812

2.8 分页查询

语法:

-- 起始下标为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;

案例:

-- 查询表的前3条记录
select * from result order by id limit 3;
-- 查询表的3到6条记录
select * from result order by id limit 3,3;
select * from result order by id limit 3 offset 3;

image-20240313230402479

3. 修改(Update)

语法:

update 表名 set 列名 = 值 where 表达式;

示例:

-- 将张三的数学成绩修改80
update result set math = 80 where name = '张三';
-- 将王五的数学成绩修改90,语文修改95
update result set math = 90,Chinese = 95 where name = '王五';

4. 删除(Delete)

语法:

delete from 表名 [where] [order by] [limit];

示例:

-- 删除张三同学这条记录
delete from result where name = '张三';
-- 删除整张表
 delete from result;

image-20240313231458383

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

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

相关文章

kubernetes之概念入门篇

K8S的内容是要比docker多很多的。 kubernetes中文官网&#xff1a; Kubernetes(K8S)中文文档_Kubernetes中文社区 1、认识kubernetes 1.1、什么是kubernetes&#xff1f; kubernetes是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;kubernetes…

鸿蒙API9+axios封装一个通用工具类

使用方式&#xff1a; 打开Harmony第三方工具仓&#xff0c;找到axios&#xff0c;如图&#xff1a; 第三方工具仓网址&#xff1a;https://ohpm.openharmony.cn/#/cn/home 在你的项目执行命令&#xff1a;ohpm install ohos/axios 前提是你已经装好了ohpm &#xff0c;如果没…

Hive和MySQL的部署、配置Hive元数据存储到MySQL、Hive服务的部署

目录 前言 一、Hive安装配置 二、MySQL安装配置 三、Hive元数据存储到MySQL 四、Hive服务的部署 前言 Hive 定义&#xff1a; Hive 是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供简单的 SQL 查询功能&#…

音视频开发之旅(75)- AI数字人进阶--GeneFace++

目录 1.效果展示和玩法场景 2.GeneFace原理学习 3.数据集准备以及训练的过程 5.遇到的问题与解决方案 6.参考资料 一、效果展示 AI数字人进阶--GeneFace&#xff08;1&#xff09; AI数字人进阶--GeneFace&#xff08;2&#xff09; 想象一下&#xff0c;一个专为你打造的…

MyBatis3源码深度解析(十一)MyBatis常用工具类(四)ObjectFactoryProxyFactory

文章目录 前言3.6 ObjectFactory3.7 ProxyFactory3.8 小结 前言 本节研究ObjectFactory和ProxyFactory的基本用法&#xff0c;因为它们在MyBatis的源码中比较常见。这里不深究ObjectFactory和ProxyFactory的源码&#xff0c;而是放到后续章节再展开。 3.6 ObjectFactory Obj…

最优算法100例之05-第一个只出现一次的字符

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。 题解报…

掌握抽象基础之20个必备原则,看完你还不会,你打我

抽象基础之20个必备原则 1. 面向对象编程&#xff08;OOP&#xff09;中抽象原则背后的基本思想是什么&#xff1f;2.抽象和封装的区别&#xff1f;3.提供一个现实生活中说明抽象的例子4.在编程语言中如何实现抽象&#xff1f;5.定义抽象类6.提供一个抽象类的真实世界场景7.解释…

Composer创建ThinkPHP无法获取最新版本的问题

composer安装TP&#xff08;截止目前最新版本为8.0&#xff09; composer create-project topthink/think tp 一开始直接给我安装成TP6了&#xff0c;原因就是我系统的PHP版本不是8.0以上&#xff0c;所以不支持最新的TP版本&#xff0c;就会默认安装之前稳定的版本。解决这个…

25.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-利用全新的通信结构传递消息

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;24.根据配置文件…

备考2025年AMC8竞赛:吃透2000-2024年600道真题(免费赠送真题)

我们继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;吃透AMC8历年真题是备考最科学、最有效的方法之一。 即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么…

18. 查看帖子详情

文章目录 一、建立路由二、开发GetPostDetailHandler三、编写logic四、编写dao层五、编译测试运行 一、建立路由 router/route.go v1.GET("/post/:id", controller.GetPostDetailHandler)二、开发GetPostDetailHandler controller/post.go func GetPostDetailHand…

SpringBoot3学习记录(有ssm基础)

目录 一、SpringBoot3 介绍 SpringBoot3 简介 SpringBoot3 快速入门 入门总结 1.为什么依赖不需要写版本 2.Startrer&#xff08;启动器&#xff09;是什么 3.SpringBootApplication 二、SpringBoot3 配置文件 统一配置管理 使用yaml配置文件&#xff08;推荐&#x…

Vue的渲染原理

列表渲染 列表渲染 v-for指令写在循环项上&#xff1a;v-for“(一个参数或者两个参数) in/of 要遍历的数组、对象、字符串、指定次数” 遍历数组时参数分别是数组中元素(可以是一个对象)和元素所在下标(从0开始)遍历对象时参数分别是属性值和属性名遍历字符串时参数分别是单…

基于SpringCache实现数据缓存

SpringCache SpringCache是一个框架实现了基本注解的缓存功能,只需要简单的添加一个EnableCaching 注解就能实现缓存功能 SpringCache框架只是提供了一层抽象,底层可以切换CacheManager接口的不同实现类即使用不同的缓存技术,默认的实现是ConcurrentMapCacheManagerConcurren…

Redisson分布式锁解决方案

官方地址 官网: https://redisson.org github: https://github.com/redisson/redisson 基于setnx实现的分布式锁存在的问题 redisson分布式锁原理 不可重入: 利用hash结构记录线程id和重入次数不可重试: 利用信号量和PubSub功能实现等待、唤醒, 获取锁失败的重试机制超时释放…

监听抖音直播间的评论并实现存储

监听抖音直播间评论&#xff0c;主要是动态监听dom元素的变化&#xff0c;如果评论是图片类型的&#xff0c;获取alt的值 主要采用的是MutationObserver&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver index.js如下所示:function getPL() {…

29网课交单平台源码最新修复全开源版本

去除论文编辑 去除强国接码 修复上级迁移 修复聚合登录 修复支付不回调 优化支付接口兼容码/易支付 优化MySQL表&#xff0c;提高网页加载速度 下载地址&#xff1a;https://pan.xunlei.com/s/VNstLrJaRtbvDyovPQ-CbISOA1?pwd622t#

数字人基础 | 3D手部参数化模型2017-2023

楔子: 2017年年底的泰国曼谷, SIGGRAPH Asia会议上, 来自马普所的 Javier Romero, Dimitrios Tzionas(两人都是 Michael J. Black的学生)发布了事实性的手部参数化模型标准: MANO [1]。 MANO的诞生意味着 Michael J. Black团队在继人体参数化模型 SMPL后, 事实性的将能够表达人…

【正则表达式】正则表达式里使用变量

码 const shuai No My Name Is ShuaiGe.match(new RegExp(shuai, gi)); //↑↑↑↑↑↑↑↑ //等同于 //↓↓↓↓↓↓↓↓ /No/.test(My Name Is ShuaiGe)用作领域 搜索的字符动态改变&#xff0c;例如↓模糊搜索例&#xff1a; 一个文本宽&#xff0c;输入文本模糊搜索用户…

【哈希映射】【 哈希集合】 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

作者推荐 视频算法专题 本文涉及知识点 哈希映射 哈希集合 LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复 RandomizedCollection 是一种包含数字集合(可能是重复的)的数据结构。它应该支持插入和删除特定元素&#xff0c;以及删除随机元素。 实现 Randomiz…