• 查询


    不等于: !=或者<>

    避免重复数据查询

      SELECT DISTINCT * FROM 表

    设置显示格式数据查询:

      SELECT CONCAT(ename,'雇员的年薪为:',sal*12) year

      year

      SMITH雇员的年薪为: 9600

    (NOT) BETWEEN AND

      SELECT ename FROM t_employee WHERE sal (NOT) BETWEEN 100 AND 200

    IS (NOT) NULL

      SELECT ename FROM t_employee WHERE sal IS (NOT) NULL

    (NOT) IN(集合查询)

       SELECT ename FROM t_employee WHERE sal (NOT) IN (value1,value2,value3)

      IN时,集合有NULL不影响查询

      NOT IN时,集合有NULL则不会查询出任何结果

    (NOT)LIKE(模糊查询)_匹配单个字符,%匹配0个或者更多字符

      SELECT ename FROM t_employee WHERE ename LIKE value|'A_'|'a%'

    ORDER BY

      SELECT * FROM t_employee ORDER BY sal (ASC|DESC), ename ASC|DESC 

    LIMIT 限制查询结果数量

      SELECT * FROM t_employee LIMIT (OFFSET_START),ROW COUNT  指定初始位置和数量

    统计函数:COUNT(),AVG(),SUM(),MAX(),MIN()

      SELECT function(xxx) FROM t_name WHERE CONDITION

      表中没有任何记录,COUNT返回0,其他返回NULL

    分组统计

      SELECT function(xxx) FROM t_name WHERE CONDITION GROUP BY ename  1对多,通过1查出多

    GROUP_CONCAT

      SELECT GROUP_CONCAT(field) FROM t_name WHERE CONDITION GROUP BY field

      SELECT d_no GROUP_CONCAT(ename) names FROM t_name GROUP BY d_no

      d_no  names

      10  A,B,C,D

    多个字段分组查询

      SELECT dno,time,GROUP_CONCAT(ename) names, COUNT(ename) FROM t_name GROUP BY dno,time

    HAVING限定分组查询

      WHERE用来实现条件限制数据,不能对分组进行条件限制,应该使用HAVING

      SELECT function(xxx) FROM t_name WHERE CONDITION GROUP BY field1,field2 HAVING CONDITION

      SELECTdno,AVG(sal) FROM t_name WHERE CONDITION GROUP BY field1,field2 HAVING AVG(sal)>2000

    多表查询

    Union:把具有相同字段数目和字段类型的表合并到一起

      SELECT ... FROM...UNION SELECT ... FROM...

      UNION ALL:不去重复,即将两个结果全部显示

    笛卡尔积:没有连接条件的表关系,两个表每行都互相连接一次

    内连接:表关系的笛卡尔积的数据记录中,按相应字段值的比较条件进行选择生成一个新的关系

      自然连接:表关系的笛卡尔积中,首先根据表关系中相同名称的字段自动进行记录匹配,然后去掉重复的字段,只保留一个

      等值连接:根据笛卡尔积,重复列字段保留,且数据记录保留重复字段相等的行

      不等连接:类似上面,保留不等的行

    外连接:在表关系的笛卡尔积中,不仅保留表关系中所有匹配的数据记录,还会保留部分不匹配的数据记录   OUTER JOIN...ON

      左外连接:等值连接+按左表匹配,右表没有的置NULL,即除了选择相匹配的数据记录,还包含关联左表中不匹配的数据记录,同行右表置NULL

        SELECT e.no, d.name FROM t_e e LEFT JOIN t_d d ON e.no = d.no

      右外连接:等值连接+按右表匹配,左表没有的置NULL,即除了选择相匹配的数据记录,还包含关联右表中不匹配的数据记录,同行左表置NULL

        SELECT e.no, d.name FROM t_e e RIGHT JOIN t_d d ON e.no = d.no

      全外连接:除了选择相匹配的数据记录,还包含关联左表和右表中不匹配的数据记录,同行没有的置NULL

        SELECT e.no, d.name FROM t_e e FULL JOIN t_d d ON e.no = d.no

    内连接:可以用SELECT FROM WHERE实现同样要求

      自连接:表与自身进行连接

      等值连接:SELECT e.no, d.name FROM t_e e INNER JOIN t_d d ON e.no = d.no

      不等值连接:SELECT e.no, d.name FROM t_e e INNER JOIN t_d d ON e.no >|<|<=|>=|!= d.no

     连接查询性能很惨,所以尽量使用子查询,即嵌套查询,SELECT嵌套

  • 相关阅读:
    elinput校验利率输入框
    Schema 和 Universal Link
    Oracle数据库恢复删除数据的方法
    element ui 获取table行索引
    愿有人陪你颠沛流离
    古诗词中爱情的模样
    在细雨中呐喊
    麦田里的守望者
    我打碎了夕阳
    工作笔记
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/7429953.html
Copyright © 2020-2023  润新知