第二章《编写简单的查询语句》
练习1:
1、使用两种方式查询所有员工(EMP)信息
(1)select * from emp
(2)select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp
2、查询(EMP)员工编号、员工姓名、员工职位、员工月薪、工作部门编号
select empno,ename,job,sal,deptno from emp
知识点一:算术运算符
1、可以在select语句中使用算术运算符(+,-,*,/),改变输出结果
如:select sal,sal+300 from emp
2、算术运算符优先级
(1)乘除优先于加减
(2)相同优先权的表达式按照从左至右的顺序依次计算
(3)括弧可以提高优先权,并使表达式的描述更为清晰
练习2:
1、员工转正后,月薪上调20%,请查询出所有员工转正后的月薪。
(注意:用百分号不行,即是用20%代替0.2是执行不了的)
select sal*(1+0.2) 转正后月薪 from emp
2、员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的年薪所得(不考虑奖金部分,年薪的试用期6个月的月薪+转正后6个月的月薪)
select 6*sal+6*sal*(1+0.2) 一年月薪 from emp
知识点二:空值NULL
(1)空值是指一种无效的、未赋值、未知的或不可用的值。
(2)空值不同于零或者空格
(3)算术表达式中的空值NULL。任何包含空值的算术表达式运算后的结果都为空值NULL。
如:select ename,12*sal+comm from emp where ename='KING'
第二列返回的是空值null,因为KING的奖金comm是空值
知识点三:列别名
(1)用来重新命名列的显示标题
(2)如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题
(3)使用列别名的方法
方式1:列名 列别名
方式2:列名 AS 列别名
(4)以下三种情况列别名两侧需要添加双引号
情况一:列别名中包含有空格
情况二:列别名中要求区分大小写
情况三:列别名中包含有特殊字符
(5)注意:列别名如果是中文,要加双引号
练习3:
1、员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需要考虑奖金部分),要求显示列标题为员工姓名,工资收入、奖金收入、总收入。
(注意:当comm是空值时候,所有带有它的运算都是空值,解决办法是使用nvl(comm,0),那么当comm为空时就返回0)
select ename as 员工姓名,6*sal+6*sal*(1+0.2) 工资收入,comm 奖金收入,6*sal+6*sal*(1+0.2)+nvl(comm,0) 总收入
from emp
知识点四:连接操作符
(1)用于连接列与列、列和字符
(2)形式上是以两个竖杠||
(3)用于创建字符表达式的结果列
如:select * ename||job from emp
知识点五:原义字符串
(1)原义字符串是包含在SELECT列表中的一个字符、一个数字或一个日期。
(2)日期和字符字面值必须用单引号引起来。
(3)每个原义字符串都会在每个数据行输出中出现。
原义字符串的使用如下:
select ename || ' is a' || job from emp
知识点六:消除重复行
(1)在SELECT字句中使用关键字DISTINCT可消除重复行。
如:select distinct deptno from emp
练习4:
1、员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入,需要考虑奖金部分),要求显示格式为:XXX的第一年总收入为XXX。(使用到连接符”||”,它可以用于连接列与列,列与字符)
select ename||'的第一年总收入为'||(6*sal+6*sal*(1+0.2)+nvl(comm,0)) from emp
2、查询员工表中一共有哪几种岗位类型。(使用distinct关键字可以消除重复行)
select distinct job from emp
知识点七:显示表的结构
(1)在SQL*Plus中,可以使用DESCRIBE 命令来查看表结构
如:desc [ribe] emp
知识点八:SQL语句与SQL*PLUS命令的区别
(1)SQL是关系型数据库的标准操作语言,而SQL*Plus是一个客户端工具,除了执行标准的SQL外,还可以执行工具本身的一些命令,比如登录等。
(2)SQL语句不可以缩写,而SQL*PLUS命令可以缩写。
课后作业:
1、分别选择员工表、部门表、薪资等级表中的所有数据。
select * from emp
select * from dept
select * from salgrade
2、分别查看员工表、部门表、薪资等级表的表结构。
desc emp
desc dept
desc salgrade