Oracle基础查询
来源:互联网 发布:如何用matlab预测数据 编辑:程序博客网 时间:2024/05/22 15:20
sql基础查询
--------------------------1.1 from 字句------------------------------
select后面跟着是字段(列) from指的来自哪张表
查询所有的字段可以用* 号来代替,但是不建议使用,效率会低一些。
--------------------------1.2使用别名--------------------------------
AS可以省略,建议学习时还是写的比较好
中间也是字母,中文,还可以多个单词,但是注意中文和多个单词用双引号引起来
SELECT EMPNO AS ID,ENAME "名字",sal*12 as "total sal" FROM EMP;
--------------------------1.3where子句-------------------------------
使用where条件查询
查询部门10下面的员工有哪些
SELECT EMPNO ID,ENAME NAME, MGR,HIREDATE,DEPTNO FROM EMP WHERE deptno=10;
查询smith的月薪是多少
SELECT EMPNO ED,ENAME NAME,SAL FROM EMP WHERE ENAME='SMITH';
查询15年以后入职的员工姓名
SELECT EMPNO ID,ENAME NAME,hiredate FROM EMP WHERE HIREDATE>'01-1月-15';
--------------------------1.4SELECT子句------------------------------
SELECT子句后面跟的是字段名,可以做一些计算都是可以的
一条基本SQL包括:SELECT子句+FROM子句
其中WHERE子句可以选择
--------------------------1.5查询条件 -------------------------------
使用>, <, >=, <=, !=, <>, =判断,一般跟在WHERE子句中
--------------------------1.5 AND 和 OR 逻辑连接符--------------------
AND指多个条件必须满足
OR指多个条件满足其一就可以了
--------------------------1.6模糊查询---------------------------------
使用LIKE来代替等号:必须借助于两个符号,_ :单个字符 % 0-多个字符
前后都写%,就可以实现对字段值所有字符进行匹配
SELECT EMPNO ID,ENAME NAME ,JOB, HIREDATE ,SAL FROM EMP WHERE ENAME LIKE'%M%';
----------------1.7 in和not in(可以使用条件判断符号代替)-----------
查询表中职位为manager和clerk的职位
SELECT EMPNO ID,ENAME NAME, JOB, MGR,SAL FROM EMP WHERE JOB IN('MANAGER','CLERK');
查询表中部门编号不为10,20号部门的员工。
SELECT EMPNO ID,ENAME NAME,JOB,MGR,SAL,DEPTNO FROM EMP WHERE DEPTNO NOT IN(10,20);
-------------------------1.8 IS NULL和is not null -------------------
对null进行判断的时候不能使用“=”;
-------------------------1.9ALL和ANY---------------------------------
在比较运算符中,可以出现ALL和ANY,表示“全部”和“任一”,
但是ALL和ANY不能单独使用,需要配合单行比较操作符>、>=、
<、<=一起使用。其中:
> ANY : 大于最小
< ANY:小于最大
> ALL:大于最大
< ALL:小于最小
-----------------1.10WHERE子句中可以使用函数和表达式的---------------
查询年薪大于10w的员工信息。
SELECT EMPNO ID,ENAME NAME ,JOB,SAL FROM EMP WHERE SAL*12>100000;
查询时,where条件使用函数
SELECT EMPNO ID,ENAME ,JOB FROM EMP WHERE ENAME=UPPER('tang');
----------------1.11distinct关键字可以将重复字段进行去重-------------
SELECT distinct DEPTNO FROM EMP;
跟其他字段联合查询 注意:这里是指deptno和job交叉起来不重复。
SELECT DISTINCT DEPTNO,JOB FROM EMP;
---------------1.12order by子句(对查询出来的数据进行排序)----------
注意:oder by必须出现SELECT语句的最后面。
原理:order by排序是对查询出来的结果进行排序的。
排序默认的话是升序排列(ASC),如果要降序排列,要去指定DESC
NULL升序的话作为最大的,排在最后面
SELECT EMPNO,ENAME,MGR FROM EMP WHERE DEPTNO=10 ORDER BY MGR;
降序:对工资从高到低进行排列
SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP WHERE DEPTNO=20 ORDER BY SAL DESC;
多列联合排序
首先按指定的第一列排。那如果第一列同时出现多个相同的时候,在按第二列排,
依次类推,但注意必须指定每列都必须指定升序或降序
SELECT deptno,EMPNO,SAL FROM EMP ORDER BY deptno DESC,SAL ASC, empno ASC;
------------------1.13聚合函数(用来做统计的)---------------------------
min/max:找出最大值和最小值
查询emp表中的最高和最低工资
SELECT MAX(SAL) AS MAX_SAL,MIN(SAL) AS MIN_SAL FROM EMP;
查询最高工资的员工
Select Empno,Ename,Job ,Sal From Emp Where Sal=(Select Max(Sal) As Max_Sal From Emp);
查询最早入职和最晚入职的日期
SELECT MAX(HIREDATE)AS MAX_DATE,MIN(HIREDATE) AS MIN_DATE FROM EMP;
AVG/SUM
求平均值及总和 忽略空值
SELECT AVG(SAL) AS AVG_SAL,SUM(SAL) SUM_SAL FROM EMP WHERE DEPTNO=10;
COUNT():查询表中的记录条数(行)
SELECT COUNT(*)AS total_count from emp;
查询有职位的员工记录条数 忽略空值
SELECT COUNT(JOB)AS JOB_COUNT FROM EMP;
查询10号部门的员工数
SELECT COUNT(*) FROM EMP WHERE DEPTNO=10;
比较,聚合对null值的处理。
结果:聚合函数会直接将null值记录省略掉,是不会参与计算的
SELECT AVG(SAL) as avg_sal from emp;
SELECT AVG(NVL(SAL,0))AS AVG_SAL FROM EMP;
-1.14分组查询(求平均工资,工资总和,工资高和低,都可以使用分组的形式)-
SELECT DEPTNO, MIN(SAL) FROM EMP GROUP BY DEPTNO;
having子句必须跟在分组子句的后面,意为对分组做进一步的限制
SELECT DEPTNO,MIN(SAL) AS MIN_SAL FROM EMP GROUP BY DEPTNO HAVING MIN(SAL)<1000;
-----------------1.15查询语句的执行顺序(面试)----------------------
当一条查询语句中包含所有的子句,执行顺序依下列子句次序:
1. FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。
2. WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。
3. GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。
4. HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。
5. SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。
6. ORDER BY子句:执行顺序为从左到右排序,消耗资源。
- Oracle基础 查询基础
- 《07. oracle 查询--基础查询》
- Oracle查询基础(摘)
- Oracle 查询基础 (转)
- oracle 基础查询
- Oracle 基础查询知识点
- Oracle基础查询
- Oracle查询基础练习
- Oracle DML 基础查询
- 【Oracle】Oracle select查询基础
- Oracle基础学习----topN查询
- Oracle数据库基础(三)--查询
- Oracle基础-JOIN查询(DML)
- Oracle基础查询综合示例
- oracle数据库SQL查询基础
- 【Oracle sql基础】子查询
- Oracle数据库基础信息查询
- oracle学习之--高级查询基础
- centos7安装flash播放插件笔记
- 数据库引擎介绍
- 查看网站用了哪些技术
- Oracle基础
- Oracle常见函数
- Oracle基础查询
- Oracle高级查询
- Oracle优化
- Java开发岗位面试常问题
- swing的JFrame容器的一些小玩意
- 50道JAVA基础编程练习题
- java基础脑图
- AxonFramework命令拦截器
- HTML+CSS编写静态网站-09 导航元素