zoukankan      html  css  js  c++  java
  • mysql(四)

    联合

    一般用于将多张结构相同或相似的表进行联合查询。

    select field1,field2 from table_name1 union [all|distinct] select field1,field2 from table_name2;
    • 前后两张表要查询的字段数应该一致,对应字段的数据类型不要求一致
    • 可以在union后加关键字判断是否去除重复记录,all表示不去重,distinct表示去重。默认的是不去重
    • 判断重复仅仅是判断字面量是否一致,而不关心数据类型,比如int类型的123和字符类型的123重复

    排序

    select * from table_name order by field1 asc,field2 desc;
    • 排序用关键字order by,其后跟排序依赖的字段,可以有多个
    • 默认的是升序排列,但可以在每个字段后加关键字 asc或者desc分别声明升序或降序排列
    • gbk编码的字符直接就是拼音排序,而如果是utf8编码字符默认是按unicode排序,如果也要进行拼音排序需要借助函数转码
    order by convert(name using gbk);

    分组

    select count(*) as 个数 group by age having count(*)>10;

    1、聚合函数

    • count(*):用于统计分组内的个数,其括号内可以是*,也可以是某个字段
    • sum(字段):用于统计分组内某字段的累加值
    • avg(字段):用于统计分组内某字段的平均值
    • max(字段):用于统计分组内某字段的最大值
    • min(字段):用于统计分组内某字段的最小值

    聚合函数一般与分组搭配使用,但是其也可以单独使用,表示将整个查询结果看作一个分组。

    2、分组

    • 分组的意思是按照分组字段,表中各个行拥有相同的分组字段值的分为一组
    • 分组字段可以是多个

    3、分组筛选

    • having用于对分组后的聚合函数条件匹配

    连接

    • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
    select a.name,b.address from tb_user a inner join tb_info b on a.id=b.user_id;

    子查询

    select * from tb_user where id in (select id from tb_info where age>18);
    • 子查询会得到一个集合,如果匹配字段存在某个值在该集合中则会筛选出来

    case when

    参考

    (1)简单case函数:比如0和1对男和女的结果转换

    (2)case搜索函数:将符合case条件的转为某个数值便于统计

  • 相关阅读:
    零基础学习hadoop到上手工作线路指导(初级篇)
    手把手VirtualBox虚拟机下安装rhel6.4 linux 64位系统详细文档
    VMware虚拟机三种网络模式的区别
    python学习笔记(12)--爬虫下载煎蛋网图片
    python学习笔记(11)--爬虫下载漫画图片
    JS学习笔记(5)--一道返回整数数组的面试题(经验之谈)
    python学习笔记(10)--爬虫下载煎蛋图片
    python学习笔记(9)--Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
    python学习笔记(8)--爬虫下载占位图片
    python学习笔记(7)--爬虫隐藏代理
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/13789879.html
Copyright © 2011-2022 走看看