Oracle PL/SQL Tutorial/Insert Update Delete/Insert Select

Материал из SQL эксперт
Перейти к: навигация, поиск

Insert bulk by insert ... into ... select

SQL>
SQL> CREATE TABLE project (
  2    pro_id              NUMBER(4),
  3    pro_name            VARCHAR2(40),
  4    budget          NUMBER(9,2),
  5    CONSTRAINT project_pk   PRIMARY KEY (pro_id)
  6  );
Table created.
SQL>
SQL>
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1001, "A",12345);
1 row created.
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1002, "ERP",23456);
1 row created.
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1003, "SQL",34567);
1 row created.
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1004, "CRM",45678);
1 row created.
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1005, "VPN",56789);
1 row created.
SQL>
SQL>
SQL> SET ECHO ON
SQL> INSERT INTO PROJECT (pro_id, pro_name)
  2     SELECT pro_id+8000,
  3            SUBSTR(pro_name,1,31) || " Overhead"
  4     FROM project;
5 rows created.
SQL>
SQL>
SQL>
SQL> drop table project ;
Table dropped.


Insert into select

SQL>
SQL>
SQL> CREATE TABLE employee (
  2  id          number,
  3  name        varchar(100),
  4  birth_date  date,
  5  gender      varchar2(30) );
Table created.
SQL>
SQL>
SQL> INSERT INTO employee (id,name,birth_date,gender )
  2  SELECT 200,"Chris",NULL,"MALE" from   DUAL;
1 row created.
SQL>
SQL>
SQL> drop table employee;
Table dropped.


Insert into select with where clause

SQL>
SQL> CREATE TABLE employee (
  2  id          number,
  3  name        varchar(100),
  4  birth_date  date,
  5  gender      varchar2(30) );
Table created.
SQL>
SQL> INSERT INTO employee (id,name,birth_date,gender ) SELECT 300,"H",NULL,"MALE" from   dual d
  2  where not exists (SELECT 1 FROM   employee x WHERE  x.id = "300" );
1 row created.
SQL>
SQL> select * from employee;
    ID
------
NAME
----------------------------------------------------------------------
BIRTH_DATE GENDER
---------- ------------------------------
   300
H
null       MALE

1 row selected.
SQL>
SQL>
SQL> drop table employee;
Table dropped.