Oracle之DML

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删除快
		
				
			
			
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值