zoukankan      html  css  js  c++  java
  • MySQL查询

    MySQL查询

    查询语法及顺序

    select 查询列表    ⑦
    from 表1 别名       ①
    连接类型 join 表2   ②
    on 连接条件         ③
    where 筛选          ④
    group by 分组列表   ⑤
    having 筛选         ⑥
    order by排序列表    ⑧
    limit 起始条目索引,条目数;  ⑨
    

    关键字顺序:

    1. select -->显示列
    2. from --> 查询的表
    3. <left, right> join .... on .... --> 左外右外链接
    4. where --> 查询条件
    5. group by --> 分组查询
    6. having --> 筛选
    7. order by --> 排序(asc desc)
    8. limit --> 分页查询

    基础查询

    查询表中所有数据

    select * from 表名;
    

    显示指定列

    select 列名1, 列名2... from 表名;
    

    去重查询

    distinct 关键字, 下面查询是对列名1进行去重

    select distinct 列名1,列名2 from 表明;
    

    条件查询(where)

    操作符 描述
    = 等于
    <> 和 != 不等于
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    between... and ... 在某个范围之间
    like 模糊查询(%代表任意数量字符, _代表一个字符)
    and
    or

    查询范围(between)

    between x and y 在x和y之间 包括x和y

    查询id在5~9之间的内容

    select * from 表 where id between 5 and 9;
    

    模糊查询(like)

    查询第二个字是 '雷' 的name;

    select * fron 表 where name like '_雷%';
    

    查询包含 '雷' 字的name;

    select * from 表 where name like '%雷%';
    

    null处理 ifnull()函数

    ifnull(列, 替换值) : 如果指定的列为null, 则使用替换值

    多表查询(... join... on...)

    等值连接

    select * from A,B 
    where A.x=B.x and A.age=18
    

    内连接 用的更多

    select * from A join B 
    on A.x=B.x
    where A.age=18;
    

    左外查询 (常用)

    left join 表 on 表关系

    格式:

    select * from 表1 left join 表2 on 表1和表2的关系
    

    左外查询案例:

    select * from dept left join emp 
    on emp.dept_id=dept.id; -- 左外连接查询
    

    右外查询

    right join 表 on 表关系

    格式和案例和左外连接基本类似

    左外查询的时候, from后面的表是主表, 数据会完全展示, join后面的表只有和主表有关系的才会展示, 右外查询反之.

    多行查询

    注意:

    • 多行函数和是否分组有关,如果查询结果中的数据没有经过分组,默认整个查询结果是一个组,多行函数就会默认统计当前这一个组的数据。产生的结果只有一个。
    • 如果查询结果中的数据经过分组(分的组不止一个),多行函数会根据分的组进行统计,有多少个组,就会统计出多少个结果。

    多行函数:

    多行函数 说明
    count(列名 | *) 统计结果集中指定列的记录的行数
    max(列名) 统计结果集中某一列值中的最大值
    min(列名) 统计结果集中某一列值中的最小值
    sum(列名) 统计结果集中某一列所有值的和
    avg(列名) 统计结果集中某一列值的平均值

    统计表中总条数

    select count(*) from 表;
    

    统计某一列最大值

    select max(类名) from 表;
    

    统计某一列平均值

    select avg(列名) from 表;
    

    分组查询(group by)

    统计各个部门人数

    select 部门列, count(*) from 表 group by 部门列;
    

    显示各个部门的最高薪资

    select 部门列, max(薪资列) from 表 group by 部门列;
    

    筛选(having)

    having一定要和group by一起使用, 用于筛选

    having可以使用多行函数

    例如: 查询每个分类商品所对应的平均单价,要求平均单价低于100

    select 
    	category_id,
    	avg(price) as p 
    from t_item 
    group by category_id having p<100;
    

    排序查询(order by)

    升序(asc), 降序(desc) 默认升序;

    升序查询示例

    按薪资升序查询

    select 名字, 薪资 from 表 order by 薪资 asc;
    -- 或者可以省略asc, 因为默认为升序asc
    select 名字, 薪资 from 表 order by 薪资;
    

    分页查询(limit)

    格式: limit m, n

    • m是从第几条数据开始(最小为0), (页码-1)*每页记录数

    • n为这一页显示的数据总量, 每页记录数

    分页显示示例

    每页显示3条记录,返回第 2 页。

    select * from 表 limit 3, 3;
    /*
    	每页3个数据, 所以limit第二个参数是3
    	第一页是 0, 1, 2
    	第二页是 3, 4, 5
    	因为要查询第二页, 所以应该从3开始, 所以第二个下标为3
    */
    

    子查询

    子查询, 可以把一个 查询语句的结果当作一个值, 让其他语句使用.

    例如:

    查询emp表中工资最高的员工信息

    select max(sal) from emp; -- 得到5000
    select * from emp where sal=5000; -- 根据5000找到对象的员工
    

    将以上两条合并成一条sql语句

    select * from emp where sal=(
        select max(sal) from emp
    );
    

    合并查询

    关键字: union

    用来把两个查询语句的结果合并为一个结果, 例如

    select 列a, 列b from 表1
    union
    select 列c, 列d from 表2;
    

    结果是两条查询语句合并的结果, 结果会默认去重,

    而且查询的时候两条查询语句的列数要一样才可以

    别名 (as)

    关键字: as (可省略)

    一旦使用了别名, 后续在语句中使用的时候必须要使用别名

    例如:

    select
    	e.name as name,
    	d.name as dept
    from 
    	emp e, 
    	dept d
    where
    	e.dept_id = d.id;
    
  • 相关阅读:
    RN常用布局和CSS
    RN常用组件
    海屯天地技术服务支持
    微前端应用解决方案
    React组件复用方式
    Webpack-CodeSplit(按需加载)
    Webpack-CodeSplit(静态文件篇)
    Webpack抽离第三方类库以及common解决方案
    Javascript十六种常用设计模式
    React hooks详解
  • 原文地址:https://www.cnblogs.com/zpKang/p/12997432.html
Copyright © 2011-2022 走看看