delete和truncate操作

SQL> --查询表的结构
SQL> desc student;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
SNO NOT NULL NUMBER(4)
TNO NOT NULL NUMBER(4)

SQL> insert into student values(1,1);
insert into student values(1,1)
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (T09.FK_TEACHER_STUDENT) - 未找到父项关键字

SQL> --因为teacher表中都没有id为1的,所有会报错
SQL> desc teacher;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
TNO NOT NULL NUMBER(4)
TNAME NOT NULL VARCHAR2(20)
TID VARCHAR2(20)
BIRTHDAY DATE
SAL NUMBER(7,2)
SEX CHAR(2)

SQL> --给teacher表新增数据
SQL> insert into teacher(tno,tname) values(1,‘黑黑‘);

已创建 1 行。

SQL> --查询teacher
SQL> select tno,tname from teacher t;

TNO TNAME
---------- ----------------------------------------
1 黑黑

SQL> select t.tno,t.tname from teacher t;

TNO TNAME
---------- ----------------------------------------
1 黑黑

SQL> --提交事务
SQL> commit;

提交完成。

SQL> --删除teacher 表中的数据
SQL> delete * from teacher;
delete * from teacher
*
第 1 行出现错误:
ORA-00903: 表名无效

SQL> delete from teacher;

已删除 1 行。

SQL> select * from teacher;

未选定行

SQL> --回滚事务
SQL> rollback;

回退已完成。

SQL> select * from teacher;

TNO TNAME
---------- ----------------------------------------
TID BIRTHDAY SAL SEX
---------------------------------------- -------------- ---------- ----
1 黑黑

SQL> --truncate的删除
SQL> select * from teacher;

TNO TNAME
---------- ----------------------------------------
TID BIRTHDAY SAL SEX
---------------------------------------- -------------- ---------- ----
1 黑黑

SQL> truncate table teacher;
truncate table teacher
*
第 1 行出现错误:
ORA-02266: 表中的唯一/主键被启用的外键引用

SQL> --这个错误是因为student表中有外键关联teacher表
SQL> truncate table teacher;

表被截断。

SQL> --回滚事务
SQL> rollback;

回退已完成。

SQL> select * from teacher;

未选定行

SQL> --delete可以有条件
SQL> --首先新增两条数据
SQL> insert into teacher(tno,tname) values(1,‘a‘);

已创建 1 行。

SQL> insert into teacher(tno,tname) values(2,‘b‘);

已创建 1 行。

SQL> select * from teacher;

TNO TNAME
---------- ----------------------------------------
TID BIRTHDAY SAL SEX
---------------------------------------- -------------- ---------- ----
1 a

2 b

SQL> delete from teacher where tno=1;

已删除 1 行。

SQL> select * from teacher;

TNO TNAME
---------- ----------------------------------------
TID BIRTHDAY SAL SEX
---------------------------------------- -------------- ---------- ----
2 b

SQL> --delete 删除可以有条件限制! truncate 无条件截断表!表中的数据全部丢失! 但是表结构还在!
SQL> spool off;

时间: 2024-08-05 23:14:58

delete和truncate操作的相关文章

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

 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 s

oracle中delete drop truncate的用法和区别

数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放掉表空间或者扩容表空间来解决问题. 一般当系统中大量使用分区表,而针对分区表清除数据,是不会释放表空间的,必须把分区drop掉,才会释放空间. 下面我们具体了解一下这三个命令: 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在r

oracle中delete、truncate、drop的区别

oracle中delete.truncate.drop的区别 标签: deleteoracletable存储 2012-05-23 15:12 7674人阅读 评论(0) 收藏 举报  分类: oracle(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(c

delete和truncate

delete table a truncate table b 用truncate删除表比delete删除表   逻辑读和cost都有明显的减少 delete 删除并不能释放空间,虽然将很多块的记录删除,但空间依然会保留,oracle在查询时,依然会查询这些块 而truncate是一种释放高水平位的动作,这些空快被回收,空间也就释放掉了. 例子 我们要统计某个大楼的人数,从第1楼道20楼,每个房间都打开检查一下,发现实际情况是一个人都没有. 但问题是打不开房间我们怎么知道没有人呢.这就是dele

Oracle DELETE和TRUNCATE 的区别

语法delete from aa truncate table aa 区别 1.delete from后面可以写条件,truncate不可以. 2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少. 3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页. 4.当使用行锁执行 DELETE 语句

Oracle中的delete和truncate的关系

转自:http://chenxy.blog.51cto.com/729966/168459 1.相同点 a.都可以删除数据,其中truncate用于全表清空数据,而delete可以选择的删除 2.不同点: a.回滚,delete支持事物回滚,而truncate不支持.  延伸:在oracle中事物能回滚,是因为oracle中设计的undo表空间.数据再删除后仍能回滚是因为把数据放到了undo表空间     delte属于DML语言,DML语言需要手动提交事物,可以进行事务回滚 truncate属

MySql的Delete、Truncate、Drop分析

MySql的Delete.Truncate.Drop分析 相同点: truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据 不同点 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop 语句将删除表的结构被依赖的约束(constrain).触发器(trigger).索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态. 2. delete 语句是数据库操作语言(dml),这操作会放到rollb

PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)

2014-06-02 BaoXinjian 一.总论 1. Delete 2. Drop 3. Truncate 4. 例子:一亿条数据中如何删除其中的不符合条件的9999万条,保留剩余部分 二.具体分析 1. Delete / Drop / Truncate 删除方式的区别 (1).删除数据及表定义 truncate和 delete只删除数据不删除表的结构(定义)          drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较

数据库中删除语句Drop.Delete.Truncate的相同点和不同点的比较(举例说明) 数据库删除语句的分别介绍:Delete:用于删除表中的行(注:可以删除某一行:也可以在不删除表的情况下(即意味着表的结构.属性.索引完整)删除所有行)                语法:删除某一行:Delete From 表名称  Where 列名称=值              删除所有行: Delete From 表名称       或     Delete *  From  表名称   Drop: