第10章 查询数据
    10.2 单表查询:

    • where子句的 查询条件P173
    • IN /NOT IN
    • BETWEEN AND
    • LIKE 字符匹配查询 LIKE‘字符串’ 通配符%(代表任意长度的字符串) _(只能是单个字符)
    • LIKE完全匹配字符串时,与=是一样的(即Like中不含通配符% 和_的情况下是一样的)
    • IS [NOT] NULL(IS不能换成=)
    • AND OR and要比or先运算
    • select distinct 属性名 消除重复的记录
    • order by 还可以多属性排序
    • 分组查询: GROUP BY 属性名 [HAVING 条件表达式] WITH ROLLUP
    • GROUP BY 常与GROUP_CONCAT或集合函数COUNT SUM AVG MAX MIN一起使用;若单独使用,只会查询出每个分组的一条记录,意义不大。
    • GROUP_CONCAT 将同一组内的指定字段显示出来 P185
    • HAVING 条件表达式
    • (注意与WHERE子句的区别,HAVING用于分组后记录,where用于对表或者视图,是表和视图的查询条件)
    • where 只能对行记录做过滤
    • having可以对查询出来的记录情况做过滤
    • WITH ROLLUP 一起使用,计算上面所有记录的总和
    • 用LIMIT 限制查询结果的数量:LIMIT 初始位置,记录数
    • MAX函数 可以计算数值、字符、字符串的最大值

    集合函数一般还是与Group by 关键字一起使用
    10.4连接查询 P195
    将两个或者是两个以上的表按某个条件连接起来查询

    • 内连接查询(使用频率高)

    INNER JOIN 与 JOIN 是相同的

    • 外连接查询

    左连接
    右连接
    不同的 SQL JOIN
    在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:

    • INNER JOIN:如果表中有至少一个匹配,则返回行 这个是最简单的Join,也是常见的Join类型
    • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
    • FULL JOIN:只要其中一个表中存在匹配,则返回行

    10.5 子查询P199,将一个查询语句嵌套在另一个查询语句中

    • 带IN关键字的子查询
    • 带比较运算符的子查询 <>和!=是等价的
    • 带EXITS的子查询 P203 EXITS NOT EXITS (子查询返回true或者是false)
    • 带ANY关键字的子查询
    • 带ALL关键字的子查询

    10.6 合并查询结果P207

    • UNION 会去除重复部分
    • UNION ALL 简单的合并在一起

    10.7为表和字段取别名
    为表取别名:为了方便 FROM后定义
    为字段取表名:显示查询结果时,替代字段原有的名字,更直观 FROM前定义
    10.8 用正则表达式查询
    正则表达式:用某种模式去匹配一类字符串的方式
    属性名 REGEXP ‘匹配方式’
    REGEXP s1|s2|s3 匹配这三者中的任意一个字符
    REGEXP ‘ucla|ucb|uiuc’

    • 代表多个该符号以前的字符 包括1个和1个以上
        • 代表多个该符号以前的字符 包括0个和0个以上
      • . 代替字符串中任意一个字符

    Mysql中通配符和正则表达式的区别?
    1都是用来进行字符串匹配的,都可以进行模糊查询
    2通配符:配合LIKE 使用
    3配合REGEXP使用
    第11章 插入、更新与删除数据
    第12章 MYSQL运算符
    第13章 MYSQL函数
    13.5条件判断函数P294
    IF(expr,v1,v2)
    IFNULL(v1,v2)
    CASE函数
    第14章 存储过程和函数
    在服务器端存储和执行,可以减少客户端与服务端的数据传输
    14.1 创建存储过程和函数
    1创建存储过程 P311
    2创建存储函数
    存储过程不好调试,不好维护,没有特殊需求尽量不要也没必要使用存储过程,如果你非要装逼,那我也拦不住你
    阿里是禁用存储过程的。原因是难以扩展,调试,没有移植性以及可读性差