zoukankan      html  css  js  c++  java
  • MySQL Cookbook读书笔记第三章

    1,查询指定列/从指定列中查询

    image

    若需要指定每一列在查询结果中出现的先后顺序,可以在select语句中指定(dstuser在dsthost之后):

    image

    查询显示用户所关注的列:

    image

    2,指定查询行

    使用where关键字可以查询符合条件限制的数据例如:查找srchost为venus或者srchost以s开头的行记录:

    imageimage

    使用操作符like进行模式匹配,其中%表示通配符,代表一个差多为任意值的字符串。

    where使用操作符and可以查询多个条件:

    image

    条件并集:

    image

    3,格式化显示查询结果

    当查询语句中没有重命名列名,MySQL将直接使用数据库表中定义的列名作为结果中的列名。

    image

    使用运算表达式来格式化查询结果:

    image

    上例中在查询结果中定义一个新列,十分冗长。我们可以使用DATE_FORMAT得到一样的查询结果。

    image

    同样,列名很长;为给一个输出列赋予一个自己选择的名称,可以使用as name子句来指定列名(别名在where表达式中不能使用):

    image

    别名在where表达式中无法使用:

    image

    image

    4,合并多列来构建复合值

    使用concat()函数如:(将host和user组合为邮件地址)

    image

    5,调试比较表达式

    有时候使用where语句,但是不确定查询结构是否符合查询条件,例如:

    image

    我们可以使用一下语句来进行对比:

    image

    6,是查询结果唯一化

    使用关键字distinct来过滤冗余

    imageimage

    用于多列查询结果:

    image

    统计查询结果中互不相同的结果的数量,可以使用count(distinct):

    image

    7,结果集排序

    使用order by语句

    image

    以不同的列作为查询结果的排序依据,先以srchost排序然后以srcuser排序:

    image

    在order by 子句的最后,加上关键字desc表示按逆序排序:

    image

    8,使用视图来简化查询

    当查询频繁出现需要使用运算表达式才能得到期望的结果是,一般选择使用视角create view:

    image

    创建一个视图,然后在视图中进行操作可以简化操作流程,当频繁出现使用运算表达式才能得到的期望结果时,会比较简单。

    image

    9,多表查询

    多表查询通常使用联合(join)操作或者使用子查询

    通过profile_contact.sql来导入数据表:

    mysql –u burness –p cookbook < profile_contact.sql

    image

    当我们需要查询profile表中记录的每一个联系人的名字,所使用的服务以及相应的帐号,可以使用联合操作来实现这样的查询:

    image

    from子句指定了所要查询的表(这里是profile和profile_contact),on子句指定了两个表的行的绑定规则,他们按照id=profile_id的规则绑定到一行。

    列出profile_contact表中关于Mort的所有信息,首先要知道对应的在profile的Mort的id信息,可以通过子查询name列直接查询需要的结果,而不需要用户自己查询对应的profile表中的id值。(括号中的select语句就是一个子查询)

    image

    10,从查询结果集头或尾取出部分行

    只显示查询结果的部分行,通常使用limit子句并且经常要跟order by子句配合使用

    image

    找到最早出生的三个人:(使用order by 和limit)

    image

    找出日历年内最早或最迟的出生日:将birth值的月份和日期进行排序,则可将查询结果先根据生日的月和日进行排序

    image

    使用limit子句的优势在于数据库服务器只向用户返回查询结果的第一行,不会返回其他行。

    11,在结果集中间选取部分行

    同样可以通过limit子句来指定从查询结果的第几行开始,一共返回多少行:

    image

    image

    limit子句使用方法:

    image

  • 相关阅读:
    在Vue.js中使用Stylus预处理器
    前端面试问题(JavaScript)
    前端面试问题(CSS3)
    前端面试问题(HTML5+Http+web)
    VUE2中文文档:组件基础篇
    VUE2中文文档:语法基础笔记
    transition动画效果初识(实例)
    Centos5.2升级openssh7.4p1
    解决python升级导致pip无法使用
    使用jenkins时因为脚本权限问题执行项目失败
  • 原文地址:https://www.cnblogs.com/burness/p/3703421.html
Copyright © 2011-2022 走看看