Oracle系列第三章 select语法----下次再见你说“嘿,老朋友”

3.1 select 基本结构和简单查询
3.1.1 select结构

结构:
select  *|colname [,...] from table [alias] 
分析:
select 关键字 后面跟要查询的内容 from关键字后面跟数据的来源
解析步骤:1)from 找来源 2) select 挑数据
语法结构需记忆

3.1.2 简单查询

1)查询所有

查询员工的所有信息
select * from emp
查询部门的所有信息
select * from dept
查询工资等级信息
select * from salgrade
查询班里同学的信息
select * from stu

2)查询部分字段

查询员工的姓名(我要看看公司有些什么人)
查询员工的姓名和年龄
查询员工的年龄和工种以及工资
查询学生的姓名和年龄和性别

3)按顺序查询

查询部门的所有信息并且按照,部门编号,地址,部门名称的顺序来显示

3.2 去重、别名和排序

3.2.1 去重

去除重复记录
结构:select distinct colName from tableName 
查询工种名称
查询有员工所在的部门名称

3.2.2 列别名

给列取名字
结构:
select colName n from tableName ;
select colName as n from tableName;
查询员工的名称并以“姓名”作为字段名显示
查员工资信息中的工资金额和对应的等级以“金额”和“等级”作为字段名称显示
查员工资信息中的工资金额和对应的等级以“金 额”和“等 级”作为字段名称显示

3.2.3 排序

将查询出来的结果按照指定顺序排序
结构:
select colName1, colName2 from tableName order by colName;
查询员工信息并按照工资升序排序
查询员工信息并按照工资降序排序
查询员工姓名,工种,所属部门编号以及工资并且按照所属部门编号进升序排序,当所属部门相同时按照工资升序排序
查询员工姓名,工种,所属部门编号以及工资并且按照所属部门编号进升序排序,当所属部门相同时按照工资降序排序
查询员工姓名的奖金并按奖金升序排序(没有奖金的null 放在最前)
查询员工姓名的奖金并按奖金升序排序(没有奖金的null 放在最后)

3.3 伪列和虚表
3.3.1 伪列和表达式

说明:查询不存在的列即伪列,当需要的结果不能直接从表中得到需要经过计算来展示则可以使用伪列+表达式实现
select 1  from emp;
select ename, 1 from emp;
查询员工的名称,工种,月工资,以及年薪(年薪=12个月的工资)
查询每个工资等级的平均工资(平均工资=(最低工资+最高工资)/2)
1)null 处理
nvl()
查询员工的名称,工种,工资,奖金,以及月收入(月收入=工资+奖金)
2)字符串拼接
||
查询员工的员工编号,姓名,以及将员工姓名和工种进行拼接后的字段(员工姓名-工种)

3.3.2 虚表

dual是一个虚表,虚拟表,是用来构成select的语法规则,oracle保证dual里面永远只有一条记录。该表只有一行一列,它和其他表一样,可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,起不了数据库。

dual主要用来选择系统变量或是求一个表达式的值。如果我们不需要从具体的表来取得表中数据,而是单纯地味了得到一些我们想得到的信息,并要通过select完成时,就要借助一个对象,这个对象就是dual。
计算999*666
获取系统当前时间

3.4 条件查询
当我们查询的数据需要经过筛选时,我们会给出一些条件,只有当表中的记录满足我们所给的条件,才会成为我们的目标数据,这就需要借助我们的条件查询。
select 查询内容 from 数据来源 where 行记录条件

3.4.1 比较运算

= 、>、<、>=、<=、<> 、!=、^=、between and 、in
查询10部门的员工信息
查询10部门以外的员工信息
查询工资在2000以上的员工名称,工种,所属部门编号
查询工资在 1800到2500之间到员工信息
查询10、30、40部门的员工信息

3.4.2 条件连接运算

and 、or 、not
当查询条件有多个时,可能需要同时满足,或者只满足其中一个,或者不满足某个条件,则需要用到 或。且。非
查询工资在1500以上并且是20部门的员工信息
查询岗位为 ‘CLERK’ 或部门编号为20的员工名称,部门编号和工资
查询岗位不是‘SALES’的员工名称,部门编号和工资

3.4.3 null运算nvl()

null比较特殊需要单独处理
is null 、is not null、not ... is null
查询所有有可能拿奖金的员工信息
查询所有不可能拿奖金的员工信息
查询所有真实获得奖金的员工信息

3.3.4 模糊查询 like

% 、 _
当查询的条件为比较模糊时,可以使用模糊查询
查询名称以‘A’开头的员工姓名,以及工资
查询名称第二个字母为‘M’的员工姓名以及工资
查询名称中含有‘C’的员工姓名以及工资
查询名称中含有%的员工信息 escape()
查询名称中含有_的员工信息

3.3.5 exists

in 是把外表和那表作hash join,而exists是对外表作loop,每次loop再对那表进行查询。这样的话,in适合内外表都很大的情况,exists适合外表结果集很小的情况。

3.5 子查询
3.5.1 from子句…没定

数据来源是经过过滤的
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。
select * from (select )

3.5.2 where 子句

判断条件不能直接得到,需要经过计算和过滤的
查询'XXX'部门的员工信息
select * from emp where deptno=(select deptno from dept where dname='XXX')
查询所有工资在第三等级的员工姓名,工资,所属部门

select语法

 

视频内容过大,受篇幅限制这里展示部分。想获取所有视频内容及文档,添加码歌李老师QQ:377851038  。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值