数据操纵语句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语法二:数据操纵语句的更多相关文章

  1. MySQL学习(二)——SQL语句创建删除修改以及中文乱码问题

    一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create ...

  2. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  3. 学习mysql语法--基础篇(二)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成]   DML ...

  4. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  5. mysql 总结二(自定义存储过程)

    mysql执行流程: sql命令--->mysql引擎-----(分析)---->语法正确-----(编译)--->可识别命令----(执行)---->执行结果---(返回)- ...

  6. 学习mysql语法--基础篇(一)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分:    一.创建用户,创建数据库,给 ...

  7. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

  8. MySQL(二)MySQL的安装和简单使用

    1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...

  9. mysql优化二之锁机制

    mysql优化二之锁机制 mysql提供了锁机制和MVCC机制来保证并发操作的安全性,这里主要讨论锁机制, MVCC见下篇文章 mysql的锁按照锁粒度可分为行锁与表锁,按照操作类型划分可读锁和写锁 ...

随机推荐

  1. Mybatis缓存(一)

    1.什么是缓存 Mybatis提供缓存,用于减轻数据压力,提高数据库性能. 2.Mybatis缓存分类 Mybatis的缓存分为一级缓存和二级缓存. Mybatis的一级缓存 1.一级缓存的范围  1 ...

  2. [转]OData/WebApi

    本文转自:https://github.com/OData/WebApi/tree/vNext OData Web API Introduction OData Web API (i.e., ASP. ...

  3. jquery ajaxFileUpload异步上传文件

    ajaxFileUpload.js 很多同名的,因为做出来一个很容易. 我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在这里:http:/ ...

  4. thinkphp session设置

    <?php namespace Home\Controller; use think\Controller; /*登录*/ class LoginController extends Publi ...

  5. 第8章 CSS3中的变形与动画(上)

    变形--旋转 rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中心顺时 ...

  6. ubuntu sudo不能用的解决办法

    输入sudo 出现 sudo: /etc/sudoers 可被任何人写 sudo: 没有找到有效的 sudoers 资源,退出 sudo: sudoers的权限被改了 pkexec chmod 044 ...

  7. css-布局定位

    position:  ** 属性值 - absolute: *** 将对象从文档流中拖出 *** 可以是top.bottom等属性进行定位 - relative: *** 不会将对象从文档流中拖出 * ...

  8. SPOJ:COT2 Count on a tree II

    题意 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数. n=40000,m=100000 Sol 树上莫队模板题 # include <bits/stdc++.h ...

  9. html+css 布局篇

    float 做了float后有一些不好的影响. 1.背景不能显示 由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色或CSS背景图片,而父级不能被撑开,所以导致CSS背景 ...

  10. js数组方法 改变原数组和不改变原数组的方法整理

    改变原数组: pop():   删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值 ...