138 张图带你 MySQL 入门(2)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 138 张图带你 MySQL 入门(2)

DML 语句


有的地方把 DML 语句(增删改)和 DQL 语句(查询)统称为 DML 语句,有的地方分开,我们目前使用分开称呼的方式


插入


表创建好之后,我们就可以向表里插入数据了,插入记录的基本语法如下


INSERT INTO tablename (field1,field2) VALUES(value1,value2);


例如,向中插入以下记录



insert into job(name,sex,age,hiredate,birthday,salary) values("cxuan","男",24,"2020-04-27","1995-08-22",8000);


也可以不用指定要插入的字段,直接插入数据即可


insert into job values("cxuan02","男",25,"2020-06-01","1995-04-23",12000);


这里就有一个问题,如果插入的顺序不一致的话会怎么样呢?


对于含可空字段、非空但是含有默认值的字段、自增字段可以不用在 insert 后的字段列表出现,values 后面只需要写对应字段名称的 value 即可,没有写的字段可以自动的设置为 NULL、默认值或者自增的下一个值,这样可以缩短要插入 SQL 语句的长度和复杂性。


比如我们设置一下 hiredate、age 可以为 null,来试一下


insert into job(name,sex,birthday,salary) values("cxuan03","男","1992-08-23",15000);


image.png


我们可以看到有一行两个字段显示 NULL。在 MySQL 中,insert 语句还有一个很好的特性,就是一次可以插入多条记录


INSERT INTO tablename (field1,field2) VALUES

(value1,value2),
(value1,value2),
(value1,value2),
...;


可以看出,每条记录之间都用逗号进行分割,这个特性可以使得 MySQL 在插入大量记录时,节省很多的网络开销,大大提高插入效率。



更新记录


对于表中已经存在的数据,可以通过 update 命令对其进行修改,语法如下


UPDATE tablename SET field1 = value1, field2 = value2 ;


例如,将 job 表中的 cxuan03 中 age 的 NULL 改为 26,SQL 语句如下


update job set age = 26 where name = 'cxuan03';


SQL 语句中出现了一个 where 条件,我们会在后面说到 where 条件,这里简单理解一下它的概念就是根据哪条记录进行更新,如果不写 where 的话,会对整个表进行更新


删除记录


如果记录不再需要,可以使用 delete 命令进行删除


DELETE FROM tablename [WHERE CONDITION]


例如,在 job 中删除名字是 cxuan03 的记录


delete from job where name = 'cxuan03';


image.png


在 MySQL 中,删除语句也可以不指定 where 条件,直接使用


delete from job


这种删除方式相当于是清楚表的操作,表中所有的记录都会被清除。


DQL 语句


下面我们一起来认识一下 DQL 语句,数据被插入到 MySQL 中,就可以使用 SELECT 命令进行查询,来得到我们想要的结果。


SELECT 查询语句可以说是最复杂的语句了,这里我们只介绍一下基本语法


一种最简单的方式就是从某个表中查询出所有的字段和数据,简单粗暴,直接使用 SELECT


SELECT  FROM tablename;


例如我们将 job 表中的所有数据查出来


select  from job;


image.png



其中 是查询出所有的数据,当然,你也可以查询出指定的数据项


select name,sex,age,hiredate,birthday,salary from job;


上面这条 SQL 语句和 select from job 表是等价的,但是这种直接查询指定字段的 SQL 语句效率要高。


上面我们介绍了基本的 SQL 查询语句,但是实际的使用场景会会比简单查询复杂太多,一般都会使用各种 SQL 的函数和查询条件等,下面我们就来一起认识一下。


去重


使用非常广泛的场景之一就是 去重,去重可以使用 distinct 关键字来实现


为了演示效果,我们先向数据库中插入批量数据,插入完成后的表结构如下


image.png


你会发现只有两个不同的值,其他和 25 重复的值被过滤掉了,所以我们使用 distinct 来进行去重


条件查询


我们之前的所有例子都是查询全部的记录,如果我们只想查询指定的记录呢?这里就会用到 where条件查询语句,条件查询可以对指定的字段进行查询,比如我们想查询所有年龄为 24 的记录,如下


select  from job where age = 24;


where 条件语句后面会跟一个判断的运算符 =,除了 = 号比较外,还可以使用 「>、<、>=、<=、!=」 等比较运算符;例如


select  from job where age >= 24;


image.png


就会从 job 表中查询出 age 年龄大于或等于 24 的记录


除此之外,在 where 条件查询中还可以有多个并列的查询条件,比如我们可以查询年龄大于等于 24,并且薪资大雨 8000 的记录


select  from job where age >= 24 and salary > 8000;


image.png


多个条件之间还可以使用 or、and 等逻辑运算符进行多条件联合查询,运算符会在以后章节中详细讲解。


排序


我们会经常有这样的需求,按照某个字段进行排序,这就用到了数据库的排序功能,使用关键字 order by 来实现,语法如下


SELECT  FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC] , field2 [DESC|ASC],……fieldn [DESC|ASC]]


其中 DESC 和 ASC 就是顺序排序的关键字,DESC 会按照字段进行降序排列,ASC 会按照字段进行升序排列,默认会使用升序排列,也就是说,你不写 order by 具体的排序的话,默认会使用升序排列。order by 后面可以跟多个排序字段,并且每个排序字段可以有不同的排序顺序。


为了演示功能,我们先把表中的 salary 工资列进行修改,修改完成后的表记录如下


image.png


下面我们按照工资进行排序,SQL 语句如下


select  from job order by salary desc;


语句执行完成后的结果如下


image.png


这是对一个字段进行排序的结果,也可以对多个字段进行排序,但是需要注意一点


根据 order by 后面声名的顺序进行排序,如果有三个排序字段 A、B、C 的话,如果 A 字段排序字段的值一样,则会根据第二个字段进行排序,以此类推。

如果只有一个排序字段,那么这些字段相同的记录将会无序排列。


限制


对于排序后的字段,或者不排序的字段,如果只希望显示一部分的话,就会使用 LIMIT 关键字来实现,比如我们只想取前三条记录


select  from job limit 3;


image.png


上面这种 limit 是从表记录的第 0 条开始取,如果从指定记录开始取,比如从第二条开始取,取三条记录,SQL 如下


select  from job order by salary desc limit 2,3;


limit 一般经常和 order by 语法一起实现分页查询。

注意:limit 是 MySQL 扩展 SQL92 之后的语法,在其他数据库比如 Oracle 上就不通用,我犯过一个白痴的行为就是在 Oracle 中使用 limit 查询语句。。。





            </div>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
7月前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
128 0
|
7月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
647 0
|
7月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
160 0
|
7月前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
116 0
|
3月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
95 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
166 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
5月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
67 0
「Python入门」python操作MySQL和SqlServer
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
63 2