1:三范式
a:一张表里必须要有主键,列不可分。
b:如果一张表里面,两个字段作为主键,那么其他字段不能够部分依赖这两个字段。

2:pl sql:Procedural language(过程语言)

写一个输出hello world的小程序。
begin
dbms_output.put_line('hello world!');
end;
/

set serveroutput on; --设置服务器端输出

写一个声明变量,然后赋值,最后输出的小程序。

declare
v_name varchar(20);
begin
v_name := 'jack';
dbms_output.put_line(v_name);
end;
/

exception 捕捉异常,如果执行程序过程中发生错误,会把异常跑到
exception代码块,others then就是上面的异常没有捕捉到时,会捕捉
所有的异常。

declare
v_num number;
begin
v_num := 0;
dbms_output.put_line(2/v_num);
exception
when others then
dbms_output.put_line('error');
end;
/

3:显示当前用户
show user;

4:变量的声明
declare
id number(4) :=1001;
name varchar2(30) :='jack';
begin
dbms_output.put_line(name);
end;
/

声明的变量用来放表里面的数据,但是表结构可能会产生变化,为了
在表结构产生变化时,声明的变量的类型也会产生变化,可以使用%type

declare
id number(4) :=1001;
name emp.empno%type :='jack';
begin
dbms_output.put_line(name);
end;
/

5:声明数据类型table 代表数组类型
声明一个数据类型type_table_name
declare
type type_table_name is table of emp.empno%type index by binary_integer;
v_empnos type_table_name;
begin
v_empnos(0):=1001;
v_empnos(1):=1002;
v_empnos(-1):=1003;
dbms_output.put_line(v_empnos(-1));
end;
/

6:声明数据类型record ,相当于java中的类

declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_dept type_record_dept;
begin
v_dept.deptno :=1001;
v_dept.dname :='sales';
v_dept.loc :='shanghai';
dbms_output.put_line(v_dept.loc);
end;
/

可以使用%rowtype来声明record,这样,即使dept这张表的数据结构发生变化,变量结构
也会随之发生变化。
declare
v_dept dept%rowtype;
begin
v_dept.deptno :=1001;
v_dept.dname :='sales';
v_dept.loc :='shanghai';
dbms_output.put_line(v_dept.loc);
end;
/

7:pl中的select语句

select empno into v_empno from emp where empno='1001'; --pl中的select语句有且仅能查到一条数据

declare
v_empno emp.empno%type;
v_ename emp.ename%type;
begin
select empno,ename into v_empno,v_ename from emp where empno='1001';
dbms_output.put_line(v_empno || ' ' || v_ename);
end;
/

使用%rowtype放一条记录
declare
v_emps emp%rowtype;
begin
select * into v_emps from emp where empno=1001;
dbms_output.put_line(v_emps.empno || ' '||v_emps.ename ||' '||v_emps.sal);
end;
/

8:pl sql中的dml语句

向表中插入数据:
declare
v_empno emp.empno%type :=1006;
v_ename emp.ename%type :='markson';
begin
insert into emp (empno,ename) values(v_empno,v_ename);
commit;
end;
/

更新表中的数据
declare
v_deptno emp.deptno%type;
begin
v_deptno := 10;
update emp set sal=sal/2 where deptno=v_deptno;
dbms_output.put_line('影响了'||sql%rowcount||'条记录!');
commit;
end;
/

sql%rowcount :sql是一个关键字,rowcount表示执行上一条语句产生多少影响。

9:pl sql中ddl语言
在执行语句前面加上 execute immediate,然后create语句放在单引号内,如果单引号内有单引号,
那么使用双引号来代替单引号。
begin
execute immediate 'create table T(id number(4), name varchar(20) not null)';
end;

10:pl sql中的分支结构if elsif else

declare
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno=1001;
if(v_sal<=1000) then
dbms_output.put_line('low');
elsif(v_sal<=2000) then
dbms_output.put_line('middle');
else
dbms_output.put_line('high');
end if;
end;
/

11:pl sql中的循环结构
pl sql中的循环必须以loop开始,以end loop结束
相当于java中的do... while 结构
先循环再判断:
declare
i binary_integer :=1;
begin
loop
dbms_output.put_line(i);
i :=i+1;
exit when(i>=11);
end loop;
end;
/

相当于java中的while结构,先判断,在循环:
declare
i binary_integer :=1;
begin
while(i<11) loop
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
/

for循环:相当于java中的forhance循环,可以正序,也可以倒序:

declare
i binary_integer :=1;
begin
for k in 1..10 loop
dbms_output.put_line(k);
end loop;

for k in reverse 1..10 loop
dbms_output.put_line(k);
end loop;
end;
/

cursor:游标
recursion:递归
drigger:触发器

oracle学习总结4的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. Oracle学习线路

    出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)    作为oracle的基本功,需要大家对sql和 ...

  3. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  4. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  5. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

  6. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  7. Oracle学习系列5

    Oracle学习系列5 ************************************************************************************ ,掌握 ...

  8. Oracle学习系列4

    Oracle学习系列4 ************************************************************************************ 数据库 ...

  9. Oracle学习系列3

    Oracle学习系列3 ************************************************************************************ 多表查 ...

  10. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

随机推荐

  1. opencv linux

    This link which you also mentioned describes the necessary steps to compile OpenCV on your machine. ...

  2. HOG:从理论到OpenCV实践

    (转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途) 一.理论 1.HOG特征描述子的定义:     locally normalised ...

  3. C++中Const说明

    最近在看程序员面试宝典,看到const这块感觉有很大疑惑,查了很多资料,可以总结如下: 1.在C语言中 在C语言中,const修饰的变量不具有常量的特性,只是一个不可修改的变量,实质上仍然是变量,在编 ...

  4. [原]Android开发环境搭建

    [Date]2014-04-20 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Keywords]android . 离线a ...

  5. 简易博客编辑器:玩转document.execCommand命令

    xhEditor是基于jQuery开发的跨平台轻量可视化XHTML编辑器,基于LGPL开源协议发布.今天就把它山寨一下. 上几张图,看看效果: 先做出菜单部分:发现是一张背景图片,所以用图片映射的方法 ...

  6. sql-表值函数tvf

    带有参数的视图 create function fn_fenye (@count as int,@page as int) returns table as return select * from ...

  7. BNUOJ-15505 Largest Rectangle in a Histogram DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=15505 每个h[i]维护两个值l[i]和r[i],分别表示大于h[i]的左边最远距离和小于 ...

  8. MAC OS安装wget

    MAC下没有wget工具,不习惯curl,使用起来还是很不方便的.下载了一个wget源码吧,编译安装.sudo curl -O http://ftp.gnu.org/gnu/wget/wget-1.1 ...

  9. nyoj 49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天 ...

  10. Styles and Themes

    1 概念 1.1 style Style是指一个关于组件或窗口的特定显示方式的属性集合,Style.xml资源文件与对应的layout.xml资源文件分开定义.Android中的style使用网页设计 ...