PL/SQL学习笔记(四)

王朝mssql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

数据操作语句:

插入:INSERT INTO TABLE(字段1,字段2....)VALUES(值1,值2....)

一次插入只插入一行。字符和日期值需要单引号扩起。

插入空值:

方法一:隐示插入,插入时省略列名系统就会默认省略的列为NULL。

方法二:显示插入,在插入时指定列的值为空。

注:(1)值的个数不能少于列名的个数。

(2)注重非空属性的列,不能插入空值。

WITH CHECK OPTION 视图约束。

UID 当前数据库用户ID

在插入日期的时候最好用TO_DATE来控制输入格式。

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

插入中的子查询:将另一个表中的内容都插入被插入的表中。

insert into sales_reps(id,name,salary)

select employee_id,last_name,salary from employees where employee_id>100;

可以在子查询中做运算后插入到被插入表中。

不要使用VALUES子句。

在子查询中的列数必须匹配 INSERT 语句中的列数。

删除

DELERT FROM TABLE WHERE 条件;

删除所有符合 WHERE 条件的行。

基于子查询的删除。

注重及联删除。

更新:

UPDATE TABLE SET 列名1=值1,列名2=值2.....WHERE 条件;

假如更新错误,要用ROLLBACK回滚。

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

更新的时候要注重参照完整性约束。

子表的外键字段值必须是父表主键字段值的真子集。

DEFAULT+‘’ 默认值

在创建表的时候用,在第三个参数的位置上。

例:

CREATE TABLE A

C1 CHAR(10) DEFAULT

.

.

.

在修改的时候,假如先给DEFAULT赋值的话,

可以直接用 列名=DEFAULT,使列名回复为默认值。

MERGE语句

提供了对表根据条件进行插入或者更新的能力。

假如行存在则执行UPDATE,假如不存在则执行INSERT。

避免了单独的修改。

提高了性能,更便于使用。

对于数据库应用很有益。

语法:别名AL

MERGE INTO table_name(目的表) table_alias USING (table/view/sub_query)//数据来源(可以用子查询) alias(别名)

on(连接条件)

WHEN MATCHED THEN UPDATE SET(要害字) (修改目的表)

目的表AL.col1=原表AL.col_var1

目的表AL.col2=原表AL.col2_var2

WHEN NOT MATCHEN THEN(要害字)

INSERT (目的表AL.COL_LIST)

VALUES(原表AL.COL_VARS);(插入原表)

create table newtable_name(新表) as select * from oldtable_name(原表) where 1=0;

将原表中的结构复制到新表中,但具体的数据项不进行复制。

事务(transaction):由被逻辑组织在一起的多个DML语句的构成。

COMMIT:提交。

ROLLBACK:回滚。

SAVEPOINT:存储点,只在事务执行过程中有效,事务结束即被释放。

事务的组成:

一组相同改变特性的DML语句;

一个DDL:数据定义语句;

一个DCL:权限控制语句;

建立存储点:

例:SAVEPOINT A;

.

.

.

ROLLBACK TO A;

事务的开始:

开始于第一个DML SQL语句执行时开始

结束的时候是在:

*、一个COMMIT或ROLLBACK被执行的时候。

*、一个DDL或DCL语句被执行(自动提交)注重*&*!(隐式)

*、用户退出SQLPLUS(隐式)

*、系统崩溃(隐式)

语句级回滚:

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航