开发者社区> auqbllxiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

138 张图带你 MySQL 入门(2)

简介: 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>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
138 张图带你 MySQL 入门(4)
138 张图带你 MySQL 入门(4)
8 0
138 张图带你 MySQL 入门(3)
138 张图带你 MySQL 入门(3)
10 0
138 张图带你 MySQL 入门(1)
138 张图带你 MySQL 入门(1)
14 0
138 张图带你 MySQL 入门(5)
138 张图带你 MySQL 入门(5)
8 0
138 张图带你 MySQL 入门(1)
138 张图带你 MySQL 入门(1)
20 0
138 张图带你 MySQL 入门(5)
138 张图带你 MySQL 入门(5)
16 0
138 张图带你 MySQL 入门(1)
138 张图带你 MySQL 入门(1)
11 0
138 张图带你 MySQL 入门(5)
138 张图带你 MySQL 入门(5)
9 0
138 张图带你 MySQL 入门(1)
138 张图带你 MySQL 入门(1)
51 0
138 张图带你 MySQL 入门(5)
138 张图带你 MySQL 入门(5)
26 0
+关注
3138
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载