基础课-数据库4

c. 分组语句

    1)group by 列名(进行分组时用)

  查询语句中使用group by,意味着在select中必须出现分组聚合函数对某列数据进行统计

  查询中当出现每种、每个和每类,最高、最低、和、平均等字眼,就使用group by 列名语句

格式:select 列名

           from 表名

           group by 列名    

    2)order by 列名(进行排序时用)

查询语句中使用order by,意味着在select中出现需要排序

asc代表升序,默认可不写,desc代表降序

格式:select 列名

           from 表名

           order by 列名

    3)limit a,b

a:限定的起始行;0代表第一行,1代表第二行,4代表第五行以此类推

b:代表限定的行数数量;5代表从从起始行往后数5行

格式:select 列名

           from 表名

            limit a,b

    LIMIT的意义:

①实现分页查询(0代表第一行),起始行数=(当前页数-1)*每页的数据行数

例如:SELECT *

           From emp

           LIMIT 0,5;

 ②实现TOPN查询;先排序再进行限定

 例如:查询入职日期最早的三名员工的名字和入职日期

            SELECT *

            From emp

            ORDER BY  hiredate ASC

            LIMIT 0,3;

查询公司工资前五名的人名
            SELECT ename,sal
            FROM emp
            ORDER BY sal DESC
            LIMIT 0,5;

7.查询语句书写顺序及执行顺序

书写顺序:

1. select

2. from

3. where

4. group by

5. order by

6. limit

执行循序:

1. from 确定数据表

2. where 筛选行

3. group by 分组

4. select 确定列

5. order by 排序

6. limit  限定行

执行顺序就是编写复杂查询语句的思路

8.子查询

一个独立的查询语句作为另外一个查询语句中的一部分存在

语法上子查询需要被一对小括号括起来

主查询

运行时子查询先于主查询运行

例如:查询工资比姜旭工资高的员工姓名,职位,工资
             SELECT ename,job,sal
             FROM emp
             WHERE sal>(SELECT sal FROM emp WHERE ename='姜旭');

查询工资最低的员工姓名
             SELECT ename
             FROM emp
             WHERE sal=(SELECT min(sal) FROM emp );

查询入职日期比何福瑞晚并且和王硕同一部门的员工姓名,入职日期,部门编号
             SELECT ename,hiredate,deptno
             FROM emp
             WHERE hiredate>(SELECT hiredate FROM emp WHERE ename='何福瑞')
             AND deptno=(SELECT deptno FROM emp WHERE ename='王硕');

 

posted @ 2023-11-02 15:28  HeFury  阅读(23)  评论(0)    收藏  举报