Oracle之DML

来源:互联网 发布:php接口开发教程 编辑:程序博客网 时间:2024/05/17 20:01
1、insert(1)插入单行完整记录SQL> insert into emp values (7523, 'SABER', 'SALESMAN', 7698, '17-12月-89', 8000, NULL, 30);已创建 1 行。(2)插入部分记录SQL> insert into emp(empno, ename, deptno ) values (7555, 'ARCHER', 20);已创建 1 行。(3)创建脚本SQL> insert into emp(empno, ename, deptno ) values (&empno, &ename, 10);输入 empno 的值:  7556输入 ename 的值:  'LUCY'原值    1: insert into emp(empno, ename, deptno ) values (&empno, &ename, 10)新值    1: insert into emp(empno, ename, deptno ) values (7556, 'LUCY', 10)已创建 1 行。(4)批量插入数据eg:把10号部门的员工复制到另外一个表中<1>创建表并复制表结构SQL> create table emp10  2  as  3  select * from emp where 1 = 2;表已创建。<2>检查表是否被创建SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID------------------------------ ------- ----------BONUS                          TABLEDEPT                           TABLEEMP                            TABLEEMP10                          TABLESALGRADE<3>批量插入数据SQL> insert into emp10  2  select * from emp where deptno = 10;已创建4行。<4>查看结果SQL> select * from emp10;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10      7839 KING       PRESIDENT            17-11月-81           5000                    10      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10      7556 LUCY                                                                         102、updateeg:把empty0表中LUCY的薪水更新为2000SQL> update emp10  2  set sal = 2000  3  where empno = 7556;已更新 1 行。SQL> select * from emp10;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10      7839 KING       PRESIDENT            17-11月-81           5000                    10      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10      7556 LUCY                                                 2000                    103、delete(1)删除指定数据SQL> delete from emp10 where empno = 7782;已删除 1 行。SQL> select * from emp10;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7839 KING       PRESIDENT            17-11月-81           5000                    10      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10      7556 LUCY                                                 2000                    10(2)删除整个表中的数据(表结构仍然保留)SQL> delete from emp10;已删除3行。SQL> desc emp10; 名称              是否为空? 类型 ----------------- ---------------- EMPNO             NUMBER(4) ENAME             VARCHAR2(10) JOB               VARCHAR2(9) MGR               NUMBER(4) HIREDATE          DATE SAL               NUMBER(7,2) COMM              NUMBER(7,2) DEPTNO(3)删除表SQL> drop table emp10;表已删除。SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID------------------------------ ------- ----------BIN$ZUZy/M+GRHOxN4RHdrnzpA==$0 TABLEBONUS                          TABLEDEPT                           TABLEEMP                            TABLESALGRADE                       TABLE(4)delete(删除表的数据)和truncate(把表drop然后再重新建表)区别<1>delete逐条删除数据,truncate先摧毁表再重建<2>delete语言是DML语言,truncate是DDL(DML语言可以闪回,DDL语言不可以闪回)<3>delete是逐条删除,会产生碎片,truncate不会产生碎片<4>delete不会释放空间,truncate会释放空间<5>delete可以回滚,truncate不可以回滚<6>在oracle数据库中,delete删除快;而在mysql数据库中,truncate删除快

原创粉丝点击