Keep Thinking! My Yahoo ID-silvercheng2006@yahoo.com

常用的DML命令

上一篇 / 下一篇  2009-02-02 00:43:29 / 个人分类:数据库

DML是data manipulation language的缩写,是数据操纵语言的意思。主要用于对数据库表和视图进行操作。一般来说,DML是指select,insert,update,delete。在Oracle 11g中,DML还包括CALL,EXPLAIN PLAN,LOCK TABLE和MERGE语句。

a. 使用INSERT语句插入表数据
(1)一般insert语句的使用
insert语句主要用于向表中插入数据,其语法是:
INSERT INTO [user.]table[@db_link][(column1[,column2]...)]]
VALUES(express1[,express2]...)

table:要插入的表名
db_link:数据库链接名
column:表的列名
express:表达式
values:给出要插入的值列表
(2)多表insert语句的使用
oracle从9i开始可以用一条insert语句实现向多个表中插入数据:
INSERT [ALL] [conditional_insert_clause]
[insert_into_clause values_clause](subquery)

subquery:子查询语句,可以是任何合法的select语句

conditional_insert_clause如下:
[ALL][FIRST]
[WHEN condition THEN][insert_into_clause values_clause]
[ELSE] [insert_into_clause values_clause]
此语法包含了无条件和有条件两种情况:

无条件INSERT ALL:
INSERT ALL
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id>200;
因为没有附加任何限制于检索出的记录,所以所有检出返回数据将根据其列名插入相应的表中。

有条件的INSERT ALL:
INSERT ALL
WHEN SAL>10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR>200 THEN
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id>200;

这里将进行比较,返回的记录将比较其SAL,如果大于10000则插入SAL_HISTORY,同理,MGR大于200的记录将插入MGR_HISTORY,其余都将丢弃。

有条件的FIRST INSERT:
FIRST和ALL的区别在于当遇到第一个求值为true的子句之后,停止对WHEN子句求值,而ALL不论求值是否为true。
INSERT FIRST
WHEN SAL>10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN SAL<5000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR>200 THEN
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id>200;

上面的例子中,如果第一个when子句求值为true,则其后的when子句将不会被执行,反之将直至遇到第一个满足条件的子句执行为止。


b. 使用update语句更新表数据

在需要修改表中的数据时,可使用update命令,命令由三部分组成:
update后跟一个或者多个要修改的表,必选部分。
set后跟一个或多个要修改的表列,也是必选。
where后跟更新限定条件,这部分可选的。

例如把customer表的state—id为MA的客户的sales改为0,那么语句就是:
update customer set sales=0 where state-id=‘MA';

c. 使用delete语句删除表数据

该命令组成为:
关键字delete from后跟表名,必选
关键字where后跟删除条件,可选

删除customer表state-id为MA的记录,如下:
delete from customer where state-id=’MA‘;

d. TRUNCATE语句的使用
truncate table语句一般用于删除表中的所有行,是一种快速,无日志记录的方法。truncate table与不带where子句的delete语句功能上相同,不过truncate table的速度更快,并且使用更少的系统资源和事务日志资源。

Silver

Written @00:30 2009-2-2


TAG: 数据库

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2020-07-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2961
  • 日志数: 8
  • 建立时间: 2009-01-16
  • 更新时间: 2009-02-02

RSS订阅

Open Toolbar