现在的位置: 首页 > 综合 > 正文

SQL基础–> 数据处理(DML、RETURNING、MERGE INTO)

2013年10月01日 ⁄ 综合 ⁄ 共 3606字 ⁄ 字号 评论关闭

--=================================================

--SQL基础--> 数据处理(DMLRETURNINGMERGE INTO)

--=================================================

 

一、常用的DML语句及事物处理

    向表中插入数据(INSERT)

    更新表中数据(UPDATE)

    从表中删除数据(DELETE)

    将表中数据和并(MERGE)

    控制事务(TRANSACTION)

 

二、DML 可以在下列条件下执行:

    向表中插入数据

    修改现存数据

    删除现存数据

    事务是由完成若干项工作的DML语句组成的。

 

三、插入数据

    INSERT 语句语法:

    INSERT INTO table [(column [, column...])]

    VALUES (value [, value...]);

 

    使用这种语法一次只能向表中插入一条数据。

    为每一列添加一个新值。

    按列的默认顺序列出各个列的值。

    INSERT 子句中随意列出列名和他们的值。

    字符和日期型数据应包含在单引号中。

 

    --查看emp表的表结构

       SQL> DESC emp;

        Name                                                  Null?    Type

        ----------------------------------------------------- -------- -----------------------

        EMPNO                                                 NOT NULL NUMBER(4)

        ENAME                                                          VARCHAR2(30)

        JOB                                                            VARCHAR2(9)

        MGR                                                            NUMBER(4)

        HIREDATE                                                       DATE

        SALARY                                                         NUMBER(8,2)

        DEPTNO                                                         NUMBER(2)

 

    1.向表中插入空值

       隐式方式: 在列名表中省略该列的值。

           SQL> INSERT INTO emp(empno,ename,job,salary)    --列出部分列名

             2  VALUES(1234,'Frank','saleman',8000);

 

           1 row created.

 

           SQL> SELECT  * FROM emp WHERE ename='Frank';

 

               EMPNO ENAME                          JOB              MGR HIREDATE      SALARY     DEPTNO

           ---------- ------------------------------ --------- ---------- --------- ---------- ----------

                1234 Frank                          saleman                              8000

 

       显示方式: VALUES 子句中指定空值NULL

           注意此处省略了列列表,当列的列表被省略时,则values关键字中应当为所有的字段列提供列值

           SQL> INSERT INTO emp VALUES(100,'Jack','manager',null,null,20000,10);

 

           1 row created.

 

    2.插入指定的值

       SYSDATE 记录当前系统的日期和时间。

           SQL> INSERT into EMP(empno,ename,job,hiredate,salary)

             2  VALUES(1235,'Tony','boy',sysdate,7000);

 

           1 row created.

 

           SQL> ALTER SESSION SET nls_date_format= 'yyyy-mm-dd hh24:mi:ss';

 

           Session altered.

 

           SQL> SELECT * FROM emp WHERE ename = 'Tony';

 

               EMPNO ENAME           JOB              MGR HIREDATE                SALARY     DEPTNO

           ---------- --------------- --------- ---------- ------------------- ---------- ----------

                1235 Tony            boy                  2010-06-28 13:48:59       7000

 

       插入特定的日期值

           SQL> INSERT INTO emp

             2  VALUES(1236,'Ben','IT',null,TO_DATE('JUN 28 2010','MON DD YYYY'),3000,20);

   

    3.在列中使用单引号和双引号

       --单引号的使用

           SQL> INSERT INTO emp VALUES

             2  (1238,'Dan','Malley''K','',sysdate,2900,20);

 

           1 row created.   

          

       --双引号的使用 

           SQL> INSERT INTO emp VALUES

             2  (1239,'Dane','A "Big" L','',sysdate,2900,20);

 

           1 row created.

 

           SQL> SELECT * FROM emp WHERE ename LIKE 'Dan%';

 

               EMPNO ENAME              JOB              MGR HIREDATE                SALARY     DEPTNO

           ---------- ------------------ --------- ---------- ------------------- ---------- ----------

                1238 Dan                Malley'K             2010-06-28 14:04:35       2900         20

                1239 Dane               A "Big" L            2010-06-28 14:07:12       2900         20

               

    4.从其它表中拷贝数据(利用子查询向表中插入数据)

       INSERT 语句中加入子查询。

       不必书写VALUES 子句。

       子查询中的值列表应与INSERT 子句中的列名对应

       --克隆表结构   

           SQL> CREATE TABLE test AS SELECT * FROM scott.emp WHERE 0 = 1;

 

           Table created.

 

       --使用select 子句插入新值

           SQL

抱歉!评论已关闭.