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. IE兼容性问题解决方案4--form表单在IE下重复提交

    遇到过一种情况,点击提交按钮的时候,在IE下重复提交,而在其他浏览器下正常. 原因:button按钮不设置type时,在IE下被浏览器默认解析为type="submit",用js提 ...

  2. 常规页生命周期(class0620)

    常规页声明周期阶段 阶段                   说明 页请求 开始 页初始化 加载 验证 回发事件处理 卸载 生命周期事件 页事件               典型使用

  3. C++中Const说明

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

  4. 【原创】lua编译时发现缺少readline库

    编译lualua项目,其中用到了lua-5.1版本的源码,编译时提示缺少readline库,找不到readline/readline.h头文件等 发现系统中其实有安装readline库不过没有做链接和 ...

  5. 【hdu3065】病毒侵袭持续中

    题意: 求目标串中每个模式串出现几次 目标串长度<=2000000 模式串<=1000个 模式串长度<=50 题解: 这不就是AC自动机的模板题吗! 求fail树中模式串的子树中有几 ...

  6. nyoj 289 苹果

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...

  7. RC522 射频读卡器模块(MINI型)

    一.硬件: 二.[主芯片介绍] MF RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,是NXP公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读 ...

  8. Oracle10g完全卸载正确步骤

    Oracle卸载要求比较严格,不能简单的卸载就完事了:当然Oracle卸载也没有那么难,只是步骤比较多.Oracle10g还是Oracle11g卸载步骤都是一样的.下边详细介绍一下. 找到Oracle ...

  9. JavaScript 要点(十四)HTML DOM 元素(节点)

    A.创建新的 HTML 元素 如需向 HTML DOM 添加新元素,必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. <div id="div1"> ...

  10. Spring ProxyFactory

    ProxyFactory 是 Spring AOP的实现方式之一.下面介绍下ProxyFactory的用法. 1.接口定义 public interface UserReadService { pub ...