表的基本查询
使用scott用户下存在的emp表和dept表,演示如何使用select语句
emp表
dept表
查询select语法是Oracle和其他数据库中最重要的语法,查询的效率关系程序执行的效率,为了更好的看出区别,这是先介绍一个命令 set timing on 输入此命令后,可以显示每次操作所花费的时间。
查看表的结构
显示表的相关字段名 和字段的数据类型 显示效果如下图
sql>desc emp;
查询表的所有信息 (* 代表 表的所有字段 )
select * from emp;
查询指定的字段
select ename,sal,job from emp;
去除查询内容的重复信息
我们先将emp表中的 deptno字段和job字段的内容信息查出来
select deptno,job from emp;
我们发现表中有很多重复的内容
接下来我们使用 distinct 去除表中的重复内容 语法如下
select distinct deptno, job from emp;
表中重复的内容就被去除了
在查询中使用算数表达式
显示雇员的年工资(sal为月工资 年工资为sal*12)
这里我们使用了一个 as 关键字 给字段重新命名为年薪如果不使用 as 关键字 效果如下
select ename,sal*12 as “年薪” from emp;
在查询中使用算数表达式时,如何处理字段中的null值
在EMP表中 有一个奖金(COMM)字段,我们可以看到有些员工是没有没有奖金的 那如果把年薪和奖金相加会出现什么效果喃?
可以看出 奖金为null的员工 没有显示出年薪,这是可以使用nvl(,)函数来处理,语法如下
select ename,(sal+nvl(字段名,替换类型))*12 from emp;
select ename,(sal + nvl(comm,0))*12 from emp;
使用where添加查询条件
如何显示工资高于2000的员工
select ename,sal from emp where sal > 2000;
如何查询 1981年1月1日之后入职的员工
select ename,hiredate from emp where hiredate > ‘1-1月-1981’;
这里的日期格式是oracle的默认日期格式
如何显示工资在2000至2500之间的员工
select ename,sal from emp where sal>2000 and sal<2500;
当这里同时需要成立两个判断条件的时候条件与条件之间用 and 操作符连接
使用like操作符
%:表示0到多个字符 _:表示单个字符
如何显示首字母为S的员工姓名和工资
select ename,sal from emp where ename like ‘S%’;
如何显示第三个字母为O的员工和工资
select ename,sal from where ename like ‘__O%’
这里第三个字母是O 那前两位就要两个下滑线替代‘_’
在where条件中使用in
使用in操作符 查询员工编号(empno)字段中 编号为7782,7900,7876的员工姓名和编号
select ename,empno from emp where empno in (7782,7900,7876);
使用 is null 操作符
如何查询没有上级的员工(上级编号字段为MGR)名字和编号,如果MGR字段为null则为没有上级
select ename,empno,mgr from emp where mgr is null;
使用 is null 查询为空的字段,使用is not null 查询不为空的字段
使用 is not null查询有上级的员工
select ename,empno,mgr from emp where mgr is not null;
使用多个逻辑判断符
查询工资大于500 或是岗位为MANAGER的雇员,同时还要满足他们姓名的首字母为大写J
select ename,job,sal from emp where (sal>500 and job = ‘MANAGER’) or ename like ‘J%’;
使用order by 对字段内容进行排序
使用order by 字段名 asc 是降序(不写asc 默认是降序),如果想要升序排列 使用 order by 字段名 desc
按照工资降序排序员工信息
select * from emp order by sal;
按照部门号升序,员工工资降序排列,显示信息
select * from emp order by deptno,sal desc;
使用别名进行排序
select ename “员工姓名”,(sal + nvl(comm,0))*12 “年薪” from emp order by “年薪”;
中文的别名 前后要加双引号",英文不用加。