常用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. SQL 序列-DML-DML-数据类型-用户管理、权限-事务-视图

    --DML--insert关键字--作用:往表中插入一条(多条)记录 --元祖(tuple)值式的插入(一次插入一条记录)--语法1:insert into tablename(column1,col ...

  2. SQL语句之on子句过滤和where子句过滤区别

    1.测试数据: SQL> select * from dept;  DEPTNO DNAME          LOC ------ -------------- -------------   ...

  3. StringBuufer与StringBulder线程的区别

    StringBulder的append方法 不是synchronized修饰的   线程不安全     效率相对很快StringBuufer的append方法  是 synchronized修饰的  ...

  4. 【长文】Google面试官分步解析自己泄漏前的面试题,超多干货和建议

    本文翻译自Google工程师/面试官Alex Golec的文章:Google Interview Questions Deconstructed: The Knight's Dialer:翻译:实验楼 ...

  5. 误用WeakHashMap引起的死循环cpu跑满问题

    最近使用mvel 2.2.0.Final,出现一次cpu跑满,经过线程栈分析,发现是误用WeakHashMap引起的. 故障现场: 看WeakHashMap源码: public V get(Objec ...

  6. JavaScript监控页面input输入整数且只能输入2位小数

    <input type="text" id="money" /> <script> $(function () { $('#money' ...

  7. 文件中间修改内容遇到OSEerror

    for i in f: 实际上是一直在调用 f.next() .(表明在交互模式下不能使用f.tell())从报错来看,是说 f.next() 方法被调用的时候,f.tell() 方法不可以被调用.

  8. 详解iBaits中SqlMapClientTemplate的使用

    Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...

  9. 10#Windows注册表的那些事儿

    引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...

  10. navicat 远程访问mariadb失败,修改配置如下

    1.首先配置允许访问的用户,采用授权的方式给用户权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '121212' WITH GRAN ...