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;exceptionwhen others thendbms_output.put_line("插入员工表错误");END;
总结:
1>包含两条sql语句,即update和insert,同时还包含了变量的声明和if条件语句,最后使用exception来进行异常的处理。