您的位置:首页 > 数据库

数据库查询总结

2017-08-10 23:02 211 查看
      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 字段控制查询

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

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

[b]     
5 排序
[/b]

[b]      升序    [b]ASC(默认)   降序    
DESC
[/b][/b]

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

[b][b][b][b][b][b]    
6  聚合函数  sum avg max min count
[/b][/b][/b][/b][/b][/b]

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

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b] 
   7  分组查询   GROUP BY   
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

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

[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

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

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]    
8 having 字     
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

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

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

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
       注: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;

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]      
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER B
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]
FROM emp  [b][b][b][b][b]ORDER BY
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b]FROM
emp  [b][b][b][b][b]ORDER BY sal
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]FROM
emp
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]FROM
emp
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]FROM
emp
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]FROM
emp
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]FROM
emp
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]


[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b] 
   
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][/b][/b][/b][/b][/b]

 

[b][b][b][b][/b][/b][/b][/b]

[b][b][b][b][b][b]    
[/b][/b][/b][/b]
[/b][/b]


       




      



     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: