(ORACLE)PL/SQL 表的基本查询

表的基本查询

使用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 “年薪”;

中文的别名 前后要加双引号",英文不用加。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/NONAME999/article/details/84336624