1. 程式人生 > >oracle資料庫實訓之第二章《編寫簡單的查詢語句》

oracle資料庫實訓之第二章《編寫簡單的查詢語句》

第二章《編寫簡單的查詢語句》

練習1

1、使用兩種方式查詢所有員工(EMP)資訊

(1)select * from emp

2select 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