ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PL/SQL学习笔记(四)

PL/SQL学习笔记(四)

原创 Linux操作系统 作者:yanxiaojun_007 时间:2009-05-24 13:27:43 0 删除 编辑

数据操作语句:

插入:INSERT INTO TABLE(字段1,字段2....)VALUES(值1,值2....)**博客首页d#cRx4UV
 一次插入只插入一行。字符和日期值需要单引号扩起。**博客首页,^-F s8JL2]
 插入空值:**博客首页tP/p+LVv}
  方法一:隐示插入,插入时省略列名系统就会默认省略的列为NULL。
8U G1]8o'?0  方法二:显示插入,在插入时指定列的值为空。

 注:(1)值的个数不能少于列名的个数。
O4I#Jc;e-G+W6J`j o/t0     (2)注意非空属性的列,不能插入空值。
`4_ V.Cj0WITH CHECK OPTION 视图约束。 
6r.U_4nn |0UID 当前数据库用户ID
W\+@"i V#YrG(^"n0  **博客首页I4OFq\E:U
在插入日期的时候最好用TO_DATE来控制输入格式。

可以创建一个脚本用 &变量名 的形式来用一个插入语句实现多行的插入(在值列表里用 &变量名)。

插入中的子查询:将另一个表中的内容都插入被插入的表中。**博客首页`rF I Q%?*uk d\0@
insert into sales_reps(id,name,salary)
/S5NT%a&w'_(x2^3jFv0select employee_id,last_name,salary from employees where employee_id>100;
%sjO+k2]klW0可以在子查询中做运算后插入到被插入表中。
0c.S'bV:xpnJh"u#g0不要使用VALUES子句。**博客首页*fnr9N.b9oN` h
在子查询中的列数必须匹配 INSERT 语句中的列数。

 

**博客首页 Dl sJXQs,{
删除

DELERT FROM TABLE WHERE 条件;**博客首页.H3I0} q9i'tl/Mr
删除所有符合 WHERE 条件的行。

基于子查询的删除。

注意及联删除。

 


T*_7RHN[0更新:**博客首页7e9kK2J:k+a1|z
UPDATE TABLE SET 列名1=值1,列名2=值2.....WHERE 条件;
3dO^ C_Z U6^ X%];R-U+E/O0如果更新错误,要用ROLLBACK回滚。

利用子查询更新另外表中的数据,在 SET 后和 WHERE 后都可以利用子查询语句。

更新的时候要注意参照完整性约束。**博客首页/M#|*@^5d8F k
子表的外键字段值必须是父表主键字段值的真子集。

**博客首页$H9nQ7O0lRW1y_
 DEFAULT+‘’  默认值**博客首页uIbW6{
在创建表的时候用,在第三个参数的位置上。
.^M p [:Y0例:**博客首页Kq d%}l-\;j
CREATE TABLE A**博客首页 |)F;w)L b2`^.j
**博客首页PV T6nF F
 C1 CHAR(10) DEFAULT**博客首页oq&tn n+ws1c
  .
"X.BzEJv(M/S Kj0  .**博客首页RT [4A$Y8S:Syr#u
  . **博客首页I _h:Q%T w
) **博客首页i6}(i__
在修改的时候,如果先给DEFAULT赋值的话,
1ix[#rF;`P7p0可以直接用 列名=DEFAULT,使列名回复为默认值。

 

 


2Pb*~l\4w@3blu0MERGE语句

提供了对表根据条件进行插入或者更新的能力。**博客首页n&tO| z(x9d W
如果行存在则执行UPDATE,如果不存在则执行INSERT。

避免了单独的修改。**博客首页CH3K0y^
提高了性能,更便于使用。**博客首页+k[B;pSo K^RS
对于数据库应用很有益。

语法:别名AL**博客首页A A0v m:m-a
MERGE INTO table_name(目的表) table_alias USING (table/view/sub_query)//数据来源(可以用子查询)  alias(别名)**博客首页 I Z:p^7dE8`d
on(连接条件)
vN!Y!M||F%\0WHEN MATCHED THEN UPDATE SET(关键字) (修改目的表)
xQGx%Vx7D;AT*[$I0目的表AL.col1=原表AL.col_var1**博客首页s2ZF5M3g v
目的表AL.col2=原表AL.col2_var2
B/C+E_!P X z'C0WHEN NOT MATCHEN THEN(关键字)
7o$Y\6as0INSERT (目的表AL.COL_LIST)
$xJ"yI)S(MMW6u0VALUES(原表AL.COL_VARS);(插入原表)

create table newtable_name(新表) as select * from oldtable_name(原表) where 1=0;
,\)l%gwf fWv z2r0 将原表中的结构复制到新表中,但具体的数据项不进行复制。

 

事务(transaction):由被逻辑组织在一起的多个DML语句的构成。
#@cx&|7AC `X,{K0COMMIT:提交。
1t J*E0S{^,Vi[4i!oP0ROLLBACK:回滚。
R*}#u/k[x O#Js6O0SAVEPOINT:存储点,只在事务执行过程中有效,事务结束即被释放。

事务的组成:
8SP)Czj~#s0一组相同改变特性的DML语句;**博客首页)c^;D Ao-{v
一个DDL:数据定义语句;**博客首页t D4JoN8z},U6~
一个DCL:权限控制语句;

**博客首页4z5RL)p3GQ0X7am,n:_
建立存储点:**博客首页\(a&|*A"y^J c%K
例:SAVEPOINT A;**博客首页sgkJU4R
   .**博客首页.jm~z1u
 .**博客首页 T!pJ*b{v#w0^
 .**博客首页 Z-H!ut(bR u5Q
ROLLBACK TO A;

 

事务的开始:
R {,Pkp cjo;C;X ~0开始于第一个DML SQL语句执行时开始

结束的时候是在:**博客首页Is6c A ww8fq
*、一个COMMIT或ROLLBACK被执行的时候。**博客首页#\6]\^8{N
*、一个DDL或DCL语句被执行(自动提交)注意*&*!(隐式)**博客首页U:r!X`R^^+r
*、用户退出SQLPLUS(隐式) 
$W&c)p%K FH0*、系统崩溃(隐式)

语句级回滚:

ORACLE 服务器执行隐式的存储点。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15037413/viewspace-600895/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-24

  • 博文量
    51
  • 访问量
    51700