1. SELECT 关键字用法:

检索单个列:select 列名 from 表名;
例:select ename from emp;
检索多个列: select [列1,列2, ... ,列N] from 表名;
例:select ename , sal from emp;
检索所有列:select * from 表名;
例:select * from emp;

2. 通配符(A):

* :代表0个或多个列
_ : 代表单个字符
% : 代表0个或多个字符

使用通配符的优点:书写方便、可以检索未知列
使用通配符的缺点:降低检索的性能

3. 别名:(B)

给表取别名(类似对象名): 形如:select e.ename , e.sal from emp e;
给列取别名(用于显示):
方式一:列名后面加空格再加别名(系统会自动转成大写显示不能有空格等特殊符号)
如:select ename , sal*12 yearsal from emp;
方式二:列名后加空格再加“别名” (会直接以双引号里的格式显示,一般用于别名中包含空格等特殊符号的情况)
如:select ename , sal*12 "year sal" from emp;
方式三:列名加空格加as加空格加别名:
如:select ename , sal*12 as "year sal" from emp;

4.distinct关键字(去重):(A)

列:select distinct job from emp;
• distinct必须放在开头(select之后)
•多字段(多个列)–每个字段不一样才去重

5.where关键字(过滤)

  5.1 作用:

一般放在from关键字之后,用于过滤不需要的数据,保留有用的数据

  5.2 操作符:

1. =,!=,<>,<,>,<=,>=,any,some,all 条件判断

列:查询工资大于2000的员工信息

select * from emp where sal>=2000 ;

列:查询工资等于800或3000的员工信息

select * from emp where sal=any(800,3000) ;

any(或):满足其中一个条件即可

some:和any一样

all(与):需要满足所有条件

2. is null,is not null 值是否为null
is null :为空
is not null :不为空
例:查询 comm列不为空的员工
select * from emp where comm is not null;

3. between x and y x与y之间
例:查询工资在2000到3000的员工信息
select * from emp where sal between 2000 and 3000;

4. in(list),not in(list) 值是否包含在list中
in(list)在list列表内
not in(list)不在list列表内
注:list可以是一个查询返回的查询结果
例:查询职务为MANAGER和ANALYST的员工信息
select * from emp where job in('MANAGER', 'ANALYST');
注:list里的成员为字符需要加单引号,数值不用加单引号

5. exists(sub-query)、not exists(sub-query) 子查询
sub-query:子查询
exists(sub-query):满足该条记录的子查询时(有查找到)执行该条记录父查询
not exists(sub-query):不满足该条记录的子查询时执行父查询
如:select * from emp where exists(select *from dept where LOC = 'DALLAS');
子查询中 LOC列存在DALLAS则执行父查询返回emp中所有列
注:exists是逐条记录去比较,子查询能查到才会去执行父查询,同样子查询只有能查到结果就会执行父查询,所有一般需要添加其他条件,例如:
使用exists查询部门名称为SALES和RESEARCH 的雇员姓名、工资、部门编号。
select ename, sal, deptno
from emp e
where exists (select deptno from dept d where dname in('SALES', 'RESEARCH') and e.deptno=d.deptno);
6. like _ ,%,escape ‘\‘ _\% escape ‘\’ 模糊查找
通配符“_”和“%” 参考第2点
escape:定义转义字符 escape关键字 后面的字符将被定义为转义字符
escape放于like语句后面
列:查询所有员工中姓名包含“M”的员工信息 注:数据区分大小写
select * from emp where ename like '%M%';

6.order by关键字 (排序): (A)

6.1 用法:

例:对emp表按sal列进行排序(默认为升序)
select * from emp order by sal;

6.2 那如何指定是升序或降序?

select * from emp order by sal asc;
select * from emp order by sal desc;
asc代表升序,desc代表降序

6.3 按多个列进行排序

当一个列中出现相同的值时,可能需要按两个列或多个列进行排序,这时可以在 order by 后添加多个列(用逗号分隔),在各个列名后面可以加上asc或desc指定升序或降序。
例:select * from emp order by sal desc ,ename desc;

7.创建计算字段(列)(A)

7.1为什么需要计算字段?

我们经常需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序中重新进行计算或格式化。

7.2创建计算字段的方式

方式一 :对某个列的数值进行计算(+-*/)
Sql允许select子句(select后添加列名的位置)中出现由+,-,*,/以及列名和数字组成的表达式,将指定列中的值按照表达式进行计算,并创建新的一个列(可以对这个类设置别名)。
例:select sal*12 yearsal from emp;
yearsal为别名

方式二:对几个列中的数据进行拼接,可以在列之间加入格式,
例:select (ename ||'的年薪为:'|| sal*12) from emp;

注:创建出来计算字段是一个列但它并不实际存在于数据库表中

8.并集,全集,交集,差集(A)

8.1 union(并集):

将查询的两个结果(集合)组合成一个结果并过滤掉重复部分
例:查询工资大于2000以及部门编号为20的员工信息
select * from emp where sal>2000 union select * from emp where deptno=20;

8.2 union all(全集):

作用与union一样但不过滤重复部分
例:查询工资大于2000以及部门编号为20的员工信息(不去除重复)
select * from emp where sal>2000 union all select * from emp where deptno=20;

8.3 intersect(交集):

返回查询结果中相同的部分。
例:查询工资大于2000并且部门编号为20的员工信息
select * from emp where sal>200 intersect select * from emp where deptno=20;

8.4 minus(差集):

返回在第一个查询结果中与第二个查询结果不相同的那部分记录。
例:查询工资大于2000并且部门编号不是20的员工信息
select * from emp where sal>2000 minus select * from emp where deptno=20;

Oracle 中的SELECT 关键字(查询、检索)的更多相关文章

  1. 在oracle中,select语句查询字段中非纯数字值

    最近,将原来的数字符字段转换为数字时,总报错误:无效数字. 如何找出其中哪些是非数字字符的记录?比较麻烦的事.下面是用Oracle DB自带的函数translate可以找出来的 1.创建测试表 Cre ...

  2. oracle中的树状查询

    oracle中的树状查询 工作中经常会遇到将数据库中的数据以树的形式展现的需求.以下我们来看一下该需求在Oracle中如何实现. 首先我们需要有一个树形的表结构(当然有时候会出现表结构不是典型的树形结 ...

  3. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...

  4. oracle实现like多关键字查询

    oracle实现like多关键字查询: select * from contract_info tt where 1=1 and REGEXP_LIKE(tt.contract_name,'关键字1| ...

  5. 在ORACLE中实现SELECT TOP N的方法----[转]

    1.在ORACLE中实现SELECT TOP N 由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询. ...

  6. MySQL在字段中使用select子查询

    前几天看别人的代码中看到在字段中使用select子查询的方法,第一次见这种写法,然后研究了一下,记录下来 大概的形式是这样的: select a .*,(select b.another_field ...

  7. Oracle中的SQL分页查询原理和方法详解

    Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006

  8. Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义

    转:http://blog.chinaunix.net/uid-26896647-id-3433968.html 问题描述:如果在一个表中的一个字段上存在'&',  '_',  '%'这样的特 ...

  9. oracle 中的select ...connect by prior ...start with 及(+)的用法

    1.select ...connect by prior ...start with的用法: select ... from <tablename> where <condition ...

随机推荐

  1. TensorFlow-谷歌深度学习库 命令行参数

    程序的入口: tf.app.run tf.app.run( main=None, argv=None ) 运行程序,可以提供'main'函数以及函数参数列表.处理flag解析然后执行main函数. 什 ...

  2. 多进程IPC与Python支持

    多进程IPC与Python支持 linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因 ...

  3. File文件的读写操作RandomAccessFile类

    1.Java提供了一个对文件随机访问的操作,访问包括读和写操作,该类名是RandomAccessFile,该类的读写是基于指针的操作. 2.RandomAccessFile在堆文件进行随机访问操作时有 ...

  4. PAT1029:Median

    1029. Median (25) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given an incr ...

  5. Centos下的apache2练习

    前言: 我上星期一直在写代码忘记写博客了,明天回去补回来.脚本主要用于收集信息 今天刚刚学完apache.来做个总结,写的不好请多多指指出. 目标: Centos6.5的IP:192.168.1.21 ...

  6. maven使用与技巧

    1.Pom文件介绍与基本组成 说明:全称是Project Object Model,通俗点的话说就是要对构建的项目进行建模. 组成的基本元素: 元素 描述 modelVersion 超级pom版本 g ...

  7. JavaScript 中常见设计模式整理

    开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式.本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知. JavaScript 中常见设计模 ...

  8. Linux时间子系统之(三):用户空间接口函数

    专题文档汇总目录 Notes:用户空间时间相关接口函数: 类型 API 精度 说明 时间 time stime time_t 精度为秒级 逐渐要被淘汰.需要定义__ARCH_WANT_SYS_TIME ...

  9. js算法初窥02(排序算法02-归并、快速以及堆排序)

    上一篇,我们讲述了一些简单的排序算法,其实说到底,在前端的职业生涯中,不涉及node.不涉及后台的情况下,我目前还真的没想到有哪些地方可以用到这些数据结构和算法,但是我在前面的文章也说过了.或许你用不 ...

  10. Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结

    How to configure Spring Security to allow Swagger URL to be accessed without authentication @Configu ...