MySQL数据的增删改查

news2024/11/18 23:49:38

CRUD

CRUD指的是创建(Create),读取(Retrieve),更新(Update)和删除(Delete),它是数据库或者持久层在软件系统中执行的基本功能,构成了大多数应用程序和服务器中的数据管理基础

新增-Create

全列插入+多行插入

其中insert,value以及(字段值1)是必须的,其他的按照需要自行选择,全列插入是指的values后的每个小括号的值要与列一一对应,否则会报错,如果是进行多行插入,需要自行在values后面增添括号,语法如下:

-- 需要注意,VALUES后的字段值必须与表名后的字段名一一对应
INSERT INTO 表名(字段名1, 字段名2, ..., 字段名n) VALUES(字段值1, 字段值2, ..., 字段值
n);
-- 需要注意,VALUES后的字段值必须与创建表时的字段顺序保持一一对应
INSERT INTO 表名 VALUES(字段值1, 字段值2, ..., 字段值n);
-- 一次性插入多条数据
INSERT INTO 表名(字段名1, 字段名2, ..., 字段名n) VALUES(字段值1, 字段值2, ..., 字段值
n),(字段值1, 字段值2, ..., 字段值n), ... , (字段值1, 字段值2, ..., 字段值n);
INSERT INTO 表名 VALUES(字段值1, 字段值2, ..., 字段值n), (字段值1, 字段值2, ..., 字段值
n), ..., (字段值1, 字段值2, ..., 字段值n);

指的列插入:

  • 一行中没有被指定插入的列,会用默认值填充,即NULL,表示缺失值。
  • 显示的指定所有的属性名,就是全列插入。
  • 指定列同样可以多行插入

查询-Retrieve

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件
        ALL表示查询所有满足条件的记录,可以省略;
        DISTINCT 表示去掉查询结果中重复的记录 ,AS可以给数据列、数据表取一个别名

        

全列查询:select * from + 表名 

         *:通配符:代表要查询结果包含所有的字段
        这是一个非常危险的操作,如果数据量太大,会消耗大量的内存和CPU资源,可能导致数据库服务器的性能下降。

指定列查询:select 后面紧跟查询的列,之间用,(逗号)隔开

查询字段为表达式

表达式不包含字段:查询结果返回一个临时表,会在指定位置生成一列

select col1,常量,...from 表名

例如:

表达式包含一个字段:例如将id+5

表达式包含多个字段:例如虚拟的考试表以及总分

别名:

在MySQL中,别名使用包括行别名和列别名

使用别名可以带来多个重要的好处,主要包括提高查询的可读性、简化复杂查询、解决字段名冲突和提升性能等方面。

列别名的引入旨在提高查询结果的可读性,并允许在查询中使用更符合情境的标签来代表列。(也可以给表达式起别名)

表别名则主要用于简化查询中的表引用,特别是在多表查询的情况下。通过为每个表定义一个简短的别名,可以大大增强SQL语句的可读性和编写效率。
例如:求考试得分:

去重查询:distinct

        判断为重复的条件:所有的查询列都相等,*表示全列去重

由于表中没有全列都相同的的数据,返回的临时表与原表一致

由于两名同学的数学成绩相同,去重查询只保留一个

排序:order by

SELECT
 [DISTINCT] {* | {column1 [, column2] ...} 
 FROM tbl_name
 [ORDER BY column1 [ASC | DESC], ...];
  1. ASC为升序,DESC为降序,不指定时MySQL默认的升序排序
  2. 使用到ORDER BY,后面跟字段名(或查询列表的表达式)和排序方式,表示按照该字段的值进行升序/降序排序;
  3. ORDER BY后面可以跟多个字段。在SQL中,可以使用逗号分隔多个字段来指定排序顺序。
  4. 当使用多个字段进行排序时,首先按照第一个字段进行排序,如果第一个字段的值相同,则按照第二个字段进行排序,以此类推。每个字段都可以指定升序(ASC)或降序(DESC)排序。(排序优先级取决于书写顺序)
  5. 查看表结构的关键字重名,但查看表结构的DESC是describe的缩写,排序的DESC是descend的缩写,这是SQL设计时的反例。

例如:根据总分对exam进行降序排名:

注:NULL视为比任何值都小,降序排在最下面。
       没有order by子句的查询,返回的顺序是未定义的

条件查询

        基于比较运算符和逻辑运算符,可以对复杂的条件进行过滤,从而达到要求,其中,区间查询,模糊查询以及null查询都是条件查询。
前置知识:运算符:

运算符说明
>,<,>=,<=大于,小于,大于等于,小于等于
=等于。NULL不安全,NULL=NULL结果为NULL
<=>等于。NULL安全,NULL<=>结果为1(TRUE)
!=,<>不等于
between a and b范围匹配[a,b],成立返回1(TRUE)
in(option)若是option中的一个,返回1(TRUE)
is null是null.成立返回1(true),不成立返回0(false)
is not null不是null.成立返回0(false),不成立返回1(true)
like模糊匹配,%表示任意多个字符,_表示一个字符

逻辑运算符

运算符说明
AND连接的多个条件都是true,结果是1
OR连接的任意一个条件为true,结果为1
NOT条件为true,返回0

注意事项:

  1. where条件可以使用表达式,但是不能使用别名,与SQL语句的执行顺序有关
    1)先确定表,即执行from
    2)根据过滤条件筛选合适的行,即执行where
    3)显示要查询的列,即执行select,由于列别名一般在select声明,因此执行where时识别不出别名
  2. 不支持链式比较,如a>col>b ,必须写为col>b AND col < a
  3. 运算符有优先级,但是一般使用时加上()自己设置优先级,保证万无一失
  4. NULL不参与除判断NULL之外的任何条件查询,它会被过滤掉
  5. 标准运算符作用与NULL时返回NULL,对其使用算数运算符也返回NULL

区间查询

SELECT
 {* | {column1 [, column2] ...} 
 FROM tbl_name
 WHERE {column1 BETWEEN a AND b | column1 >= a AND column1 <= b};

例如:查询总分在100~200的学生

模糊查询

SELECT
 {* | {column1 [, column2] ...} 
 FROM tbl_name
 WHERE column1 LIKE '[%][_...]值[_...][%]';

例如,查姓唐同学的成绩,%代表唐后面所有字符都被选中,类似还有%唐,%唐%,分别表示唐前面的字符被选中,唐左右的字符被选中

查询姓孙有两个字的名学生的成绩,两个__(连在一起了)表示孙后面的两个字符

null查询
区分NULL值和字符串’NULL‘,采用like 'NULL'实际上查的是字符串的NULL,不是NULL

分页查询 :limit

限制查询结果集的条数,通过分页查询可以有效的控制一次查询出的结果集中的记录条数,可以有效的减少数据库的压力,同时对用户也比较友好

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

记录的序号从0开始,第一条记录是0
如果起始位置超出了结果集的范围,可以执行但是返回的是空集

例如:查询id编号为前3的同学

查询总分前五的同学:

 

修改 - UPDATE

UPDATE tbl_name SET column1 = expr [, column2 = expr ...]
 [WHERE ...] [ORDER BY ...] [LIMIT ...];

注意:update如果不加where语句,将会修改表中的所有记录,十分危险!!!
例如,将唐三藏的数学改为95分

删除:DELETE
 

DELETE FROM  tbl_name [WHERE ...] [ORDER BY ...] [LIMIT ...];

注意:delete如果不加where语句,将会删除表中的所有记录,十分危险!!!
例如:删除宋公明学生的成绩:

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

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

相关文章

图神经网络之异构图转同构图

heterogeneous graph转homogeneous 异构图创建教程dgl.to_homogeneous语法格式例子 异构图创建教程 对于异构图创建&#xff0c;可以看异构图创建教程 dgl.to_homogeneous语法格式 dgl.to_homogeneous(G, ndataNone, edataNone, store_typeTrue, return_countFalse)G&#x…

K8s简介及环境搭建

一、Kubernetes简介 kubernetes 的本质是一组服务器集群&#xff0c;它可以在集群的每个节点上运行特定的程序&#xff0c;来对节点中的容器进行管理。目的是实现资源管理的自动化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修复&#xff1a;一旦某一个容器崩溃&a…

使用HashiCorp Nomad Cluster App管理高可用集群

容器化和Kubernetes如今已成为创建可扩展云原生应用程序的基本要素。但并非每个应用程序工作负载都需要容器或Kubernetes资源。HashiCorp Nomad是一个轻量级的工作负载调度程序&#xff0c;提供了与Kubernetes相似的优势&#xff0c;但不仅可以管理容器&#xff0c;还能管理其他…

SSL证书是否可以给多个域名使用?

在当今数字化的网络环境中&#xff0c;SSL证书在保障网站安全、保护用户数据传输方面发挥着至关重要的作用。那么&#xff0c;SSL 证书是否可以给多个域名使用呢&#xff1f;这是一个在网站开发、运营和安全管理领域备受关注的问题。 SSL 证书能够给多个域名使用吗&#xff1f…

指针函数C++

指针函数概念 指针函数在C中是一种特殊类型的函数。从本质上讲&#xff0c;它是一个函数&#xff0c;不过其返回值是一个指针类型的数据。例如&#xff0c;像int* plusfunction(int a, int b);这样的函数声明&#xff0c;plusfunction就是一个指针函数&#xff0c;它接受两个i…

Jvisualvm介绍;使用Jvisualvm:运行jvisualvm.exe;安装gc插件;查看gc

一&#xff0c;Jvisualvm介绍 jvisualvm是用来查看硬件使用情况的工具&#xff0c;多数会用它来看内存的使用情况 VisualVM 是Netbeans的profile子项目&#xff0c;已在JDK6.0 update 7 中自带(java启动时不需要特定参数&#xff0c;监控工具在bin/jvisualvm.exe)&#xff0c…

leetcode 10.9 94.二叉树的中序遍历

94. 二叉树的中序遍历 已解答 简单 相关标签 相关企业 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a…

LabelImag标注工具环境配置

LabelImag标注工具环境配置 Anaconda的安装和使用 Anaconda是一个集成了Python解释器、conda包管理器和众多科学计算、数据分析、机器学习等常用库的发行版。它允许用户轻松地管理Python环境和包&#xff0c;无需手动解决依赖问题。Anaconda特别适用于数据科学、机器学习、人…

Mac 下编译 libaom 源码教程

AV1 AV1是一种开放、免版税的视频编码格式&#xff0c;由开放媒体联盟&#xff08;AOMedia&#xff09;开发&#xff0c;旨在提供高压缩效率和优秀的视频质量。AV1支持多种分辨率&#xff0c;包括SD、HD、4K和8K&#xff0c;并适用于视频点播&#xff08;VOD&#xff09;、直播…

Python酷库之旅-第三方库Pandas(139)

目录 一、用法精讲 626、pandas.plotting.scatter_matrix方法 626-1、语法 626-2、参数 626-3、功能 626-4、返回值 626-5、说明 626-6、用法 626-6-1、数据准备 626-6-2、代码示例 626-6-3、结果输出 627、pandas.plotting.table方法 627-1、语法 627-2、参数 …

从0开始linux(11)——进程(3)进程的切换与调度

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 进程优先级进程的切换linux的调度算法 进程优先级 进程的优先级决定了进程获得CPU资源分配的顺序&#xff0c;在进程&#xff08;0&#xff09;这篇文章中博主就讲过并发和并行两个概念。即对…

ai论文写作软件哪个好?分享5款ai论文题目生成器

在当前的学术研究和写作领域&#xff0c;AI论文写作软件已经成为提高效率和质量的重要工具。根据多个来源的评测和推荐&#xff0c;以下是五款值得推荐的AI论文写作软件&#xff0c;其中特别推荐千笔-AIPassPaper。 1. 千笔-AIPassPaper 千笔-AIPassPaper是一款基于深度学习和…

超级详细 安装 Python 最佳实践文档

第一步&#xff0c;下载Python 打开Python官网&#xff1a;Welcome to Python.org 可以根据自己的需要下载相应的版本 第二步&#xff0c;安装Python 右键.exe文件->选择打开 安装 勾选 Install for all users选项 Browse为选择安装路径&#xff0c;可以自定安装路径 D盘…

动态规划12:213. 打家劫舍 II

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;213.…

DAMA数据管理知识体系(第15章 数据管理成熟度评估)

课本内容 15.1 引言 概要 能力成熟度评估&#xff08;Capability Maturity Assessment&#xff0c;CMA&#xff09;是一种基于能力成熟度模型&#xff08;Capability Maturity Model&#xff0c;CMM&#xff09;框架的能力提升方案&#xff0c;描述了数据管理能力初始状态发展到…

怎么将手机备忘录传送至电脑

在数字化时代&#xff0c;手机备忘录已成为我们生活中不可或缺的一部分。无论是记录购物清单、工作事项&#xff0c;还是灵感闪现的瞬间&#xff0c;手机备忘录都能随时记录下这些宝贵的信息&#xff0c;帮助我们防止遗忘。然而&#xff0c;有时候我们需要将这些备忘录内容转移…

IPSeizer/Zenmap 查看内网哪些ip没有被占用

下载IPSeizer, 无需安装直接双击打开使用&#xff0c;填入需要的网段&#xff0c;点start查询 或者使用Zenmap&#xff0c;指定范围和端口号

LSTM(长短时记忆网络)

一、引言 在处理序列数据时&#xff0c;循环神经网络&#xff08;RNN&#xff09;虽然能够处理序列数据并保留历史信息&#xff0c;但在实践中发现它对于捕捉长时间依赖关系的能力有限&#xff0c;尤其是在训练过程中容易遇到梯度消失或梯度爆炸的问题。为了解决这些问题&…

《Oracle DB备份与恢复》开篇:一切从Oracle Incarnation开始

题记&#xff1a;从本篇开始&#xff0c;我将为大家介绍Oracle DB备份与恢复。备份恢复是DBA的核心工作&#xff0c;重在实操&#xff0c;多加练习&#xff0c;模拟各种DB或实例崩溃的场景。不同于一些博主一出场就讲如何备份恢复&#xff0c;我将从备份的源头原理开始介绍。本…

科研必备降重画图工具

科研必备降重工具 1. Quillbot 链接&#xff1a;https://quillbot.com/ 2. paperyy 链接&#xff1a;https://www.paperyy.com/ 3、秘塔写作猫 链接&#xff1a;https://xiezuocat.com/#/ 4. DeepL 链接&#xff1a;https://www.deepl.com/translator 科研必备画图工具 1…