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;
(以上内容来自王硕老师)