linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux数据库 >

Oracle 中的SELECT 关键字(查询、检索)

时间:2019-05-21  来源:未知  作者:admin666
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相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

上一篇:没有了
友情链接
  • Salesforce闹剧:共享用户数据后陷入数小时的瘫痪
  • 韩国政府计划从Windows 7迁移到Linux
  • Redis作者antirez:开源维护者的挣扎
  • 最常用还是最近搜索?你的Chrome地址栏如何自动填充?
  • Stack Overflow安全事件新进展:部分用户私人信息遭窃
  • 英特尔发布Clear Linux开发者版本
  • 思科报告Nexus 9000数据中心交换机,PI软件和EPN管理器中的严重
  • Google AI工程师介绍Translatotron,一种端到端的直接语音翻译模
  • Racket 7.3 发布,改进了Racket
  • V8 7.5 Beta 发布,WebAssembly隐式缓存
  • 开发人员辩论是否为Fedora 31阻止基于密码的Root SSH登录
  • Mozilla,Cloudflare和其他人建议使用BinaryAST以加快JavaScript
  • GCC 10支持使用SSE指令模拟MMX
  • KDE Plasma 5.16 beta发布,许多增强功能
  • Microsoft开源VS Code扩展Web Template Studio,可轻松创建全栈W
  • NotePad++ 正则表达式替换高级用法
  • 针对Linux 5.1内核更新的MuQSS补丁
  • DXVK 1.2 发布,支持Direct3D 11特定于供应商的扩展
  • NVIDIA 430.14 Linux驱动程序发布,Vulkan性能优化
  • SMPlayer 19.5.0发布,如何在Ubuntu中安装它
  • Phoronix Test Suite 8.8 正式发布
  • LLVM Clang 9.0采用初始C2x语言模式
  • 使用Linux操作系统的网络安全:您需要知道的一切
  • SwiftWasm
  • Mesa 19.1
  • Wine 4.0.1 发布,44个修复
  • Flutter启用新的lint规则来构建更好的Chrome OS应用程序
  • Proton 4.2
  • 微软开源基于近邻图的最近邻搜索算法SPTAG
  • GitHub Package Registry测试版发布,新的软件包管理服务
  • Mozilla修复旧版Firefox插件bug,专用扩展现可用于Firefox 52
  • 如何在Mozilla Firefox中获得扩展建议
  • Google和Collabora为Chrome OS设备的Linux 5.1内核进行重大更改
  • Ant Design 3.18.1 发布,企业级UI设计语言
  • Atom 1.37 发布,跨平台文本编辑器
  • Apple发布iOS 12.3和tvOS 12.3,macOS Mojave 10.14.5,watchOS
  • G7国家将在6月模拟跨境网络攻击
  • VirtualBox 6.0.8 发布,Linux Kernel 3.16.35与共享文件夹一起
  • Linux kernel 5.1.1第一个点发布,可准备好进行大规模部署
  • KDE Frameworks 5.58 发布,许多修复及改进
  • 英特尔的Clear Linux OS为Linux开发人员提供量身定制的工作流程
  • KDE Plasma 5.16桌面环境将带来全新的通知
  • 微软确认WSL与WSL2共存,以及Windows Linux子系统的更多信息
  • Apple发布了iOS 12.4,macOS 10.14.6,watchOS 5.3和tvOS 12.4的
  • Clear Linux 准备新的内核选项
  • Linux新闻 第972页
  • 如何在Ubuntu 18.04上配置MySQL主从复制
  • ORA
  • 领航时时彩
  • 九龙图库下载
  • 现金开户
  • 宝盈娱乐注册-上鼎狐网
  • 老时时彩360