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来进行异常的处理。