【MySQL】数据的基本操作(CRUD)

news2024/9/29 7:33:22

系列文章目录

例如:第一章 数据库基础


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、对数据简单操作
    • 新增操作 (create)
    • 查询操作(select)
    • 模糊查询
    • 分页查询
    • 修改操作(update)
    • 删除操作(delete)
    • 拓展
  • 总结


前言

在前文中,对数据库有了一个基本的认知,在本文中将开始对表中的数据进行增删改查(CRUD)操作。


一、对数据简单操作

新增操作 (create)

这个操作的命令行为 insert into 表名 values (值,值); 我们需要注意"值" 中所填入的数据的数量、类型、含义都要和表头的结构相匹配。
如student 表中,表结构顺序依次为Sno,name,因此使用新增操作要按顺序插入。而name为字符串类型,因此插入的数据要用引号包含。
在这里插入图片描述

为什么一定要按顺序填入数据?因为SQL是“弱类型”的语言,它支持“隐式类型转换”。
以下面的语句为例,我们知道’20’属于字符串类型,与int类型是毫不相干的。但是却能够运行成功。这是因为SQL自动将’20’转换成了20 。
在这里插入图片描述

新增数据的操作可以指定列插入。命令行为 insert into 表名(列名) values (值);
在这里插入图片描述
在这里插入图片描述

为了提高效率,新增操作可以一次性插入多行记录。(同样这个操作也支持指定列操作) 命令行为 insert into 表名 values (值,值),(值,值)……;
在这里插入图片描述

查询操作(select)

1. 首先最简单的查询就是全列查询 命令行为 select * from 表名;
对于select * 操作,是对于小数据库比较合适的。如果数据库体量大,服务器就会进行大量的IO操作,可能会大量占用系统资源。
在这里插入图片描述

2. 查询操作同样可以指定列查询。
命令行语句为 select 列名 from 表名; 我们需要确保查询的列名字是表名中存在的。

在这里插入图片描述
3. 查询操作支持表达式查询**,查询的结果不仅仅是列,而是可以把列中的数据代入到表达式中进行运算。
如下图所示,对course表中的Chinese数值+10 之后可以查询出来,但是
这个值只是临时结果,并不会存入数据库中,只支持查看。**
在这里插入图片描述
4. 去重查询
针对查询结果进行去重,存在重复的数据就会将重复的行合并成一行。
命令行为 select distinct 列名 from 表名;
在这里插入图片描述
5. 带有排序的查询
在selec查询结果中,默认是“无序”的,而要让数据有序的进行排列,则需要使用order by语句。
命令行为 select * from 表名 order by 列名

在这里插入图片描述
使用order by 是对数据进行升序排列;如果要对数据进行降序排列,则需要使用desc关键字。
命令行为 select * from 表名 order by 列名 desc;
在这里插入图片描述
数据的查询 条件也可以通过表达式的方式进行查询,
在下面的例子中,通过chinese+math+english as total 计算总分排序,而id = Null的数据中,只有chinese = null。因此我们可以知道,SQL进行算术运算时,如果某个操作数为NULL,则最终结果就为NULL
在这里插入图片描述
6. 指定多个列排序
order by可以指定多个列进行排序
命令行 select * from 表名 order by 列名 ,列名
以下面的SQL语句为例,首先根据math进行升序排序,当math成绩相等时,则以chinese进行第二选择排序。
在这里插入图片描述
同时也支持多列查询+降序的查询方式,只需要在列名后加上desc即可
在这里插入图片描述
7. 条件查询
条件查询是最重要以及最常用的一种查询方式。
命令行为 select * from 表名 where 条件;
在SQL语句中,判断是否相等的符号已经不是"==" 而是"="

通过条件查询我们可以知道,一个SQL语句的执行顺序为:
1、遍历数据库表
2、代入条件
3、计算列名中的表达式
4、排序/聚合 等操作
我们可以知道首先执行的where的条件,**因此在where中 使用as 定义的别名的顺序是在这之后的,**这样一来难以做到想要的条件。

在条件查询中,有几个关键词可以进行使用,分别有and、or、between and、in
and 和 or属于逻辑运算,是十分简单的一点,不再赘述。
between and的意思是二者之间,属于一个连续的区间;而in则表示的是一个离散的区间

我们可以通过下面的案例来看到in 的使用方法,in如果使用离散的方式来作为条件,那么我们就可以看到只有达到对应的值才能被获取到,而如果用in表示一个区间,就可以和between一样表示一个连续的区间的值了。
在这里插入图片描述
在这里插入图片描述

模糊查询

模糊查询和普通的查询并不相同。就像搜索引擎一样,只输入前几个字符,搜索结果就会出现许多有关这段字符的内容。这就属于模糊查询。
在SQL中,使用like关键字代表模糊查询,模糊查询有自己的通配符:‘%’ 来描述匹配规则。
以下面的SQL语句为例 select name from exam_result where name like '孙%';
在这里插入图片描述
这个SQL语句所查询的内容为孙字开头包括但孙字的结果。同理如果’%孙’则是匹配以孙字结尾的结果。'%孙%'则表示匹配包含孙字的结果。
在这种模糊查询的过程中,使用like进行模糊查询的效率是很低的。在表数据量大,匹配规则十分复杂的情况下,将需要更多的时间和系统资源来执行这个语句。

分页查询

分页查询是十分常用的一种查询手段。简单的例子就是假设100条数据,我们可以分成每页5条的方式进行查询。这种方式获取数据对于网络或者浏览器都能够减轻许多压力。
分页查询中涉及到的关键词有 limit 限制本次查询最多返回多少条记录。接着我们就需要搭配offset 关键字,即“偏移量”。
假设一页显示3条数据,在第一页中为limit 3 offset 0;而第二页就是 limit 3 offset 3;以此类推。
在这里插入图片描述
此外还有一种简略写法,limit A ,B的表达方式。A相当于offset 而B表示的是最大条数。
在这里插入图片描述
当学会了分页查询,我们就可以依靠技巧来获取诸如排名等数据的获取了。下面的SQL是获取总成绩排名前三的数据。
在这里插入图片描述

修改操作(update)

修改操作即update 最简单的使用语句就是 update 表名 set 列名 = 值 where 条件
在修改之后,matched 表示匹配到的,而Changed表示修改成功的。有时修改的值为非法的值,那么就会导致修改失败,matched > Changed
在这里插入图片描述
修改操作也可以同时修改多个列的数据,将set 后面写多个列,分别进行赋值即可。
在这里插入图片描述
修改操作同时也能搭配order by 和 limit这些关键字
比如下面我们尝试将总分排名倒三的学生英语成绩加上3分。

update exam_result set english = english + 3 
order by chinese + math + english
limit 3;

删除操作(delete)

删除操作是 行为单位进行删除的。最简单的SQL形式为 delete from 表名 where 条件; 如果不加上条件那么整个表里的内容都会被删除。删除整个表的操作为drop table表名
在这里插入图片描述
在这里插入图片描述

拓展

  1. 针对空值进行查询。
    在SQL中,null = null 为false 即条件是不成立的。假设条件查询中需要查询name值为null的数据,如果使用" where name = null "的SQL语句来编写的话,由于条件判断结果为false,因此得到的是空值。
    在这里插入图片描述

那么如何查找出NULL的数据呢?我们可以使用"is null"的方式来对条件进行判断。
在这里插入图片描述
除了使用is null 的判断,我们还可以使用 <=> 来进行判断。而这种方式还可以针对多个列进行使用,使用的范围会更加广泛。
在这里插入图片描述


总结

对于数据库的增删改查操作,最简单的
增 insert into 表名 values();
删 delete from 表名 where 条件;
改 update 表名 set 数据 where 条件;
查 select * from 表名 where 条件;
在这些操作中,查找的可变性是许多的,需要多多练习。

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

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

相关文章

C 开源库之cJSON

cJSON简介 CJSON库是一个用于解析和生成JSON数据的C语言库。 它提供了一组函数&#xff0c;使得在C语言中操作JSON数据变得简单而高效。 您可以使用CJSON库来解析从服务器返回的JSON数据&#xff0c;或者将C语言数据结构转换为JSON格式以进行传输。 cJSON 使用 官网地址&…

JAVA同城找搭子同城交友系统小程序源码

&#x1f308;【同城搭子交友系统】—— 遇见你的城市小确幸✨ &#x1f46d; 城市喧嚣中的温暖邂逅 在繁忙的都市生活中&#xff0c;你是否常常感到孤单&#xff0c;渴望有那么几个志同道合的朋友&#xff0c;一起探索这座城市的每一个角落&#xff1f;&#x1f3d9;️ 同城…

【机器学习-监督学习】逻辑斯谛回归

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

【前端 23】用Less优化你的CSS书写体验

用Less优化你的CSS书写体验 Less&#xff08;Leaner Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS的功能&#xff0c;引入了变量、嵌套规则、混合&#xff08;Mixins&#xff09;、运算等特性&#xff0c;使得CSS编写更加灵活和强大。下面&#xff0c;我…

【虚拟化】KVM命令行安装linux虚拟机

目录 ​一、KVM概述 1.1 KVM是什么 1.2 KVM和QEMU的关系 1.3 kvm相关安装包及其作用 二、安装KVM 三、命令行创建虚拟机并安装CentOS7 四、报错处理 4.1 问题1 4.2 问题2 一、KVM概述 1.1 KVM是什么 KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系…

热门好用骨传导耳机怎么挑选?推荐这五款值得入手的骨传导耳机

近两年来&#xff0c;骨传导运动蓝牙耳机在运动领域内日益流行。与传统耳机相比&#xff0c;它的显著优势是能够保持双耳开放&#xff0c;不会堵塞耳道&#xff0c;消除了入耳式耳机可能引起的不适感。此外还能避免运动时耳内出汗可能导致的各种卫生和健康问题。很多人就问了&a…

3.4交换机端口安全配置的方法和步骤

一、设置端口安全性 switchport port-security 二、设置某端口的安全Mac地址 switchport port-security mac-address <mac 地址> 三、设置端口允许通过的最多mac地址数量 switchport port-security maximum<数量> 默认为1,通常最多1024个 四、检测到违规时的…

leetcode 堆栈(栈+优先队列)——java实现

java创建堆栈和操作函数 Queue<String> queue new LinkedList<String> ();//队列定义 Deque<String> stack new LinkedList<String>();//堆栈 队列方法&#xff1a; queue.offer(e) null queue.poll() 返回移除的值 queue.peek() 堆栈方法&#xff1…

从零开始学cv-8:直方图操作进阶:直方图匹配,局部直方图均衡化,彩色直方图均衡化

文章目录 一&#xff0c;简介二、直方图匹配三、局部直方图均衡化四、彩色直方图均衡化4.1 rgb彩色直方图均衡化4.2 ycrb 彩色直方图均衡化 一&#xff0c;简介 在上一篇文章中&#xff0c;我们探讨了直方图的基本概念&#xff0c;并详细讲解了如何利用OpenCV来查看图像直方图…

MATLAB 大场景建筑物点云提取方法实现(75)

MATLAB 大场景建筑物点云提取方法实现(75) 一、算法介绍二、算法实现1.代码2.效果展示总结一、算法介绍 本章手动实现了一种建筑物点云提取方法,可以对室外的大规模场景点云中的建筑物进行有效提取,下面是实现的效果和具体的实现方法,直接复制粘贴代码即可使用, 二、算…

【基础算法总结】多源 BFS_多源最短路问题

多源 BFS_多源最短路问题 1.多源 BFS_多源最短路问题2.01 矩阵3.飞地的数量4.地图中的最高点5.地图分析 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&…

springboot纹理生成图片系统--论文源码调试讲解

第2章 程序开发技术 2.1 MySQL数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识了&#xff0c;一般来说…

Maven继承和聚合特性

目录 Maven继承关系 1.继承概念 父POM 子模块 2.继承机制 3.示例 4.继承作用 背景 需求 5.注意事项 Maven聚合关系 1. 定义与概念 2. 实现方式 3. 特性与优势 4. 示例 5. 注意事项 Maven继承关系 1.继承概念 Maven 继承是指在 Maven 的项目中&#xff0c;定义…

沉浸式技术

沉浸式技术是一种通过创造逼真的虚拟或增强现实环境&#xff0c;使用户感到自己仿佛身处另一个世界的技术。它主要依赖于视觉、听觉、触觉等多种感官的调动&#xff0c;带来身临其境的体验。随着技术的发展&#xff0c;沉浸式技术正迅速改变着娱乐、教育、医疗等众多领域。本文…

Golang | Leetcode Golang题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; func reverseVowels(s string) string {t : []byte(s)n : len(t)i, j : 0, n-1for i < j {for i < n && !strings.Contains("aeiouAEIOU", string(t[i])) {i}for j > 0 && !strings.Contains("aei…

牛客周赛 Round 56

牛客周赛 Round 56 A 面包店故事 链接&#xff1a;https://ac.nowcoder.com/acm/contest/88392/A 来源&#xff1a;牛客网 题目描述 小镇上有一家面包店&#xff0c;面包以 &#x1d465; 元的价格出售&#xff0c;加 &#x1d466; 元可以多加几块培根。小歪带着 &#x1d4…

蔚来汽车拥抱AI

30多个传感器&#xff0c;车上实时收集数 为什么要造手机 领航辅助驾驶 端到端AEB

Spring动态代理与AOP

AOP中的Before是如何实现的&#xff1f; 在AOP&#xff08;面向切面编程&#xff09;中&#xff0c;Before注解通常用于定义一个在方法执行前执行的前置通知&#xff08;advice&#xff09;。在Spring框架中&#xff0c;实现Before功能的底层机制主要基于代理&#xff08;Prox…

JSON Web Token (JWT): 理解与应用

JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间以JSON对象的形式安全地传输信息。JWT通常用于身份验证和授权目的&#xff0c;因为它可以使用JSON对象在各方…

4.5、配置vtp域

一、了解vtp域 VTP&#xff08;VLAN Trunking Protocol&#xff09;域是一个在网络中用于管理和同步VLAN配置信息的概念。它使得多个交换机可以在同一VTP域中共享VLAN信息&#xff0c;从而简化了VLAN的配置和管理。 三种主要模式 Server模式&#xff1a; 交换机可以创建、修…