前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL基础之DML语句

MySQL基础之DML语句

作者头像
秋白
发布2019-02-21 09:56:14
2.3K0
发布2019-02-21 09:56:14
举报
文章被收录于专栏:java小白java小白

DML语句

DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert),更新(update),删除(delete)和查询(select),是开发人员日常使用最频繁的操作。

插入记录

表创建好后,就可以往里插入记录了,插入记录的基本语法如下

代码语言:javascript
复制
INSERT INTO tablename (field1,field2,.....,fieldn) VALUES (value1,value2,.....valuen);

向表emp中插入记录,ename为zhangsan,hiredate为now(),sal为2000,deptno为1

这里写图片描述
这里写图片描述

也可以不用指定字段名称,但是values后面的顺序应该和字段的排列顺序一致。如果想把其中的某个字段不设置值,需要把那个字段的名称重新填上去,那么这个字段会自动设置为NULL或者默认值或者自增的下一个数字

这里写图片描述
这里写图片描述

INSERT 语句还有一个很好的特性,可以一次性插入多条记录

代码语言:javascript
复制
INSERT INTO tablename (field1,field2,......,fieldn)
VALUES
(record1_value1,record1_value2,....,record1_valuesn),
(record2_value1,record2_value2,....,record2_valuesn),
(record3_value1,record3_value2,....,record3_valuesn),
......
(recordn_value1,recordn_value2,....,recordn_valuesn)
;

这个特性可以使得MySQL在插入大量记录时,节省很多的网络开销,大大提高插入效率

更新记录

表里的记录值可以通过update命令进行更改,语法如下:

代码语言:javascript
复制
UPDATE tablename SET FIELD1=value1,field2=value2,...fieldn=valuen [WHERE CONDITION]

将表emp中ename为“zhaosi”的薪水从2000改为4000

这里写图片描述
这里写图片描述

在MySQL中,update命令可以同时更新多个表中数据,语法如下:

代码语言:javascript
复制
UPDATE tablename1,tablename2,....tablenamen SET tablename1.field1=expr1,tablenamen.exprn [WHERE CONDTION];

注意:多表更新的语法更多地用在根据一个表的字段来动态地更新另外一个表的字段。

删除记录

如果记录不在需要,可以用delete命令删除,语法如下

代码语言:javascript
复制
DELETE FROM tablename [WHERE CONDITION]

在emp中将ename为”zhaosi”的记录删除

这里写图片描述
这里写图片描述

在MySQL中可以一次删除多个表的数据,语法如下 DELETE tablename1,tablename2,……,tablenamen FROM tablename1,tablename2,….,tablenamen[WHERE CONDTION] 注意:如果from后面的表名用别名,则delete后面也要用相应的别名,否则会提示语法错误。

查询记录

数据插入到数据库中后,就可以用SELECT命令进行各种各样的查询,使得输出的结果符合用户的要求。SELECT的语法很复杂,

代码语言:javascript
复制
SELECT * FROM tablename [WHERE CONDITION]

其中“*”表示将所有的记录都选出来,也可以用逗号分隔的所有字段来代替,以下两个查询都是等价的

这里写图片描述
这里写图片描述
查询不重复的记录

有时需要将表中的记录去掉重复后显示出来,可以用distinct关键字来实现

这里写图片描述
这里写图片描述
条件查询

WHERE 后面的条件可以使用 >,<,>=,<=,!=,=等比较运算符,多个条件之间还可以使用 or,and等逻辑运算符进行多条件联合查询。 下面的例子是多字段条件查询

这里写图片描述
这里写图片描述
排序和限制

取出按照某个字段进行排序后的记录结果集,这就用到了数据库的排序操作,用关键字ORDER BY 来实现

代码语言:javascript
复制
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC\ASC],field2 [DESC\ASC],...,fieldn[DESC\ASC]]

DESC和ASC是排序顺序关键字,DESC表示按照字段进行降序排序,ASC则表示升序排列,如果不写此关键字默认是升序排序。RODER BY后面可以跟多个不同的排序字段,并且每个排序字段可以用不用的排序顺序。


如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,依次类推。如果只有一个排序字段,则这些字段相同的记录将会无序排序。

这里写图片描述
这里写图片描述

如果希望显示一部分数据,而不是全部,可以使用LIMIT关键字来实现,LIMIT语法如下

代码语言:javascript
复制
SELECT...[LIMIT offset_start,row_count]

其实offset代表的意思是记录的其实偏移量(self:从第一行开始),row_count代表显示的行数(self:一共显示几条记录) 未填写offset_start默认为0,只需要填写显示的行数即可,实际显示的就是前n条记录

这里写图片描述
这里写图片描述
聚合

很多情况下,用户都需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数,这时就要用到SQL的聚合操作。 聚合操作的语法如下:

代码语言:javascript
复制
SELECT [field,field2,....,fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,...,fieldn
[WITH ROLLUP]]
[HAVING where_contition]
]

参数说明

1.

  1. fun_name 表示要做的聚合操作,也就是聚合函数,常用的有sum(求和),count(*)记录数,max(最大值),min(最小值)。
  2. GROUP BY关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在group by后面
  3. WITH ROLLUP是可选语法,表明 是否对分类聚合后的结果进行再汇总
  4. HAVING关键字表示对分类后的结果再进行条件的过滤 注意:having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行了过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行过滤。
这里写图片描述
这里写图片描述

例子:统计emp表中的总人数

这里写图片描述
这里写图片描述

统计各个部门的人数

这里写图片描述
这里写图片描述

统计各个部门的人数,又要统计总人数

这里写图片描述]![这里写图片描述
这里写图片描述]![这里写图片描述

统计人数大于1人的部门

这里写图片描述
这里写图片描述

统计所有员工的薪水总额,最高和最低薪水

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年01月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DML语句
    • 插入记录
      • 更新记录
        • 删除记录
          • 查询记录
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档