MySQL语法二:数据操纵语句
数据操纵语句DML(SELECT,DELETE,UPDATE,INSERT)
一、
数据操纵语句是对数据表中的内容进行操作。比如对某个表中的某条记录或者多条记录进行增删改查操作。
一)、查询
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]
现在对上面这条语法格式进行部分解读。
1、[ALL | DISTINCT | DISTINCTROW ]
ALL, DISTINCT和DISTINCTROW选项指定重复的行是否应该被返回。如果这些选项没有被给定,则默认值为ALL(所有的匹配行被返回)。DISTINCT和DISTINCTROW是同义词,用于指定结果集合中的重复行应被删除。
需要注意:DISTINCT 只能放在所有字段的开头,当然如果和其他函数一起使用位置则不限。
例1:select DISTINCT score, id from grade;
例2:select id, count(DISTINCT score) from grade;
还有需要注意的。DISTINCT 后面如果跟两个字段那么表示,当这两的字段的值都一样时,才算重复记录,否则不算。
2、select_expr, ...
每一个select_expr 表示你想要查询的列。
3、FROM table_references 表示你想要从哪个表查询。
4、WHERE where_difinition 表示被选择的行必须满足这个条件。
5、[GROUP BY {col_name | expr | position}
分组统计,需要注意的GROUP BY 和 DISTINCT 一样,如果GROUP BY 后面有两个字段的话,得两个字段的值一样才会认为是同一个分组。
6、HAVING
HAVING 子句是筛选分组后的数据,处理的是筛选后得到的结果集,而 WHERE 是筛选分组前的数据,处理的表或视图。
①、HAVING子句基本上是最后使用,位于被发送给客户端的条目之前,没有进行优化。(LIMIT用于HAVING之后。)
②、SQL标准要求HAVING必须引用GROUP BY子句中的列或用于总计函数中的列.
③、标准SQL工作性质具有优先权,因此如果一个HAVING 后面的列名既被用于GROUP BY,又被用作输出列清单中的起了别名的列,则优先权被给予GROUP BY列中的列。
④、HAVING不能用在应该被用于WHERE子句的条目。例如,不能编写如下语句:
mysql> SELECT col_name FROM tbl_name HAVING col_name > 0; col_name > 0 应该是用在WHERE后面的,而不是HAVING。
说简单点就是 HAVING 后面应该跟有聚合函数的条件表达式,而WHERE 后面不能跟有聚合函数的条件表达式。???
⑤、对于HAVING或ORDER BY子句中的子查询,MySQL也会在外部选择清单中寻找列名称。
7、ORDER BY
ORDER BY 用于将筛选的结果集进行排序。如果ORDER BY 后面有的多于一个字段,那么先按照第一个字段进行排序,如果的第一个字段的值相等,那么按照第二个字段的值进行排序,如果第二个字段的也相等,则按第三个。。。。。以此类推。直至最后一个字段。
8、LIMIT
LIMIT子句可以被用于限制被SELECT语句返回的行数。
二)、删除
三)、更新
二、JOIN语法
MySQL语法二:数据操纵语句的更多相关文章
- MySQL学习(二)——SQL语句创建删除修改以及中文乱码问题
一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- 学习mysql语法--基础篇(二)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成] DML ...
- {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析
MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...
- mysql 总结二(自定义存储过程)
mysql执行流程: sql命令--->mysql引擎-----(分析)---->语法正确-----(编译)--->可识别命令----(执行)---->执行结果---(返回)- ...
- 学习mysql语法--基础篇(一)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: 一.创建用户,创建数据库,给 ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
- MySQL(二)MySQL的安装和简单使用
1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...
- mysql优化二之锁机制
mysql优化二之锁机制 mysql提供了锁机制和MVCC机制来保证并发操作的安全性,这里主要讨论锁机制, MVCC见下篇文章 mysql的锁按照锁粒度可分为行锁与表锁,按照操作类型划分可读锁和写锁 ...
随机推荐
- bzoj 4942: [Noi2017]整数
Description Solution 加法减法可以分开考虑,如果只有加法的话,直接暴力进位复杂度是对的 询问的时候就是把两个二进制数做差,判断第 \(k\) 位的取值 实际上我们只需要判断 \(1 ...
- PLC编程逻辑思路
PLC编程逻辑思路 在整个执行过程的流程中,都是在不断地找启动条件,停止条件以及输出结果.当条件不够时,就得想办法如果添加标志位,根据已有条件去构造条件:当结果开发耦合时,就制造中间继电器去除耦合. ...
- 关于async和await的一些误区
微软的MSDN说async和await是“异步”,但是不少人(包括笔者自己)有一些误区需要澄清:为什么await语句之后没有执行?不是异步吗? [示例代码] public partial class ...
- FWORK-数据存储篇 -- 范式与反模式 (学习和理解)
理解 1.第二范式的侧重点是非主键列是否完全依赖于主键,还是依赖于主键的一部分.第三范式的侧重点是非主键列是直接依赖于主键,还是直接依赖于非主键列. 2. 反模式 范式可以避免数据冗余,减少数据库的 ...
- IoDH 实现的单例模式
饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存:懒汉式单例类线程安全控制烦琐,而且性能受影响.有种更好的单例模式叫做Initialization Demand Holder (IoDH)的技 ...
- 第4章 css文字text与字体font-face
text-overflow 与 word-wrap text-overflow:用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 语法: 但是text-overflow只是用来说明文字溢出 ...
- ES6中的import()函数
import(specifier) 上面代码中,import函数的参数specifier,指定所要加载的模块的位置.import命令能够接受什么参数,import()函数就能接受什么参数,两者区别主要 ...
- JS中forEach的用法
forEach是ES5中操作数组的一种方法,主要功能是遍历数组,例如: 1 2 var arr = [1,2,3,4]; arr.forEach(alert); 等价于: 1 2 3 4 var ar ...
- HTML颜色代码
记录十种个人比较喜欢的颜色: #19CAAD #8CC7B5 #A0EEE1 #BEE7E9 #BEEDC7 #D6D5B7 #D1BA74 #E6CEAC #ECAD9E #F46 ...
- GeoJSON相关操作
简介 本文主要介绍GEOJSON相关的操作 环境 gt-geojson-.jar,jts-1.8.jar 直接上代码 代码 wkt格式的geometry转成json格式 public String e ...