Oracle的PL/SQL編程前奏之基礎技能實戰二java
前言:本文主要講述使用DDL定義表結構,定義主鍵,添加外鍵;以及oracle最小運行代碼塊實現需求;sql
一>shell
使用DDL數據定義語言建立員工表,部門表。編程
員工表中要有工號,中文姓名,英文姓名,別名,年齡,入職日期,部門編號。oracle
部門表中要有部門編號,部門名稱,部門經理,部門描述,工號。ide
張三是理財部的經理,他不屬於任何部門;李四是財務部職員;spa
答案:it
-----建立員工表 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;
總結: io
1>java定義數據:int i=5; shell中定義數據: CMD="ping -W 2 -c 2" PL/SQL中定義數據: v_EmpNo int:=102;table
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來進行異常的處理。