MySQL:增删改查

MySQL最基础的增删查改命令 MySQL增删改查 阅读详情

1.1、基本的增删改查语句

插入数据

增删改查俗称为CRUD,这也是MySQL运行之后执行次数最多的一类SQL语句,同时也是每位开发者写的最多的SQL语句,接下来则说说这块的语句,首先登场的是咱们的几位老伙伴,即insert、delete、update、select...这类普通SQL语句。

• insert into 表名(字段名...) values(字段值...);:向指定的表中插入一条数据。

• insert into 表名(字段名...) values(字段值...),(...)...;:向表中插入多条数据。

• insert into 表名 set 字段名=字段值,...;:插入一条数据,但只插入某个字段的值。

如果要插入一条完整的数据,字段名可以用*代替所有字段,除开上述两种插入数据的基本方式外,还有几种批量插入的方式,如下:

-- 使用insert语句批量插入另一张表中查询的数据
insert into 表名(字段名...) select 字段名... from 表名...;

-- 使用replace语句来实现批量插入
replace into 表名(字段名1,字段名2...) values(字段值....),(字段值...),...;

上述批量插入数据的方式中,还可以通过replace关键字来实现插入,它与insert有啥区别呢?答案在于它可以实现批量更新,使用replace关键字来插入数据的表必须要有主键,MySQL会根据主键值来决定新增或修改数据,当批量插入的数据中,主键字段值在表中不存在时,则会向表中插入一条相应的数据,而当插入数据中的主键值存在时,则会使用新数据覆盖原有的老数据。

删除数据

• delete from 表名;:删除一张表的所有数据。

• delete from 表名 where 条件;:根据条件删除一条或多条数据。

• truncate table 表名:清空一张表的所有数据。

修改数据

• update 表名 set 字段名=字段值,...;:修改表中所有记录的数据。

• update 表名 set 字段名=字段值,... where 条件;:根据条件修改一条或多条记录的数据。

• replace 表名(字段名1,...) values(字段值...),...;:批量修改对应主键记录的数据。

查询数据

• select * from 表名;:查询一张表的所有数据。

• select * from 表名 where 条件;:根据条件查询表中相应的数据。

• select 字段1,字段2... from 表名 where 条件;:根据条件查询表中相应数据的指定字段。

• select 函数(字段) from 表名;:对查询后的结果集,进行某个函数的特殊处理。

上述三种是最基本的查询方式,接着来看一些高级查询语法,如下:

-- 为查询出来的字段取别名
select字段1as别名,...from表名where条件;
select字段1别名,...from表名;

-- 为查询出的表取别名
select*from表名as别名;

-- 以多条件查询数据
select*from表名where字段1=值1and字段2=值2and...;-- 所有条件都符合时才匹配
select*from表名where字段1=值1or字段2=值2or...;-- 符合任意条件的数据都会返回
-- =符号,可以根据情况换为>、<、>=、<=、!=、between and、is null、not is null这些

-- 对查询后的结果集使用函数处理
select函数(字段)from表名where条件;

-- 对查询条件使用函数处理
select*from表名where函数(条件);

-- 模糊查询
select*from表名where字段like"%字符";-- 查询字段值以指定字符结尾的所有记录
select*from表名where字段like"字符%";-- 查询字段值以指定字符开头的所有记录
select*from表名where字段like"%字符%";-- 查询字段值包含指定字符的所有记录

-- 按照多值查询对应行记录
select*from表名where字段in(值1,值2,...);
-- 按照多值查询相反的行记录
select*from表名where字段notin(值1,值2,...);
-- 基于多个字段做多值查询
select*from表名where(字段1,字段2...)in((值1,值2,...),(...),...);

-- 只需要查询结果中的前N条数据
select*from表名 limit N;
-- 返回查询结果中 N~M 区间的数据
select*from表名 limit N,M;

-- 联合多条SQL语句查询(union all表示不去重,union表示对查询结果去重)
select*from表名where条件
unionall
select*from表名where 条件;

当然,对于MySQL中支持的函数稍后再展开聊,下面再聊聊一些其他的高级查询语法,如分组、过滤、子查询、关联查询等。

分组过滤、数据排序

写SQL语句时,有些需求往往无法通过最基本的查询语句来实现,因此就需要用到一些高级的查询语法,例如分组、过滤、排序等操作,接着先聊聊这个,语法如下:

-- 基于一个字段进行排序查询
select*from表名orderby字段名asc;-- 按字段值正序返回结果集
select*from表名orderby字段名desc;-- 按字段值倒序返回结果集
select*from表名orderby字段1asc,字段2desc;-- 按照多字段进行排序查询

-- 基于字段进行分组
select*from表名groupby字段1,字段2....;

-- 基于分组查询后的结果做条件过滤
select*from表名groupby字段1having 条件;

实际上group by、having这些语句,更多的要配合一些聚合函数使用,如min()、max()、count()、sum()、avg()....,这样才能更符合业务需求,但对于聚合函数后面再介绍,先简单说说where、having的区别:

这两个关键字都是用来做条件过滤的,但where优先级会比group by高,因此当分组后需要再做条件过滤时,就无法使用where来做筛选,而having就是用来对分组后的结果做条件过滤的。查询语句中的各类关键字执行优先级为:from → where → select → group by → having → order by。

子查询

子查询也可以理解成是查询嵌套,是指一种由多条SQL语句组成的查询语句,语法如下:

-- 基于一条SQL语句的查询结果进一步做查询
select*from(select*from表名where条件)as别名where条件;

-- 将一条SQL语句的查询结果作为条件继续查询(只适用于子查询返回单值的情况)
select*from表名where字段名=(select字段名from表名where条件);

-- 将一条SQL语句的查询结果作为条件继续查询(适用于子查询返回多值的情况)
select*from表名where字段名exists(select字段名from表名where条件);
-- 上述的exists可以换为not exists,表示查询不包含相应条件的数据

-- 将一条SQL语句的多个查询结果,作为条件与多个字段进行范围查询
select*from表名where(字段1,字段2...)in(select字段1,字段2...from 表名);

在上述子查询语法中,exists的作用和in大致相同,只不过not in时会触发全表扫描,而not exists依旧可以走索引查询,因此通常情况下尽量使用not exists代替not in来查询数据。

关联查询

关联查询也被称之为连表查询,也就是指利用主外键连接多张表去查询数据,这几乎也是日常开发中写的最多的一类查询语句,MySQL中支持多种关联类型,如:

• 交叉连接

• 内连接

• 外连接:

      • 左外连接

      • 右外连接

      • 全外连接

语法如下:

-- 交叉连接:默认把前一张表的每一行数据与后一张表的所有数据做关联查询
select*from表1,表2...;-- 这种方式默认采用交叉连接的方式
select*from表1crossjoin表2;-- 显式声明采用交叉连接的方式

-- 内连接:只返回两张表条件都匹配的数据
-- 隐式的内连接写法
select*from表1,表2...where表1.字段=表2.字段...;
-- 等值内连接
select*from表1别名1innerjoin表2别名2on别名1.字段=别名2.字段;
-- 不等式内连接
select*from表1别名1innerjoin表2别名2on别名1.字段<别名2.字段;

-- 左外连接:左表为主,右表为次,无论左表在右表是否匹配,都返回左表数据,缺失的右表数据显示NULL
select*from表1leftjoin表2on表1.字段=表2.字段;

-- 右外连接:和左连接相反,右表为主,左表为次,永远返回右表的所有数据
select*from表1rightjoin表2on表1.字段=表2.字段;

-- 全外连接:两张表没有主次之分,每次查询都会返回两张表的所有数据,不匹配的显示NULL
-- MySQL中不支持全连接语法,只能通过union all语句,将左、右连接查询拼接起来实现
select*from表1leftjoin表2on表1.字段=表2.字段
unionall
select*from表1rightjoin表2on表1.字段=表2.字段;

-- 继续拼接查询两张以上的表
select*from表1leftjoin表2on表1.字段=表2.字段leftjoin表3on表2.字段=表3.字段;
-- 通过隐式连接的方式,查询两张以上的表
select*from表1,表2,表3...where表1.字段=表2.字段and表1.字段=表3.字段...;
-- 通过子查询的方式,查询两张以上的表
select*from
(表1as别名1leftjoin表2as别名2on别名1.字段=别名2.字段)
leftjoin
表3as别名3on别名1.字段=别名3.字段;

对于连表查询的语法相信大家都并不陌生,因此不做过多产生,重点讲一下多表联查时的笛卡尔积问题,所谓的笛卡尔积问题就是指两张表的所有数据都做关联查询,一般连表查询都需要指定连接的条件,但如果不指定时,MySQL默认会将左表每一条数据挨个和右表所有数据关联一次,然后查询一次数据。比如左表有3条数据,右表有4条数据,笛卡尔积情况出现时,一共就会查询出3 x 4 = 12条数据。

笛卡尔积现象出现时,会随着表数据增长越来越大,因此在连表查询时一定要消除笛卡尔积问题,咋消除呢?其实就是指定加上关联条件即可。

BDD测试之Behave使用入门 BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。 阅读详情

相关推荐

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧

本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。

zero1的博客 997

Mysql基础增删改查语句

最基本必会的增删改查

weixin_53818758的博客 8万+

14自由度汽车动力学模型

多体系统分解簧上质量刚体:包含车身主体,具有6个自由度(x/y/z平移 + 俯仰/侧倾/横摆旋转)四个簧下质量刚体:每个车轮独立建模,含垂直跳动(z向)和旋转(绕z轴)自由度总自由度:6(车身) + 4×2(车轮) = 14自由度。

chao189844的博客 1194

mysql语句大全

#登录数据库mysql -hlocalhost -uroot -p;#修改密码mysqladmin -uroot -pold password new;#显示数据库show databases;#显示数据表show tables;#选择数据库use examples;#创建数据库并设置编码utf-8 多语言create database `examples` default character s

消失的光年 2382

电容DAC版图布局中的对称艺术:从二维共质心到误差最小化

本文深入探讨了电容DAC版图布局中的对称艺术,重点介绍了二维共质心技术如何有效最小化误差。通过分析系统误差和随机误差的来源,详细解析了共质心布局的核心技术及优化策略,包括梯度误差补偿和寄生参数平衡方法。实战案例展示了该技术在12位SAR ADC设计中的应用效果,为高精度集成电路设计提供了重要参考。

weixin_29300241的博客 578

深入解析Mifare Classic Crypto1认证流程与密钥交换机制

本文深入解析Mifare Classic Crypto1认证流程与密钥交换机制,详细介绍了Crypto1加密算法的工作原理、认证初始化阶段、随机数交换与密钥流生成过程,以及双向验证步骤。文章还分析了Mifare Classic的安全漏洞,包括随机数生成缺陷和密钥流恢复攻击,并提供了Proxmark3实战演示和防护建议。

c6d7e8f9g的博客 898

mysql:增删改查语句大全

mysql语法:插入、查询、删除、修改语句大全

weixin_44431073的博客 1万+

【图像超分】论文复现:Pytorch实现SRCNN!保姆级复现教程!提供完整代码和最优权重模型(x2、x3、x4)!科研级论文曲线图!计算平均PSNR和SSIM!代码Windows和Linux都可用!

由于很多同学反应没用过jupyter notebook,更习惯用pycharm项目的形式跑代码。于是,本文将用pycharm项目的形式,重新复现SRCNN!【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4701

MySQL增删改查语句

count()记录查询列有多少行 SUM():求数值序列的和 AVG():求平均数 MAX():求最大值 MIN():求最小值。基本语法 insert into 表名(列1,列2,列3.列4,…*代表代表所有列,要查询哪一列就把*改成哪一列,可以查询一列,也可以查询多列,多列用逗号隔开。基本语法update表名set列=值,列=值,....where..hereid=1(表示查询student表中id=1的学生的所有列)insertinto表名set列=值,列=值,列=值,....

qq_58480972的博客 2306

华为OD机试真题2026双机位C卷 C语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 172

SpringBoot实战教程-springboot概论

Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。

鸟哥哥的专栏 4155

MySQL:数据的增删改查

本博主将用优快云记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

weixin_52533007的博客 4187

小程序设计中的区块链应用:数字藏品实现

本文旨在为开发者提供在小程序中实现区块链数字藏品功能的完整技术方案。区块链与数字藏品的基础概念智能合约的设计与实现小程序与区块链的交互方式数字藏品的完整实现流程文章将从基础概念入手,逐步深入到技术实现层面,最后通过完整项目案例展示数字藏品在小程序中的实现方式。每个技术点都会配合代码示例和架构图进行说明。区块链:一种分布式数据库技术,通过加密算法保证数据不可篡改数字藏品:基于区块链技术的数字资产,具有唯一性和可验证性NFT。

小程序开发 1350

MySQL 从零开始:04 增删改查

在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改查语句。本节讲的增删改查是相对于而言的。

C与Python实战 1262

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

《Python 玩转 MySQL:轻松实现数据增删改查》

1,命令提示符窗口安装2,pycharm终端安装注意上面两个方法是二选一!

weixin_67914777的博客 2385

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MySQL基础:掌握增删改查

在数据库管理系统领域,MySQL以其强大的功能、开源性质和广泛的应用而著称。无论是在开发新应用还是维护现有系统中,对MySQL基本操作的理解和掌握是必不可少的。这篇博客将带你快速了解MySQL中的基本增删改查操作,即数据库管理的核心。

bairui6666的博客 511

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Clickhouse系列】增删改查:对比mysql

操作写入 (INSERT高吞吐,批量优先,异步落盘,延迟较高。分区高效。低延迟,实时,支持高并发小事务写入。删除 (DELETE极低效(异步Mutation),避免单行删除。分区删除高效。高效(行级),事务性,空间可复用。TRUNCATE极快。更新 (UPDATE极低效(异步Mutation),强烈避免。引擎模拟更新或分区替换更优。高效(行级),事务性,OLTP核心操作。查询 (SELECT聚合、扫描、大范围JOIN极快(列存、向量化、稀疏索引、MPP)。点查效率低,不擅长高并发小查询。

技术改变世界 1565

MySQL 04 :增删改查

【代码】MySQL 04 :增删改查。

tianyi520jx的博客 420

mysql增删查改总结_总结:mysql的各种增删改查!

(原创总结)分为数据库的增删改查,数据表(和字段)的增删改查,数据的增删改查 三部分!// 创建用户并授权GRANT SELECT ON bodydb.user TO us@localhost IDENTIFIED BY '123456';//GRANT 权限 ON 数据库.[数据表] TO 用户名@登录主机 IDENTIFIED BY ‘密码’;// all代表接受所有操作,比如 select...

weixin_42356139的博客 460

MYSQL学习笔记(九):MYSQL表的“增删改查”

在创建表之后如果要增加一列,需要使用下面的语句。ALTER TABLE table_name ADD 字段名 数据类型;

羊小猪~~的博客 1029

数据库的基础入门学习:mysql的增删改查

mysql 删除语句 mysql 查询语句 mysql 修改语句 mysql 增加语句

weixin_43173093的博客 229

Python Web实战:使用Python、Django和MySQL实现基于Web的增删改查功能

本篇是基于 Python + Django + HTML 搭建学生信息管理系统从0到1说明文档,实现 Python Web 端的增删改查,旨在快速入门Python Web。

有来技术 9850

【MySQL】MySQL表操作基础(一):增删改查(CRUD)

具体介绍了数据库的基本操作:增删改查(CRUD),补充说明了数据的备份和配置文件的相关知识点

我的博客 1398

MySQL:增删改查与事务管理

在进行 MySQL 性能优化时,不能仅关注某一类操作,而应从整体出发。索引设计要根据实际查询需求,避免过度索引导致写入性能下降;对于批量操作,合理利用事务和缓存机制,减少磁盘 I/O;优化 SQL 语句执行计划,通过分析执行计划找出性能瓶颈并进行针对性调整。

毒果的博客 1010

mysql学习记录:库的增删改查,表的增删改查

本文主要是对mysql:库的增删改查,表的增删改查,字段的增删改查的语法做一些测试。

BigDecimal二爷博客 2423

MySQL:6_表的增删改查

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)语法:[ ]内部的内容都是选填 案例: 1. 单行数据 + 全列插入 2. 多行数据 + 指定列插入 全列插入也可以一次性插入多行数据 3. 插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 可以选择性的进行同步更新操作 语法: 4. 替换 当我们插入的列和已有信息发生了冲突,把老数据删掉,重新插入新数据。如果没有冲突,直接插入。 注意:删除后再插入会导致自增类型值发

Open__Ai的博客 1051
上一篇: MySQL命令大全:再也不用担心忘记SQL怎么写啦!!!
下一篇: MySQL数据库函数汇总
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值