给自己看的,所以以举例子为主了

检索数据

  SELECT  检索单列    SELECT name FROM student

         检索多列    SELECT no, name FROM student

         检索所有列   SELECT * FROM student

         检索不同行   SELECT DISTINCT name, sex FROM student    distinct修饰的select下的所有列,也就是说两条数据,name和sex中只要有一列不同,就算不同行了。

         限制结果    SELECT no FROM student LIMIT 5        如果搜出来的行不足限制数,那么全输出

         全限定表名   SELECT student.no FROM student

排序数据

  ORDER BY   按单列排序  SELECT name FROM student ORDER BY no      未被检索的列(no字段)也是可以以其排序的

           按多列排序  SELECT * FROM student ORDER BY birthday, sex   只有结果集中存在birthday相同的数据时,这些数据才会再按照sex排序

           排序方向   SELECT * FROM student ORDER BY birthday DESC   从大到小排序,常见的情形是价格最贵的,日期最新的。

过滤数据

  WHERE   单条件    SELECT name FROM student WHERE no=10

          不匹配    SELECT name FROM student WHERE no!=10

          范围     SELECT name FROM student WHERE no BETWEEN 1 AND 3  头尾都包含,即1、2、3

          空值     SELECT name FROM student WHERE sex IS NULL

数据过滤

  AND    多条件      SELECT name FROM student WHERE name='Deolin' AND sex=1

  OR      多条件      SELECT name FROM student WHERE name='Deolin' OR name='Bld'  一般AND和OR共存的情况,直接有小括号保证计算次序,而不是通过记忆去依赖优先级

  IN     范围       SELECT name FROM student WHERE name IN ('Deolin', 'Bld')     in和or, 优先选用in,因为速度更快,易管理,更直观

  NOT      否定单个条件     SELECT name FROM student WHERE NOT name IN ('Deolin1', 'Bld1')

通配符      为了效率,不过度使用;尽量不把通配符放在开始处

   LIKE %  通配符匹配  SELECT name FROM student WHERE name LIKE 'D%n'    任何字符任何次数, name是'Dn' 'Deolin'…的数据都在范围内;LIKE '%'匹配不到null

   LIKE _   通配符匹配  SELECT name FROM student WHERE name LIKE 'Deol_n'   任何字符一次,只能1次,不能多也不能少

正则表达式

  REGEXP

    OR匹配   REGEXP '1000|2000'   匹配1000或2000

    字符匹配    REGEXP '[ab12]ton'  匹配aton或bton或1ton或2ton

    范围匹配  REGEXP '[0-9]'     相当于[0123456789]

          REGEXP '[3-6]'     相当于[3456]

          REGEXP '[b-d]'     相当于[bcd]

    转义匹配  REGEXP '\\%'     匹配字符 %

    元字符匹配 REGEXP '\\f'       换页    \\f换页   \\n换行   \\r回车   \\t制表   \\v纵向制表

    字符类匹配 REGEXP '[:alnum:]'  相当于[a-zA-Z0-9],而且三者都得有

          REGEXP '[:alpha:]'   相当于[a-zA-Z],而且两者都得有

          REGEXP '[:digit:]'    相当于[0-9]

    多匹配   {n}          指定匹配次数

          {n,}          指定匹配次数不小于n

          {n,M}         指定匹配次数为n至M

          *             0次或多次匹配

          +           相当于{1,}

          ?            相当于{0,1}

    定位匹配  ^ $          文本开始至文本结束    举例:REGEXP '1000|2000' 会匹配到 h1000或sd2000之类的,但是REGEXP ^'1000|2000'$只会匹配到1000和2000两个

    否定匹配  [^ ]          ^出现在集合(指中括号)中时,用于否定集合里的表达式

计算字段

    CONCAT()  字段拼接      SELECT CONCAT('The name is '+name+'.') FROM student  

    RTRIM()   去除右边空格    SELECT RTRIM(name) FROM student      LTRIM()左边空格,TRIM()两边空格

    AS      别名        SELECT (RTRIM(name)+sex)  AS name FROM student  结合函数和列与列之间的算数运算使用

函数

    文本处理

      LEFT() / RIGHT()      文本的左/右边字符

      LENGTH()           文本长度

      LOWER() / UPPER()     转换为小/大写

    日期      日期比较时,尽量用DATE()包裹字段;目标值的链接符号虽然/和-都可以,但尽量和字段一致,使用-

      DATE() / TIME()          取出字段的年月日/时分秒

      YEAR() / MONTH() / DAY()      取出字段的年/月/日

      HOUR() / MINUTE() / SECOND()  取出字段的时/分/秒

      NOW()               现在的日期和时间

      DAYOFWEEK()           周几

汇总数据

    聚集函数        如果是select count(no) as cnt, name from student,那么虽然cnt的值是一致的,但是还是会被复制到每个行中,因为结果集被name字段“撑开”了

      AVG()    聚集结果集中某列的平均值,参数是非数字也可行,但是会返回奇怪的结果,avg()忽略null值

      COUNT()    用的太多了,“聚集”的作用都可以参考count    count()参数是列名时,会忽略列中的null值,null值不计入总数

      MAX()    聚集结果集中某列的最大值

      MIN()     聚集结果集中某列的最小值      min()会忽略null值

      SUM()    聚集结果集中某列的和,参数是非数字也可行,但是会返回奇怪的结果

分组数据

    GROUP BY    创建分组

    HAVING      过滤分组

子查询

    IN (SELECT…)      子查询作为检索条件的值(的集合)

    SELECT (SELECT…)    子查询作为检索项目的计算值      注意这里要全限定表名

理解分组

  创建分组(GROUP BY)

  简单说就是把结果集按列隐式地分组成了很多个结果集,分组是个结果集;

  既然分组是个“结果集”,那么select中的聚集函数会对每个分组分别计算,

  可以认为,分组的目的就是为了使用聚集函数

  group by可以跟任意数量的列名,代表结合多个列进行分组;

  group by后面不能跟聚集函数;

  列中的null值是一个特殊值,区别与其他的非null值;

  过滤分组(HAVING)

  跟where非常相似,where的语法having几乎全适用;

  where过滤的是整个结果集中不符合条件的每个数据,

  having过滤的是整个结果集中符合条件的每个分组

MySQL备忘点(上)的更多相关文章

  1. MySQL备忘

    Access denied for user 'root'@'localhost' >> 执行以下语句 GRANT ALL ON dbname.* TO 'root'@'localhost ...

  2. mysql -- 备忘

    select distinct(authorid),author from forum_post where tid=1;

  3. MySQL备忘点(下)

    联结表 创建联结 FROM 表1,表2 与内连接作用相同类似:如果失去WHERE子句,会出现笛卡尔积现象 内联结 INNER JOIN 高级联结 自联结 例子:SELECT 字段b FROM 表 WH ...

  4. centos 6.4 mysql rpm 离线安装【备忘】

    离线状态下使用rpm的安装包进行mysql的安装,仅作备忘 准备工作: 官网下载mysql离线rpm安装包(这里就不演示了,拿现成的做演示) =================更新线 2018-01- ...

  5. Mysql又一次整理笔记--woods备忘

    ==============================SQL备忘 CRUD 查询 多表 事件等=============================== ------------------ ...

  6. Mysql CPU使用率长期100%的解决思路备忘

    最近一台服务器的CPU使用率长期保持在100%的状态,查看进程发现是Mysql服务导致的.于是搜索各方资料,终于成功解决问题.备忘以及分享一下,希望可以帮助各位新手朋友. (服务器运行环境是Windo ...

  7. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  8. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

  9. MFC通过txt查找文件并进行复制-备忘

    MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...

随机推荐

  1. (七)freemarker的基本语法及入门基础

    一.freemarker模板文件(*.ftl)的基本组成部分 1. 文本:直接输出的内容部分        2. 注释:不会输出的内容,格式为<#--  注释内容  -->         ...

  2. WebSocket协议探究(序章)

    一 WebSocket协议基于HTTP和TCP协议 与往常一样,进入WebSocket协议学习之前,先进行WebSocket协议抓包,来一个第一印象. WebSocket能实现客户端和服务器间双向.基 ...

  3. 【SQL Server性能优化】删除大量数据的方法比较

    原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...

  4. krpano 全景学习

    krpano 切片工具下载 https://krpano.com/tools/ krpano 案例使用 https://krpano.com/examples/usage/#top krpano  是 ...

  5. ASP.NET Core 中的脚本标记帮助程序

    官网地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/tag-helpers/built-in/script-tag-helper?v ...

  6. bat实现守护程序保证平台正常运行

    1.systeminfo查看系统最近一次重启时间: 2.杀进程: :start taskkill /f /im "xx.exe" goto start "xx.exe&q ...

  7. express 和 vue-cli 的博客网站

    已经上传到github地址:https://github.com/13476075014/node-vue/tree/master/mynodeproject/15.TimeBlog # 个人博客系统 ...

  8. 简单注册表单--HTML练手项目3【Table】

    [本文为原创,转载请注明出处] 技术[HTML]   布局[Table] 步骤1  划分table布局 步骤2 填充内容 文本框+密码框+单选框+复选框+多行文本域+按钮 <input> ...

  9. 第三方应用如何在SAP Kyma上进行服务注册

    Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景: 旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博 ...

  10. Input system (输入子系统)

    Input system (输入子系统) 以前写一些输入设备(键盘,鼠标等)的驱动都是字符设备,混杂设备处理的,linux开源社区的大神门看到了这大量的输入设备如此分散不堪,就想有木有一种机制,可以对 ...