Oracle学习笔记(二):基本SELECT语句
来源:互联网 发布:网络中级工程师报名费 编辑:程序博客网 时间:2024/06/10 18:46
1,FROM字句(这是最简单的)
SQL> SELECT e.empno "雇员编号", e.ename "雇员名称" , e.hiredate "受雇日期", e.deptno "部门编号" 2 FROM emp e ; 雇员编号 雇员名称 受雇日期 部门编号---------- ---------- -------------- ---------- 7369 SMITH 17-12月-80 20 7499 ALLEN 20-2月 -81 30 7521 WARD 22-2月 -81 30 7566 JONES 02-4月 -81 20 7654 MARTIN 28-9月 -81 30 7698 BLAKE 01-5月 -81 30 7782 CLARK 09-6月 -81 10 7788 SCOTT 19-4月 -87 20 7839 KING 17-11月-81 10 7844 TURNER 08-9月 -81 30 7876 ADAMS 23-5月 -87 20 7900 JAMES 03-12月-81 30 7902 FORD 03-12月-81 20 7934 MILLER 23-1月 -82 10已选择14行。2,WHERE语句:
SQL> SELECT e.empno "雇员编号", e.ename "雇员名称", e.hiredate "受雇日期", e.deptno "部门编号" 2 FROM emp e WHERE e.empno>=1900 ; 雇员编号 雇员名称 受雇日期 部门编号---------- ---------- -------------- ---------- 7369 SMITH 17-12月-80 20 7499 ALLEN 20-2月 -81 30 7521 WARD 22-2月 -81 30 7566 JONES 02-4月 -81 20 7654 MARTIN 28-9月 -81 30 7698 BLAKE 01-5月 -81 30 7782 CLARK 09-6月 -81 10 7788 SCOTT 19-4月 -87 20 7839 KING 17-11月-81 10 7844 TURNER 08-9月 -81 30 7876 ADAMS 23-5月 -87 20 7900 JAMES 03-12月-81 30 7902 FORD 03-12月-81 20 7934 MILLER 23-1月 -82 10已选择14行。
3,WHERE语句的作用主要是指定检索条件
WHERE条件中可以使用的操作符=等于<>,!=不等于>=大于等于<=小于等于>大于<小于ANY与列表中的任何值进行比较ALL与列表中的所有值进行比较BETWEEN指定的两个值之间,包括边界值LIKE匹配的字符样式,一般用于模糊查询IN匹配的一个列表值IS NULL匹配空值
ALL ANY 操作符
~注:ALL与ANY的区别:
ANY是指列表中每一个值进行比较,只需要满足列表中的其中一个条件就可以输出
ALL是值列表中的所有的值进比较,必须满足所有条件才可以
SQL> SELECT empno FROM emp 2 WHERE empno > ANY (7788 , 7800 , 7900) ; EMPNO---------- 7839 7844 7876 7900 7902 7934已选择6行。SQL> SELECT empno FROM emp 2 WHERE empno > ALL (7788 , 7800 , 7900) ; EMPNO---------- 7902 7934
IN 操作符
检索列表中的数据,进行匹配。
SQL> SELECT empno FROM emp 2 WHERE empno IN (7788 , 7800 , 7900) ; EMPNO---------- 7788 7900
In与ANY 与ALL的不同是,IN只是匹配,没有进行比较
BETWEEN操作符:
a BETWEEN b and c 的作用相当于a<=b and a>=c
SQL> SELECT empno FROM emp WHERE empno BETWEEN 7000 AND 7500 ; EMPNO---------- 7369 7499SQL> SELECT empno FROM emp WHERE empno >= 7000 AND empno <= 7500 ; EMPNO---------- 7369 7499
LIKE 操作符
下划线(_):匹配指定位置的一个字符
百分号(%):匹配从指定位置开始的任意个字符
下面我们尝试在scott.emp查询ename第三个字母为O的人的名字:
SQL> SELECT ename FROM emp WHERE ename LIKE '__O%' ;ENAME----------SCOTT
主要用于模糊查询
4,ORDER BY字句
SQL> SELECT ename FROM emp ORDER BY ename DESC ;ENAME----------WARDTURNERSMITHSCOTTMILLERMARTINKINGJONESJAMESFORDCLARKENAME----------BLAKEALLENADAMS已选择14行。
#DESC为降序,由大到小;ASC为升序,由小到大;
5,GROUP BY子句
使用GROUP BY语句,可以根据表中的某一列或某激烈对表中的数据进行分组,多个列之间用逗号隔开。若进行多列分组,Oracle会对第一列进行分组,然后在分出来的组按第二列再进行分组。
GROUP BY clause must contain only aggregates or grouping columns. (Oracle文档)
必须含有聚合函数和Group by右面的是前面所选的列,聚合函数根据Group所返回的结果进行计算
这里是只分一组的情况
SQL> SELECT deptno AS "部门编号" ,COUNT(*) AS "员工人数" --查询scott用户表中每一个部门的员工号 2 FROM emp GROUP BY deptno ; 部门编号 员工人数---------- ---------- 30 6 20 5 10 3
分两组的情况:
SQL> select deptno ,job from emp group by job , deptno ; DEPTNO JOB---------- --------- 20 MANAGER 10 PRESIDENT 10 CLERK 30 SALESMAN 20 ANALYST 30 MANAGER 10 MANAGER 30 CLERK 20 CLERK已选择9行。
~注:我们可以尝试这样理解GROUP BY字句:当被分组的列只有一列时,被分组的列把相同的数据合并,就像Java里面的List与Set,把List转化为Set的时候,相同的数据去掉。返回的结果就是这个Set的值。
这也可以解释为什么“没有使用聚合函数的列,必须出现在 group by 后面“,否则分组之后,未分组的数据与分组的数据将形成一对多的关系,如上面的关系,deptno=10的数据有很多行,而同时对应的其他列的数据
却有很多行。当被分组的列有多列时,我们把之前分好组的数据当成是一个表,再进行类似的分组方法,最后输出全部的分组结果:
deptno=10是分好的一组,我们把它看成是一个表,再对job分组,就如上面所示,
SQL> SELECT deptno ,job FROM emp WHERE DEPTNO = 10 ; DEPTNO JOB---------- --------- 10 MANAGER 10 PRESIDENT 10 CLERK6,HAVING字句
HAVING语句:
HAVING字句经常与GROUP BY 字句一起用,完成统计后,再对分组的结果进行筛选结果
SQL> SELECT deptno AS "部门编号" ,COUNT(*) AS "员工人数" 2 FROM emp GROUP BY deptno 3 HAVING COUNT(*)>3 ; 部门编号 员工人数---------- ---------- 30 6 20 5
#综:如果再SELECT语句中同时包含GROUP BY , HAVING , ORDER BY三个字句,那么这些字句在SELECT语句中出现的顺序应为:GROUP BY , HAVING , ORDER BY;
DISTINCT关键字
用来限定在检索结果中显示不重复的数据
对于重复值,只显示一个。如果不指定将默认使用ALL
SQL> select distinct deptno from emp ; DEPTNO---------- 30 20 10SQL> select all deptno from emp ; DEPTNO---------- 20 30 30 20 30 30 10 20 10 30 20 30 20 10已选择14行。
~注:Distinct的用法过程:select查询结果,再把相同的合并,有点类似于集合的唯一性特点。
对Oracle SQL查询的基本知识就总结到这里,可能会有很多问题,希望有读者可以指出。
- Oracle学习笔记(二):基本SELECT语句
- Oracle学习----select基本语句
- 01_基本SQL SELECT语句 - Oracle学习笔记
- 尚学堂马士兵Oracle学习笔记之一:基本select语句
- oracle select语句学习
- 【01】 - Oracle基本select语句
- Oracle之基本select语句
- oracle学习笔记(基本语句)
- oracle学习笔记(二)查询语句
- Orcale笔记-select语句(二)
- Oracle学习笔记 2 --简单查询语句(select)
- Oracle笔记 :基本查询(select)
- oracle基本语句学习
- SQL学习笔记--基本select
- Oracle学习笔记——1、基本的SQL语句
- Hive学习之SELECT语句(二)
- 【SQL Server学习笔记】SELECT语句
- MySQL学习笔记3SELECT 语句
- 《算法导论》笔记 第22章 22.2 广度优先搜索
- C++程序设计项目开发——银行自动提款机(三)
- 【Ubuntu】[服务配置单]:ubuntu安装好之后,不能使用setup命令(redhat是这个),显示服务配置表单,而是使用是sysv-rc-conf这个命令。
- 考试排名 2093
- hdu2845
- Oracle学习笔记(二):基本SELECT语句
- <s:property>的用法(jsp获取action中的值或者方法)
- cygwin下vim方向键不可用
- qte参数配置介绍
- TCP/IP协议栈
- htonl() htons()及inet_ntoa() inet_addr()
- 【Web优化】Yslow优化法则(三)添加缓存控制首部
- 关于QT中用QTcpserver 和QTcpsocket接收和发送数据的一个规则理解
- 九度OJ #1437 To Fill or Not to Fil