zoukankan      html  css  js  c++  java
  • 数据库之表查询

    一.查询语句模板

    SELECT [ALL|DISTINCT] <字段1>/<表达式>,<字段2>
                                         [AS] <新字段名>
    FROM <表名> [AS] <别名>/子查询语句 [AS] <别名>
    [ WHERE <条件> ]
    [ GROUP BY <字段> [ HAVING <条件> ] ]
    [ ORDER BY <字段> [ ASC|DESC ] ];        
    View Code

    ALL 与 DISTINCT

    distinct去除重复的数据
    默认为all不去重
    View Code

    AS 别名

    AS 别名
    View Code

    表达式

    字段类型是数字类型的字段可以进行加减乘除四则运算
    View Code

    二.条件查询

    比较谓词
    =, >, <, >=, <=, !=, <>, !>, !<; 
    字段 = 值;
    notnot 字段 = 值
    范围谓词
    BETWEEN AND, NOT BETWEEN AND 
    字段 (not) between 值1 and 值2
    集合谓词
    IN, NOT IN 
    字段 (notin (值1,值2,值3)
    字符匹配
    LIKE, NOT LIKE
    %:匹配多个任意字符
    _:匹配一个任意字符
    字段 (not) like “字符串”
    空值谓词
    IS NULL, IS NOT NULL 
    逻辑谓词
    AND, OR, NOT
    条件1 and 条件2
    regexp正则
    用于条件判断,进行字符串匹配
    示例:字段 regexp '正则表达式'
    #select * from emp where name regexp '^j.*(n|y)$';
    View Code

    用于条件筛选

    三.分组查询

     GROUP BY 与 聚合函数

    • GROUP BY 对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常配合聚合函数使用
    • GROUP BY 分组之后进行条件判断只能使用HAVING
    • 聚集函数
      • max min avg sum count
        • 示例:max (字段)

    HAVING短语

    • 输出满足指定条件的组
    • 示例 having 条件

    ps:HAVING语句一般配合作用于分组函数之后

    四.ORDER BY  排序CONCAT与limit

    ORDER BY 排序

    对查询结果表按指定列值的升序(asc)或降序(desc)排序,默认升序(sc)
    示例:order by 字段 desc
    View Code

    CONCAT与GROUP_CONCAT

    concat在未使用group by 的情况下来进行数据拼接
    示例:select concat(字段1,’字符串‘,’字段2‘)
    concat在使用group by 后来进行数据拼接
    效果与concat相同
    View Code

    limit

    用于限制条数,写在语句最后。
    limit只有一个参数时,参数表示展示的条数
    limit有两个参数时候,第一个参数表示起始位置,第二个参数表示起始位置之后的展示条数
    select * from emp limit 5,5;
    View Code

    五.多表查询

    • 表查询分类
      • 联表查询
      • 子查询
    • 内连接(inner join)
      • 取两张表有对应关系的记录
      • select 表1 inner join 表2 on 表1.字段=表2.字段
    • 左连接(left join)
      • 在内连接的基础上保留左表没有对应关系的记录
      • select 表1 left join 表2 on 表1.字段=表2.字段
    • 右连接(right join)
      • 在内连接的基础上,保留右表没有对应关系的记录
      • select 表1 right join 表2 on 表1.字段=表2.字段
    • 全连接(union)
      • 在内连接的基础上保留左、右面表没有对应关系的的记录(就是左连接加右连接去除重复记录)
      • select 表1 left join 表2 on 表1.字段1=表2.字段1 union select 表1 right join 表2 on 表1.字段=表2.字段
    • 子查询
      • 将一张表的查询结果作为另外一个sql语句的查询条件

    六.严格模式

    使用情况:Mysql使用分组后获取其他字段信息不报错

    设置方式

    • show variables like '%mode%'; #模糊匹配 查看sql_mode的值
    • set session  当前窗口有效
    • set global  全局有效
    • set global sql_mode="strict_trans_tables,only_full_group_by";#修改为严格模式
  • 相关阅读:
    内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)
    又能扯皮了!没内存了还能看片?
    写给大忙人看的进程和线程
    Python面试常用的高级用法,怎么动态创建类?
    LeetCode 74,直击BAT经典面试题
    LeetCode 73,为什么第一反应想到的解法很有可能是个坑?
    Golang基础教程——map使用篇
    手把手教你学numpy,从此数据处理不再慌【三】
    从辗转相除法到求逆元,数论算法初体验
    深入了解机器学习决策树模型——C4.5算法
  • 原文地址:https://www.cnblogs.com/Cpsyche/p/11390741.html
Copyright © 2011-2022 走看看