开发者社区> 涂作权> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入

简介:  1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date definition Language)
+关注继续查看


1相关术语

语句

含义

操作

DML语句

Data Manipulation Language

数据库操作语言

insert update delete select

DDL语言

Date definition Language

数据库定义语言

create table;create view index sequence synonvm同义词,truncate table

DCL语言

(Data control Language)

数据控制语言

commit rollback savepoint

2数据库认证

Oracle数据库管理员认证专员(OCA

Oracle Certified Associate

Oracle数据库管理员认证专家(OCP

Oracle Certified Professional

Oracle数据库管理员认证大师(OCM

Oracle Certified Master

3 insert语句

A插入一个完整记录:

insert into emp values (1, 'aaa', 'clerk',7092, '17-12-80', 8000, NULL, 20);

B插入部分记录:

insert into emp(empno,ename,deptno)values(2,'bb',20);

C插入空值(显示和隐式)

D插入日期

insert into empvalues(3,'ccc','clerk',7092,sysdate,8000,NULL,20);

E创建脚本 取地址符 & ,通过这种方式可以让用户自定义输入

SQL> insert into emp(empno,ename,deptno)

      2 values(&empno,&ename,20);

输入 empno的值: 4

输入 ename的值: 'cccc4'

原值   2: values(&empno,&ename,20)

新值   2: values(4,'cccc4',20)

 

已创建 1行。

F select ename,job,&tt from emp;

4批量插入数据

A10号部门的员工copy到另外一个表中

创建表结构

create table emp10

    as

       select * from emp where 1=2;

批量插入数据

insert into emp10

select * from emp where deptno = 10;

5 update语句,语法结构如下:

UPDATE  table

            SET   column = value [, column = value, ...]

                  [WHERE           condition];

update emp10

set deptno = 20

where empno = 7782;

6 delete语句

语法结构:

DELETE [FROM] table

[WHERE condition];

7 deletetruncate的区别

delete(删除表的数据)truncate表(truncate实质把表drop然后重新建表)区别:

1delete逐条删除,truncate先摧毁在重建

2delete语句是DML语句,truncateDDL语言

  A DML语句可以闪回 做错的并且提交了,可以通过闪回,撤销操作

  B DDL语言不可以闪回 flashback

3delete是逐条删除,会产生碎片,truncate不会产生碎片

  行移动功能:要开启闪回功能,必须要开启行移动功能。

4delete不会释放空间 truncate

5delete可以回滚 truncate不可以

6oracle delete快,mysql truncate

网络上关于deletetruncate的区别的介绍:

语法:

delete from tablename;

truncate table tablename;

区别:

1、 delete from后面可以写条件,truncate不可以

2、 delete from记录是一条条删的,所删除的每条记录都会进日志,而truncate一次次删掉整个页,因此日志里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事物日志空间较少。

3、 delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。

4、 当使用行锁执行DELETE语句时,将锁定表中各行以便删除。Truncate始终锁定表和页,而不是锁定各行。

5、 如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,truncate后,种子会恢复初始。

6、 truncate不会触发delete的触发器,因此truncate操作不记录各个行删除。

总结:

1、 truncatedelete只删除数据,不删除表的结构(定义)

drop语句将删除表的结构,被依赖的约束(constrain,触发器(trigger,索引(index;依赖于该表的存储过程/函数将保留,但是变为invalid状态。

2、 delete语句是dml操作,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发truncate,dropddl操作,操作立即生效,原数据不放到rollback segment中,不能回滚。操作不触发trigger.

3、 delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不动,显然drop语句将表所占用的空间全部释放,truncate语句缺省情况下见空间释放到minextentsextent,除非使用reuse storage;truncate会将高水线复位(回到最开始)。

4、 速度,一般来说:drop > truncate > delete

5、 安全性:小心使用droptruncate,尤其没有备份的时候,否则哭都来不及。

6、 使用上,想删除部分数据行用delete,注意带上where子句。回滚段要足够大。想删除表,当然用drop,想保留表而将所有数据删除。如果和事务无关,用truncate即可,如果和事务有关,或者想触发trigger,还是用delete,如果是整理表内部的碎片,可以用truncate跟上reuse stroage,在重新导入/导入数据。

8从文件中导入数据,通过命名delete truncate删除表数据

从文件导入数据

SQL> set timing off;

SQL> set feedback off;

SQL> drop table testdelete purge;

SQL> @c:\Sql.sql;

SQL>

SQL> set timing on; //最后删除数据表的时候,把时间打开,记录时间

SQL> delete from testdelete;

已用时间: 00: 00: 00.09

从文件导入数据:

set timing off;

@c:\Sql.sql;    

set timing off; 

select count(*) from testdelete;

set timing on; //最后删除数据表的时候,把时间打开,记录时间

truncate table testdelete;

已用时间: 00: 00: 00.51

总结:

truncate表一般比delete表的速度快,但Oracle做了优化,delete数据的时候更快些!

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle运维笔记之IMPDP导入数据报错ORA-00943
Oracle运维笔记之IMPDP导入数据报错ORA-00943
431 0
sql server 带有OUTPUT的INSERT,DELETE,UPDATE
原文:sql server 带有OUTPUT的INSERT,DELETE,UPDATE OUTPUT是SQL SERVER2005的新特性.
943 0
oracle中execute immediate的使用(select/insert/update/delete)(转)
execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; execute immediate 'sql' using [in|out|in out...
1235 0
oracle merge和批量insert实操
create table small_customers (customer_id number, sum_orders number) ; create table medium_customers (customer_id number, sum_orders number) ; create table large_customers (customer_id
3381 0
触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作
本文参考:http://www.cnblogs.com/lyhabc/articles/3236985.html   --触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作 2013-6-18-- 建测试表USE [pratice]GOc...
758 0
+关注
涂作权
java,架构,编程语言相关专家
1234
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载