一、涉及内容
1. 掌握PL/SQL程式塊的結構,了解并熟悉各種變量的應用。
二、具體操作
(一)使用system使用者登入SQL*PLUS,使用SQL語句建立使用者:u_你的姓名首字母(例如:u_zs),密碼為: t_你的學号後三位(例如:t_165)。并授予新使用者連接配接資料庫的權限,然後以新使用者連接配接資料庫。
1. 建立使用者u_sxl
2. 授予新使用者u_sxl連接配接資料庫的權限
3. 以新使用者u_sxl連接配接資料庫
(二)使用scott使用者連接配接資料庫,使用SQL語句建立表dep_你的學号後三位(例如:dep_165)
注意:建立表的同時要建立限制
列名 資料類型 列的說明
dno integer 系編号(主鍵限制)
dname char(12) 系名(唯一限制)
1. 使用scott使用者連接配接資料庫(先修改一下密碼)
2. 建立表dep_120
(三)使用SQL語句建立表stu_你的學号後三位(例如:stu_165)
注意:建立表的同時要建立限制
列名 資料類型 列的說明
sno integer 學号(主鍵限制)
sname Varchar2(20) 姓名(非空限制)
sage integer 年齡(check限制:在12~99歲之間)
sdep integer 系編号(外鍵限制)
建立的表格如下所示:
(四) 使用scott方案下的emp表和dept表完成下列查詢。(注意:每道題隻能使用一條SQL語句實作)
1. 查詢20号部門的所有員工的姓名、部門名稱(要求:使用NATURAL JOIN)
2. 查詢部門地點(LOC)、員工姓名。如果某部門沒有員工,也要顯示部門地點。(要求:使用左外連接配接)
3. 查詢30号部門的員工獎金(COMM)的合計值。
4. 查詢每個員工的姓名和他頂頭上司(MGR)的姓名(要求:使用自身連接配接)
5. 查詢月薪低于2100元,并且所在部門編号是30的員工編号和月薪。(要求:使用INTERSECT)
6. 查詢平均工資最高的兩個部門的部門編号。(要求:使用rownum僞列)
7. 查詢與ALLEN的所在部門和雇用年份相同的所有員工的姓名。(要求:使用多列子查詢)
8. 按工作崗位(job)分組,查詢每種崗位的員工個數
9. 按工作崗位(job)分組,查詢每種崗位的薪水的最低值。
10. 将“SALES”部門的員工薪水增加15% (注意:需要使用兩張表)
11. 查詢平均月薪高于2800元的部門名稱、員工姓名、部門平均月薪。
12. 從emp表中删除 所在部門位于“BOSTON”的員工的資訊。(注意:需要使用兩張表)
(五)編寫PL/SQL程式塊,每道題目使用一個程式塊實作。
1、建立并執行一個PL/SQL程式塊,通過替代變量由鍵盤輸入兩個數值x和y,用第一個數x乘以第二個數y再除以10取整(小數四舍五入),将結果存入變量:v_你的姓名首字母(例如:v_zs),然後輸出到螢幕上。
2、建立并執行一個PL/SQL程式塊,查詢scott方案的emp表中的最高薪水,将其存入變量:v_你的姓名首字母(例如:v_zs)中,然後在螢幕上顯示。
3、建立并執行一個PL/SQL程式塊,計算scott方案中emp表的某個雇員的年薪,雇員的編号通過替代變量由鍵盤輸入,年薪等于月薪sal乘以12個月再加上獎金comm,使用NVL函數處理空值。将計算出的年薪存入變量:v_你的姓名首字母(例如:v_zs)中,然後将結果輸出到螢幕上。
4、建立并執行一個PL/SQL程式塊,向dept表中添加一行資料,用替代變量輸入部門的編号和名稱,部門位置為NULL。
5、建立并執行一個PL/SQL程式塊,更新部門位置的值,用替代變量輸入部門的編号和新的部門位置。
6、建立并執行一個PL/SQL程式塊,删除第4題添加的部門,用替代變量輸入部門的編号。