Oracle的PL/SQL編程前奏之基礎技能實戰二

                                                                  Oracle的PL/SQL編程前奏之基礎技能實戰二

前言:本文主要講述使用DDL定義表結構,定義主鍵,添加外鍵;以及oracle最小運行代碼塊實現需求;

一>

使用DDL數據定義語言創建員工表,部門表。

員工表中要有工號,中文姓名,英文姓名,別名,年齡,入職日期,部門編號。

部門表中要有部門編號,部門名稱,部門經理,部門描述,工號。

張三是理財部的經理,他不屬於任何部門;李四是財務部職員;

答案:

-----創建員工表
create table 員工表(
---定義員工表列
工號 INT NOT NULL,
中文姓名 VARCHAR2(20) NOT NULL,
英文姓名 VARCHAR2(20) NULL,
別名 VARCHAR2(20) NULL,
年齡 INT DEFAULT 18,
入職日期 DATE NULL,
部門編號 INT NULL,
----定義員工表主鍵
CONSTRAINT PK_員工表 PRIMARY KEY(工號)
);
-----創建部門表
SQL> create table 部門表(
  2  ----定義部門表列
  3  部門編號 INT NOT NULL,
  4  部門名稱 VARCHAR(50) NULL,
  5  部門經理 INT NOT NULL,
  6  部門描述 VARCHAR(200) NULL,
  7  工號 INT NOT NULL,
  8  ----定義部門表主鍵
  9  CONSTRAINT PK_部門表 PRIMARY KEY(部門編號)
 10  )
 11  /
Table created
------爲員工表添加外鍵引用
ALTER TABLE 員工表 ADD(CONSTRAINT FK_部門編號 FOREIGN KEY (部門編號) REFERENCES 部門表(部門編號));
------爲部門表添加外鍵引用
ALTER TABLE 部門表 ADD(CONSTRAINT FK_部門經理 FOREIGN KEY (部門經理) REFERENCES 員工表(工號));
INSERT INTO 員工表 VALUES(100,'張三','San Zhang','老三',20,date'2011-01-01',null);
INSERT INTO 員工表 VALUES(101,'張四','Li si','老四',20,date'2011-01-01',100);
INSERT INTO 部門表 VALUES(100,'財務部',100,'理財部',0);
----讓張三屬於財務部
UPDATE 員工表 SET 部門編號=100 WHERE 工號=100;

總結: 

1>java定義數據:int i=5;   shell中定義數據: CMD="ping -W 2 -c 2"     PL/SQL中定義數據: v_EmpNo int:=102;

2>PL/SQL中使用單引號。

3>定義主鍵:CONSTRAINT PK_員工表 PRIMARY KEY(工號)

4>添加外鍵引用:ALTER TABLE 員工表 ADD(CONSTRAINT FK_部門編號 FOREIGN KEY (部門編號) REFERENCES 部門表(部門編號));


二>編寫一個PL/SQL程序塊將上面創建的員工表中添加一個新的員工。

思路: 首先判斷要添加的員工工號是否存在,如果存在,則更新該工號對應的員工的信息,否則添加一個新的員工

答案:

DECLARE
-----在PL/SQL匿名塊中定義變量
v_EmpNo INT:=102;
v_ChsName VARCHAR2(20):='王五';
v_EngName VARCHAR2(20):='Wang wu';
v_AlsName Varchar2(20):='老五';
v_Age INT:=28;
v_EnrDate DATE:=date'2011-04-01';
v_DeptNo INT:=100;
BEGIN
-----先更新已存在的記錄
update 員工表 set 中文姓名=v_ChsName,英文姓名=v_EngName,別名=v_AlsName,年齡=v_Age,入職日期=v_EnrDate,部門編號=v_DeptNo where 工號=v_EmpNo;
dbms_output.put_line('員工更新成功');
---判斷,如果未更新數據,
IF sql%NOTFOUND then 
-----則向員工表中插入記錄
insert into 員工表 values(v_EmpNo,v_ChsName,v_EngName,v_AlsName,v_Age,v_EnrDate,v_DeptNo);
dbms_output.put_line('員工插入成功');
end if;
exception
when others then
dbms_output.put_line("插入員工表錯誤");
END;

總結:

1>包含兩條sql語句,即update和insert,同時還包含了變量的聲明和if條件語句,最後使用exception來進行異常的處理。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章