您的位置:首页 > 数据库 > Oracle

Oracle 学习1

2004-11-21 10:46 756 查看
 http://dev.csdn.net/develop/article/49/article/49/49678.shtm
【序】
为了在工作中写存储过程,。同时,我准备写学习《精通Oracle 10g PL/SQL编程》(水利水电)一书的学习笔记。

这些你能不能写全:
Data Query Language--SELECT
Data Manipulation Language--INSERT,UPDATE,DELETE
Transactional Control Language--COMMIT,ROLLBACK,SAVEPOINT
Data Definition Language--CREATE TABLE,ALTER TABLE,DROP TABLE
Data Control Language--GRANT,REVOKE
一次应聘面试中,我就没能答出此类问题。想来只有惭愧,无他。
PL/SQL能将SQL语句组合成块,一次传输,降低了网络开销,此等高效,往日用SQL Server时可没这等好事。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

PL/SQL块结构

DECLARE
/*定义部分*/
BEGIN
/*执行部分*/
EXCEPTION
/*例外处理部分*/
END; /*块结束标记,此处有分号*/
/    /*这是命令行中的结束符*/
 

四大块类型
   匿名块、命名块、子程序(过程、函数、包)、触发器
四大变量类型
标量(Scalar)、复合(Composite)、参照(Reference)、LOB(Large Object)
Composite:PL/SQL记录、PL/SQL表、嵌套表、VARRAY
参照:游标变量(REF CURSOR)、 对象类型变量(REF obj_type)
       LOB:内部LOB(CLOB,BLOB,NCLOB)、外部LOB(BFILE)

DECLARE
v_num NUMBER(6,2); ß变量定死了长度,将来无法动态改变,只能手动修改
v_num tbl.num%TYPE; ß动态确定新的类型和长度
 

挺像Delphi: 1 变量赋值 :=  2记录 RECORD
 

在命令行中写SQL语句时注意:单条结束要用; 模块结束要用/ 才能显示你的查询
 

不重复显示查询:SELECT DISTINCT *FROM A_TBL
 

处理<
4000
/span>NULL:NVL(expr1,expr2) 如果expr1是null则返回expr2;如果不是则返回expr1两者类型要匹配
 

删除表数据并释放空间:TRUNCATE TABLE
 

Oracle不允许其他用户读取脏数据(未提交事务),确保数据库数据的读一致性
加锁,确保同一时间对文件的操作只能有一人
 

Savepoint 用于取消部分事务,事务结束后自动删除所有保存点。
 

只读事务:SET TRANSACTION READ ONLY;
                或者:exec dbms_transaction.read_only
 

分组函数
MAX、MIN、AVG、SUM、COUNT、VARIANCE(方差)、STDDEV(标准偏差)
GROUP BY用于对查询结果进行分组统计――比如每组最大值
HAVING用于限制分组显示结果――比如最大值小于2800
ROLLUP在原统计结果基础上生成横向小统计
CUBE在原统计结果基础上生成纵向小统计
 

Oracle的流程控制语句

IF语句
IF      THEN
ELSIF  THEN
ELSE
END IF;
 

CASE语句(9i)
CASE
   WHEN   THEN
ELSE
END CASE;
 

基本循环
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />LOOP
   EXIT[WHEN  ];
END LOOP;
 

WHILE循环
WHILE   LOOP
END LOOP;
 

FOR       循环
FOR _v in[REVERSE] lo..hi LOOP
END LOOP;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息