数据库查询总结

      1 基础查询

       select 列名 from 表名

      2 条件查询

        运算符       select  列名 from 表名  where 条件

       =、!=、<>、<、<=、>、>=;       BETWEEN…AND;    IN(set);      IS NULL;  AND;   OR; NOT;

      3 模糊查询

       通配符   _ 任意一个字母     %:任意0~n个字   

       select  列名 from 表名  where 列名 like 条件     

       查询姓名以“z”开头的学生记录  SELECT *  FROM stu  WHERE sname LIKE 'z%';

       4 字段控制查询

      去重复 DISTINCT       如果为空 IFNULL(comm,0)  重命名 as

     查雇员的薪水 SELECT DISTINCT sal FROM emp;  雇员薪水与佣金之和     SELECT *,sal+IFNULL(comm,0) as total FROMemp;

      5 排序

      升序    ASC(默认)   降序     DESC

       按月薪降序排序,如果月薪相同时,按编号升序排序       SELECT * FROM emp  ORDER BY sal DESC,empno ASC;

     6  聚合函数  sum avg max min count

     查询最高工资和最低工资:   SELECT MAX(sal), MIN(sal) FROMemp;

     7  分组查询   GROUP BY   

      注:凡和聚合函数同时出现的列名,则一定要写在group by 之后 

              查询每个部门的部门编号以及每个部门工资大于1500的人数:  SELECT deptno,COUNT(*) from emp where sal > 1500 GROUP BY deptno;

     8 having 字     

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

         SELECT deptno, SUM(sal)  from emp group by deptno having sum(sal) > 90000from emp where sal > 1500 GROUP BY deptno

       注:having与where的区别:

              1.having是在分组后对数据进行过滤.

               where是在分组前对数据进行过滤

        2.having后面可以使用分组函数(统计函数)

         where后面不可以使用分组函数。

        WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

      9 limit 

      LIMIT用来限定查询结果的起始行,以及总行数。 

      select * from where group by having limit

     

多表查询有如下几种:

l  合并结果集;UNION 、 UNION ALL

l  连接查询

         内连接 [INNER] JOIN  ON

         外连接 OUTER JOIN ON

                    左外连接 LEFT [OUTER] JOIN

                    右外连接 RIGHT [OUTER] JOIN

                   全外连接(MySQL不支持)FULL JOIN

       自然连接 NATURAL JOIN

l 子查询

               

       合并结果集

               UNION:去除重复记录,例如:SELECT* FROM t1 UNION SELECT * FROM t2;

               UNION ALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。

               被合并的两个结果, 列数和列类型必须相同

     


       内连接

       方言  : 没有  join on      SELECT e.ename,e.sal,e.comm,d.dname FROM emp AS e,dept AS d WHERE e.deptno=d.deptno;

       标准语句 有 join on        SELECT * FROM emp e INNER  JOIN dept d ON  e.deptno=d.deptno;

       INNER可以省略,MySQL默认的连接方式就是内连接    不使用WHERE,而是使用ON

       内连接的特点:查询结果必须满足条件。

      

       外连接

       外连接的特点:查询出的结果存在不满足条件的可能。

                左外连接  SELECT * FROM emp e LEFT OUTER  JOIN dept d ON e.deptno=d.deptno;
                左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足条件的显示NULL。

      

       自然连接

      大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外键关系等式来去除它。而自然连接无需你去给出主外键等式,它会自动找到这一等式:

       SELECT * FROM emp NATURAL JOIN dept;        内连接
      SELECT * FROM emp NATURAL LEFT JOIN dept;     左连接
      SELECT * FROM emp NATURAL RIGHT JOIN dept;   右连接

       

     子查询

     一个select语句中包含另一个完整的select语句。
子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。
    子查询出现的位置:
    where后,作为条为被查询的一条件的一部分;
    from后,作表;
    当子查询出现在where后作为条件时,还可以使用如下关键字:
    any
    all
    子查询结果集的形式:
    单行单列(用于条件)
    单行多列(用于条件)
    多行单列(用于条件)
    多行多列(用于表)


SELECT* FROM emp LIMIT 3, 10;




       FROM emp  ORDER BY FROM emp  ORDER BY FROM emp  ORDER BY FROM emp  ORDER BY FROM emp  ORDER BY FROM emp  ORDER BY FROM emp  ORDER B FROM emp  ORDER BYFROM emp  ORDER BY sal

FROM emp

FROM emp

FROM empFROM empFROM emp



     

 



    





       


      

     

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值