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 TABLE
DEPT TABLE
EMP TABLE
EMP10 TABLE
SALGRADE
<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 10
2、update
eg:把empty0表中LUCY的薪水更新为2000
SQL> 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 10
3、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 TABLE
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE 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删除快
Oracle之DML
最新推荐文章于 2020-04-03 09:55:23 发布