今日学习笔记


    模糊查询
    sql中用于模糊查询的关键字有:

    LIKE 模糊匹配 %任意0个或多个字符; _任意1个字符;无法匹配null
    BETWEEN a AND b 匹配a-b范围内的内容 包括a和b临界
    IN(list) 匹配list中的内容
    IS NULL / IS NOT NULL 判断是否为null 建议使用这个而非<=>
    #查询last_name第二个字符是a的员工
    SELECT FROM employees WHERE last_name LIKE ‘_a%’;
    #查询工资在10000到20000的员工信息,包括10000和20000
    SELECT
    FROM employees WHERE salary BETWEEN 10000 AND 20000;
    #查询职位为D_VP和FI_MGR的员工信息
    SELECT FROM employees WHERE job_id IN (‘D_VP’,’FI_MGR’);
    #查询没有奖金的员工信息
    SELECT
    FROM employees WHERE commission_pct IS NULL;

    分组查询(GROUP BY)
    SELECT 查询内容 FROM 表名 [WHERE 条件] GROUP BY 分组列表 [HAVING 条件]

    查询内容中的字段,必须要出现在分组列表中
    WHERE是在分组前对原始表筛选,HAVING是在分组后对结果表筛选
    分组查询中,若用分组函数做筛选的条件,一定是在HAVING子句中
    按单字段分组
    #查询每个部门的员工数量
    SELECT department_id,COUNT(1)
    FROM employees
    GROUP BY department_id ;

    按多字段分组
    #查询每个部门,每个职务的平均工资
    SELECT AVG(salary),department_id,job_id
    FROM employees
    GROUP BY department_id,job_id;

    按函数分组
    #按名字长度分组,并筛选出数量大于5的名字长度
    SELECT COUNT(1) c,LENGTH(last_name) len_name
    FROM employees
    GROUP BY len_name
    HAVING c>5;