zoukankan      html  css  js  c++  java
  • DQL


    查询:

    SELECT selection_list /*要查询的列名称*/

    FROM table_list /*要查询的表名称*/

    WHERE condition /*行条件*/

    GROUP BY grouping_columns /*对结果分组*/

    HAVING condition /*分组后的行条件*/

    ORDER BY sorting_columns /*对结果排序*/

    LIMIT offset_start, row_count /*结果限定*/


    基础查询

    * 查询所有的列: select * from 表名 ;

    * 查询指定的列: select 列名1 , 列名2 , ... from 表名 ;


    条件查询

    =、!=、<>、<、<=、>、>=;

    BETWEEN…AND;

    IN(set);

    IS NULL; 空不能使用 = 或者 != 进行判断. 需要使用is null 或者 is not null ;

    AND;

    OR;

    NOT;


    模糊查询

    A: 模糊查询: select 列名1 , 列名2 , ... from 表名 where 字段名 like '值' ;

    通配符:

    * _ 匹配任意单个字符

    * % 匹配任意多个字符

    B: 字段控制查

    * 去除重复: SELECT DISTINCT sal FROM emp;

    * 字段运算: null 参与的运算结果都是null ; 如果是null我们就认为是0: IFNULL(字段名称 , 要取的值)

    * 别名: 使用 AS 关键字


    排序 查询

    A: 排序: order by 字段名 ; 后面可以跟多个排序字段,多个排序字段用”,”隔开

    SELECT * FROM stu ORDER BY; 默认是升序

    B: 升序: order by 字段名 asc ;

    SELECT * FROM stu ORDER BY SUM ASC;

    C: 降序: order by 字段名 desc ;

    SELECT * FROM stu ORDER BY SUM ASC;


    聚合函数和分组

    A: 聚合函数: 用来做纵向运算的函数

    COUNT():统计指定列不为NULL的记录行数;

    MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

    MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

    SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

    AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

    B: 分组查询: group by 分组字段 ;

    * 注意事项: 在分组以后 , 查询的字段只能是分组字段或者聚合函数

    * Where在分组之前,having在分组之后

    * 在分组之前对结果进行限定,使用where子句

    * 在分组之后对结果进行限定,使用having子句

    * 需求: 查询每一个部门的工资总和

    Select deptno,sum(sal) from emp group by deptno;

    * 需求: 查询每个部门的部门编号以及每个部门的人数

    Select deptno,count(1) from emp group by deptno;

    * 需求: 查询每个部门的部门编号以及每个部门工资大于1500的人数

    Select deptno, count(1) from emp where sal>1500 group by deptno;

    * 需求: 查询工资总和大于9000的部门编号以及工资和

    Select deptno, count(1) from emp group by deptno having sum(sal)>9000;

    C: 分页: limit 开始的记录角标 , 每一页的条数 ;

    Select * from emp limit 0 , 5 ;

    公式: 开始的记录角标 = (页码 - 1) * 每一页的条数


    select empno , ename , job from emp ;


    select * from emp where ename = 'smith';

    SELECT * FROM emp WHERE ename != 'smith';

    SELECT * FROM emp WHERE ename <> 'smith';

    SELECT * FROM emp WHERE sal >= 1100 ;

    SELECT * FROM emp WHERE sal >= 1250 AND comm > 400 ;

    SELECT * FROM emp WHERE sal >= 1250 OR comm > 400 ;

    SELECT * FROM emp WHERE comm IS NULL ;

    SELECT * FROM emp WHERE comm IS NOT NULL ;


    查询emp表中empno是7369 或者 7499 或者 7521的员工信息

    SELECT * FROM emp WHERE empno = 7369 OR empno = 7499 OR empno = 7521 ;

    SELECT * FROM emp WHERE empno IN (7369 , 7499 , 7521) ;

    SELECT * FROM emp WHERE empno NOT IN (7369 , 7499 , 7521) ;

    SELECT * FROM emp WHERE empno BETWEEN 7782 AND 7902 ;

    SELECT * FROM emp WHERE ename LIKE '%M%';


    _: 表示匹配任意单个字符


    %: 表示匹配任意多个字符


    查询ename由4个字母组成的员工的数据

    SELECT * FROM emp WHERE ename LIKE '____' ;


    查询ename由M开始的员工的数据

    SELECT * FROM emp WHERE ename LIKE 'M%' ;

    SELECT DISTINCT sal FROM emp ;

    SELECT * FROM emp ;


    null在参与运算的时候结果都是null


    ifnull(字段名称 , 值)

    SELECT * , sal + comm FROM emp ;

    SELECT * , sal + IFNULL(comm , 0) FROM emp ;


    as 关键字用来起别名

    SELECT * , sal + IFNULL(comm , 0) AS income FROM emp ;

  • 相关阅读:
    SQLSERVER 数据连接字符串
    c#中 间隔两个小时执行一次
    移动开发者的自学宝典:十大在线编程学习网站
    C#j将DataTable转换成List
    C#将list转换为datatable
    SQL Server 高性能写入 摘抄
    解决控制面板删除不了的程序卸载
    卸载SQL 2008 R2 出现警告26003
    删除重复数据
    大数据量数据优化
  • 原文地址:https://www.cnblogs.com/loaderman/p/6415257.html
Copyright © 2011-2022 走看看