好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle PL / SQL 插入insert

INSERT是SQL的数据操作语言的一部分的SQL关键字之一。

DML可以操作关系数据库中的数据。

让我们从INSERT语句的第一种形式开始,INSERT ... VALUES。

 

INSERT ... VALUES

以下代码显示如何使用DML的INSERT VALUES子语句。

 
INSERT INTO authors ( id, name, birth_date, gender ) 
VALUES ( 100, 'Tom', to_date('19830823', 'YYYYMMDD'), 'MALE' ); 

COMMIT; 
 

上述代码中使用的INSERT VALUES语句的语法如下:

 INSERT INTO <table_name> ( 
<column_name_1>, 
<column_name_2>, ... 
<column_name_N> ) 
VALUES ( 
<column_value_1>, 
<column_value_2>,... 
<column_value_N> ); 
 

<table_name>是要插入值INSERT VALUES INTO的表的名称,<column_name>是您要插入值的表中的一个列<column_value>是要放入相应列的值。

INSERT VALUES语句之后的COMMIT语句提交您在数据库中插入的值。

以下两个insert语句将数据添加到author_books表中。

 INSERT INTO author_books ( id, author_id, title, publish_date ) 
VALUES ( 10, 100, 'CSS', to_date('201000101', 'YYYYMMDD') ); 

INSERT INTO author_books ( 
id, author_id, title, publish_date ) 
VALUES ( 20, 100, 'Learn CSS', to_date('20200101', 'YYYYMMDD') ); 

COMMIT; 

execute SYS.DBMS_STATS.gather_table_stats(USER, 'AUTHOR_PUBLICATIONS');  

 

 

Insert . . . Select

有一个第二种形式的INSERT语句,可以是非常有用的。

INSERT语句的第二种形式使用SELECT语句,而不是列值列表。

以下代码显示如何使用INSERT ... SELECT语法插入数据条目。

 
INSERT INTO authors ( 
id, name, birth_date, gender ) 
SELECT 200, 'Jack', to_date('19410101', 'YYYYMMDD') 'MALE' 
FROM dual; 

COMMIT; 
 

INSERT SELECT语句的语法如下:

 
INSERT INTO <table_name> ( 
<column_name_1>, 
<column_name_2>, ... 
<column_name_N> ) 
SELECT <column_value_1>, 
<column_value_2>,... 
<column_value_N> 
FROM <from_table_name> ...; 
 

<table_name>是您要插入的表的名称INSERT INTO <column_name>是您要插入值的表中的一个列<column_value>是要放入对应列<from_table_name>的值是从中选择值的表或表。

以下代码显示了Conditional INSERT ... SELECT语句。

 
INSERT INTO authors ( id, name, birth_date, gender ) 
SELECT 300, 'Jane', to_date('19830101', 'YYYYMMDD')09 'MALE' 
FROM dual d 
WHERE not exists ( SELECT 1 FROM authors x WHERE x.id = 300 ); 

COMMIT; 
 

SQL SELECT语句中的子查询将检查数据库中是否存在所需的条目。

如果是这样,Oracle不会尝试INSERT; 否则,它添加行。

 

DUAL表

dual是由具有一列和一行的oracle数据库(所有者SYS)拥有的表。

要评估1 + 1的添加,请执行以下SQl SELECT语句:

 SELECT 1 + 1 FROM dual; 
 

快速找出oracle如何评估你对内置函数length()的使用。

 SELECT length(NULL) FROM dual;
SELECT nvl(length(NULL), 0) FROM DUAL; 
 

双表允许你在代码中没有任何巨大承诺的情况下进行攻击。

 

实例2

以下代码显示了用于插入日期的出版物的DML。

 
INSERT INTO author_books ( 
id, author_id, title, publish_date ) -- w ww.jav a  2s  . c  o m
VALUES ( 30, 200, 'Database', to_date('20030101', 'YYYYMMDD') ); 

INSERT INTO author_books ( 
id, author_id, title, publish_date ) 
VALUES ( 40, 200, 'Learn SQL', to_date('20000101', 'YYYYMMDD') ); 

INSERT INTO author_books ( 
id, author_id, title, publish_date ) 
VALUES ( 50, 200, 'Learn HTML', to_date('20020101', 'YYYYMMDD') ); 

INSERT INTO author_books ( 
id, author_id, title, publish_date ) 
VALUES ( 60, 200, 'Learn Database', to_date('20050101', 'YYYYMMDD') ); 

COMMIT; 
 

下面的代码显示了插入达文出版物的DML。

 INSERT INTO author_books ( id, author_id, title, publish_date ) 
SELECT 70, 300, 'Learn SQL', to_date('20000101', 'YYYYMMDD') 
FROM dual -- www  . j ava  2  s .  c  o m
where not exists ( SELECT 1 FROM author_books x WHERE x.author_id = '300' AND x.title = 'Learn SQL' ); 

INSERT INTO author_books ( id, author_id, title, publish_date ) 
SELECT 80, 300, 'Learn HTML', to_date('20020101', 'YYYYMMDD') 
FROM dual 
where not exists ( SELECT 1 FROM author_books x WHERE x.author_id = '300' AND x.title = 'Learn HTML' ); 

COMMIT; 
execute SYS.DBMS_STATS.gather_table_stats(USER, 'AUTHOR_PUBLICATIONS');  

查看更多关于Oracle PL / SQL 插入insert的详细内容...

  阅读:39次

上一篇

下一篇

第1节:Oracle PL / SQL CASE 语句    第2节:Oracle PL / SQL CHAR VARCHAR2    第3节:Oracle PL / SQL INTERVAL数据类型    第4节:Oracle PL / SQL loop循环    第5节:Oracle PL / SQL for loop循环    第6节:Oracle PL / SQL goto 语句    第7节:Oracle PL / SQL update更新数据    第8节:Oracle PL / SQL包    第9节:Oracle PL / SQL 存储过程    第10节:Oracle PL / SQL 函数    第11节:Oracle PL / SQL变量    第12节:Oracle PL / SQL变量范围    第13节:Oracle PL / SQL TIMESTAMP数据类型    第14节:Oracle PL / SQL 聚合函数大全    第15节:Oracle PL/SQL Views 视图    第16节:Oracle PL / SQL 表 table    第17节:Oracle PL/SQL Delete删除数据    第18节:Oracle PL/SQL Select 查询    第19节:Oracle PL/SQL 教程    第20节:Oracle PL / SQL注释    第21节:Oracle PL / SQL触发器Triggers    第22节:Oracle PL / SQL变量值    第23节:Oracle PL / SQL块结构    第24节:Oracle PL / SQL关联数组    第25节:Oracle PL / SQL文字    第26节:Oracle PL / SQL参数    第27节:Oracle PL / SQL运算符    第28节:Oracle PL/SQL NUMBER    第29节:Oracle PL/SQL if 语句    第30节:Oracle PL/SQL while循环    第31节:Oracle PL / SQL约束    第32节:Oracle PL / SQL 插入insert    第33节:Oracle PL / SQL数据类型    第34节:PL / SQL 分析函数大全