常用sql语句总结(一)(查询)
数据操作语句:DML
数据定义语句:DDL
数据控制语句:DCL

(执行顺序------序号)
一、基本查询:
1、
SELECT * ----- 2
FROM 数据来源,… ----- 1; ---数据来源可以是多个表或者其他范围
或者
SELECT 字段,字段… -----可以列出想要查询的字段名
FROM 数据来源,……;

2、去重复查询(DISTINCT):
SELECT DISTINCT 字段,字段….. FROM 数据来源,…;

3、查询取别名:
SELECT 字段 AS 别名,字段 AS 别名… -----可以列出查询的字段名
FROM 数据来源,…;

二、限定查询:
4、

SELECT *  ------- 3
FROM数据来源,… -------1
WHERE 过滤条件;-------2

(1)SELECT * FROM emp WHERE sal>=1500 AND sal<=1000’;
(2)SELECT * FROM emp WHERE sal BETWEEN 1000 AND 1500;
使用BETWEEN AND 时,数字小的在数字大的前面;
使用(2)只需要执行一次判断,而(1)需要进行两次判断。

5、联合查询
SELECT * FROM emp WHERE job=’CLERK’ UNION ALL SELECT * FROM dept WHERE sal>3000;
使用UNION ALL可以把两个查询结果合并显示,但是有可能出现重复,一般用于或者(OR)并集关系,一般用于替换OR的使用,这样有利于SQL的优化,避免了索引失效而使用了全局扫描,影响性能

6、判空查询
SELECT * FROM emp WHERE comm IS NOT NULL;
SELECT * FROM emp WHERE comm IS NULL;

7、IN查询
SELECT * FROM emp WHERE empno IN(1000,1001,1002);
SELELCT * FROM emp WHERE empno NOT IN(1000,1001,1002);

三、模糊查询
8、
SELECT *--------3
FROM 数据来源---------1
WHERE 模糊查询字段 LIKE 模糊查询关键字;-------2 -----( _:表示一位字符,%:表示任意位数上的任意字符)
SELELCT * FROM emp WHERE ename LIKE ‘%A%’;

四、排序查询
SELECT *-------3
FROM 数据来源---------1
WHERE 过滤条件---------2
ORDER BY 排序字段;---------4 升序ASC|降序DESC

SELECT empno AS id FROM emp WHERE WHERE sal>100 ORDER BY id DESC;

五、多表查询(连接查询)
内连接(一定要满足条件才能显示):
(1)SELECT no,字段…---------3
FROM 数据来源A,数据来源B-----------1
WHERE A.no = B.no;---------2
消除笛卡儿积
SELECT empno,ename,deptno,dname FROM emp e,dept d WHERE e.deptno = d.deptno;

(2)SELECT no,字段….
FROM 数据来源a INNER JOIN 数据来源 b ON a.no = b.no;

SELECT empno,ename,deptno,dname FROM emp e INNER JOIN dept d ON e.deptno = d.deptno;

外连接:
左外连接:可以让左表不满足过滤条件的也显示
右外连接:可以让右表不满足过滤条件的也显示
全外连接:可以让左右表不满足过滤条件的都显示

使用(+)的方式是ORACLE特有的,mysql没有这种方式;
使用左外连接(+)在右边,右外连接(+)在左边;

左外连接:
(1)SELECT * FROM emp e,dept d WHERE e.deptno = d.deptno(+);---ORACLE特有
(2)SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno = d.deptno;-----ORACLE和MYSQL通用

右外连接:
(1)SELECT * FROM emp e,dept d WHERE e.deptno(+) = d.deptno;
(2)SELECT * FROM emp e RIGHT OUTER JOIN dept d ON e.deptno = d.deptno;

全外连接:
SELECT * FROM emp e FULL OUTER JOIN dept d ON e.deptno = d.deptno;

六、常用函数
COUNT(*|字段);统计查询到的数量
SUM(字段);计算该字段的数据之和
AVG(字段);计算该字段的平均数
MAX(字段);计算出该字段数据中最大的
MIN();计算出该字段数据中最小的
SYSDATE;ORACLE中当前时间
NOW();MYSQL中当前时间
不能在WHERE子语句中使用统计函数

七、分组统计查询
SELECT 字段,字段,分组字段,…..---------4
FROM 数据来源a,数据来源b….--------1
WHERE 过滤条件----------2
GROUP BY 分组字段--------3
ORDER BY 排序字段 ASC|DESC---------5
如果需要分组,那么必须把分组字段给查询出来

八、HAVING过滤查询
不能在WHERE子语句中使用统计函数,如果需要在过滤条件中使用统计函数,那么可以使用HAVING;
SELECT 字段,分组字段,….--------5
FROM 数据来源a,数据来源b….. ------------1
WHERE 过滤条件-----------2
GROUP BY 分组字段-----------3
HAVING 对统计函数进行判断----------4
ORDER BY 排序字段 ASC|DESC;-------6
SELELCT empno,ename,job,SUM(sal) FROM emp WHERE job<>’班长’
GROUP BY job HAVING SUM(sal)>500 ORDER BY empno;

WHERE子句和HAVING子句的区别:
1、 执行顺序不同,WHERE子句进行过滤是在GROUP BY前执行的,HAVING子句进行过滤是在GROUP BY后执行的
2、 WHERE不能对统计函数进行过滤操作,而HAVING能对统计函数进行统计

九、FROM子查询
SELECT job,avgsql FROM (SELECT job,AVG(sal) AS avgsal FROM emp GROUP BY job)temp WHERE temp.avgsql > 2000;
十、EXISTS子查询
例如:查询出有关部门的雇员
SELECT * FROM emp e EXISTS ( SELECT * FROM dept d WHERE e.deptno = d.deptno );

例如:查询出没有部门的雇员

SELECT * FROM emp e NOT EXISTS( SELECT * FROM dept d WHERE e.deptno = d.deptno );

十一、分页查询
分页查询需要用到伪列ROWNUM(行号),ROWNUM是在查询过程中动态生成的一个列,该列必须从1开始,它不能直接存值到数据表,很一个字段,但不是一个数据表的字段。
ORACLE分页:
cp//当前页数
ls//每页有多少条数据

M=(cp-1)ls+1;//到M条数据结束查询
N=cp
ls;//从N条数据开始查询

SELECT * FROM (SELECT ROWNUM rn,* FROM emp WHERE rn<=M )temp WHERE temp.rn>=N;

Mysql分页:
Cp:当前页数
Ls:每页几条数据

M=(cp-1)*ls//到M条数据结束查询
N=ls//从N条数据开始查询

SELECT 字段,分组字段,…. --------5
FROM 数据来源a,数据来源b…..  ------------1
WHERE 过滤条件   -----------2
GROUP BY 分组字段  -----------3
HAVING 对统计函数进行判断 ----------4
ORDER BY 排序字段 ASC|DESC; -------6
LIMIT M,N;

常用sql语句总结(一)(查询)的更多相关文章

  1. mysql 常用 sql 语句 - 快速查询

    Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互         1.1.1 mysql 连接             mysql.exe -hPup    ...

  2. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  3. Mysql常用sql语句(九)- like 模糊查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  4. ysql常用sql语句(12)- group by 分组查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. Mysql常用sql语句(14)- 多表查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  6. Mysql常用sql语句(19)- in / exists 子查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 子查询在我们查询方法中是比较常用的,通过子查询可 ...

  7. Mysql常用sql语句(20)- 子查询重点知识

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 子查询语句可以嵌套在 sql 语句中任何表达式出现的位 ...

  8. Mysql常用sql语句(21)- regexp 正则表达式查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...

  9. Mysql常用sql语句(3)- select 查询语句基础使用

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫 ...

随机推荐

  1. io 口方向调整 stm32

    zonggo//IO方向设置 CRL为0-7 CRH为 8-15 总共四个寄存器位置有效#define DS18B20_IO_IN() {GPIOB->CRH&=0X0FFFFFFF;G ...

  2. JAVA生成(可执行)Jar包的全面详解说明 [打包][SpringBoot][Eclipse][IDEA][Maven][Gradle][分离][可执行]

    辛苦所得,转载还请注明: https://www.cnblogs.com/applerosa/p/9739007.html  得空整理了关于java 开发中,所有打包方式的 一个操作方法, 有基于ID ...

  3. 栈->栈的基本定义

    定义: 栈是限定仅在表尾进行插入或删除操作的线性表.因此,对栈来说,表尾端有特殊含义,称为栈顶,相应地,表头端称为栈底.不含元素的空表成为空栈. 示意图: 顺序栈的表示和实现 可以在初始化时分配一块连 ...

  4. python之for循环

    for循环,也称定循环,即一般用于循环次数确定的循环,通常可用于遍历序列,如字符串str,列表list,元组tuple等 格式: for 变量 in 序列: command1 command2 ... ...

  5. 3.2.1 SpringMVC入门

    一. SpringMVC入门 1. MVC介绍 MVC全名 是Model View Controller, 是模型(model) - 视图(view) - 控制器(controller) 的缩写, 它 ...

  6. 2018-2019-2 网络对抗技术 20165321 Exp3 免杀原理与实践

    1. 实践内容(4分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellco ...

  7. (转载)js日期格式化转化

    原文地址:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html // 对Date的扩展,将 Date 转化为指定格式 ...

  8. chrome浏览器多开的方法

    Chrome浏览器在上网的过程中,会保存一些用户数据,如缓存.cookie.收藏的网页等信息. 这些信息的保存位置是可以设置的.方法也很简单: 桌面上复制一个Chrome的快捷方式,编辑属性,添加-- ...

  9. 正则表达式-----re库

    1.正则表达式的概念 a.为什么要用正则? 用字符串匹配也是可以的: startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False.如果参数 be ...

  10. git本地分支与远程分支

    github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 在本地 ...