oracle学习2 下载本文

……………………………………………………………精品资料推荐…………………………………………………

view 视图

视图赠加了维护的量 序列:

create table arcticle (id number,

title varchar2(1024), cont long );

序列的创建sequence产生独一无二的序列,而且是oracle独有的 create sequence seq;

select seq.nextval from dual; 查找序列号

insert into arcticle values(seq.nextval,'a','b');往表中插入序列 --35

数据库设计的3范式

第一范式: 设计任何表都要有主键,列不可分 第二范式: 如果有2个主键的话,不能存在部分依赖 第三范式, 不能存在传递依赖

PL-sql 例子1:

SQL> set serveroutput on;

SQL> begin(必要的--程序开始执行) 2 dbms_output.put_line('hello world'); 3 end;(结束)

11

……………………………………………………………精品资料推荐…………………………………………………

4 / 例子2: SQL> declare

2 v_name varchar2(20); --变量名字 3 begin

4 v_name:='myname'; --赋值语句 5 dbms_output.put_line(v_name); 6 end; 7 /

myname 例子3:

SQL> declare

2 v_num number:=0; 3 begin

4 v_num:=2/v_num;

5 dbms_output.put_line(v_num); 6 end; 7 / declare *

ERROR 位于第 1 行: ORA-01476: 除数为 0 ORA-06512: 在line 4 例子4:

declare

v_num number:=0; begin

v_num:=2/v_num;

dbms_output.put_line(v_num); exception

when others then

dbms_output.put_line('error'); end; /

12

……………………………………………………………精品资料推荐…………………………………………………

变量声明的规则

1.变量名不能够使用保留字,如from,select等 2.第一字符必须是字母。 3.变量名最多包含30个字符 4.不要与数据库的表或者列同名 5.每一行只能声明一个变量

常用变量类型

1. binary_interger,整数,主要用来计数,而不是用来表示字段类型 2. number 数字类型 3. char 定长字符串 4. varchar2 变长字符串 5. date 日期

6.long 长字符串,最长2GB

7.boolean 布尔类型,可以取true false 和null的值 例5:

declare

v_temp number(1);

v_count binary_integer:=0; v_sal number(7,2):=4000.00; v_date date:=sysdate;

v_pi constant number(3,2):=3.14; v_valid boolean:=false;

v_name varchar2(20) not null:='myname'; begin

dbms_output.put_line('v_temp value:'||v_temp); end;

用--可以注释一行

13

……………………………………………………………精品资料推荐…………………………………………………

例6:

declare

v_empno number(4);

v_empno2 emp.empno%type; v_empno3 v_empno2%type; begin

dbms_output.put_line('test'); end; 例7

table变量类型

set serveroutput on; declare

type type_table_emp_empno is table of emp.empno%type index by binary_integer;

v_empnos type_table_emp_empno; begin

v_empnos(0):=7369; v_empnos(2):=7869; v_empnos(-1):=9999;

dbms_output.put_line(v_empnos(-1)); end; 例8

Record 变量类型

set serveroutput on; declare

type type_record_dept is record (

deptno dept.deptno%type, dname dept.dname%type, loc dept.loc%type );

v_temp type_record_dept; begin

v_temp.deptno:=50; v_temp.loc:='aaaa'; v_temp.loc:='bj';

dbms_output.put_line(v_temp.deptno||' '||v_temp.dname); end; 例9:

14

……………………………………………………………精品资料推荐…………………………………………………

使用%rowtype声明record变量(表结构的变化同时也能代理储存过程的变化) set serveroutput on; declare

v_temp dept%rowtype; begin

v_temp.deptno:=50; v_temp.loc:='aaaa'; v_temp.loc:='bj';

dbms_output.put_line(v_temp.deptno||' '||v_temp.dname); end; 例10;

declare

v_name emp.ename%type; v_sal emp.sal%type; begin

select ename,sal into v_name,v_sal from emp where empno=7369;(将ename和sal的值放在v_name和v_sal里面) 例11:

declare

v_name emp.ename%type; v_sal emp.sal%type; begin

select ename,sal into v_name,v_sal from emp where empno=7369; dbms_output.put_line(v_name||' '||v_sal); end;

dbms_output.put_line(v_name||' '||v_sal); end; 例12:

declare

v_deptno dept.deptno%type:=50; v_dname dept.dname%type:='aaaa'; v_loc dept.loc%type:='bj'; begin

insert into dept2 values(v_deptno,v_dname,v_loc); commit;

15