Oracle——数据操作DML(四)

sql 复制代码
CREATE TABLE STU1(
	SNO VARCHAR2(10) PRIMARY KEY,
	SNAME VARCHAR2(10),
	SGENTLE VARCHAR2(2),
	SAGE NUMBER(2),
	SBIRTH DATE,
	SDEPT VARCHAR2(20));
	INSERT INTO STU1 VALUES('0001','张三','男',18,to_date('2000-01-11','yyyy-mm-dd'),'计算机');
	INSERT INTO STU1 VALUES('0002','李四','男',19,'12-6月-00','艺术');
  INSERT INTO STU1 VALUES('0003','王五','男',21,'12-6月-98','外语');
  INSERT INTO STU1 VALUES('0004','秦六','女',20,'12-6月-99','工商管理');
  INSERT INTO STU1 VALUES('0005','李齐','男',23,'12-6月-96','生化');
  INSERT INTO STU1 VALUES('0006','周八','女',22,'12-6月-97','计算机');

1.删除单行数据

在STU1表中删除学号为"0001"的学生记录。

sql 复制代码
DELETE FROM STU1 WHERE SNO='0001'

注意:DELETE语句不能删除单个字段的值,只能删除整行数据。要删除单个的列值,可以使用UPDATE语句,将其列值更新为NULL即可。

2.删除多行数据

在STU1表中删除班级为"计算机"的所有学生记录。

sql 复制代码
DELETE FROM STU WHERE SDEPT='计算机'

3.删除所有行

删除STU1表中的所有数据。将数据表中的数据记录全部删除,只保留表的结构。

sql 复制代码
DELETE FROM STU1

使用DELETE命令删除了表中所有记录后,这些记录还没有被真正删除,用户可以通过关闭SQL*Plus窗口或使用ROLLBACK命令来恢复这些记录。如果用户使用COMMIT命令提交了DELETE的删除操作后,数据就被真正删除了。

注意:使用DELETE语句用来删除表中的数据而不是删除表,其只能删除已经存在的数据,不能删除表结构。要删除表结构,需要使用DROP TABLE语句。

4.使用TRUNCATE命令清空表。

Oracle PL/SQL提供了一种更高效的命令TRUNCATE来清空一个表的所有记录行。

sql 复制代码
TRUNCATE TABLE STU1

DELETE语句和TRUNCATE TABLE语句都能够删除表中的所有数据,但两者还是有本质的区别:

  • TRUNCATE TABLE语句比用DELETE语句快得多。
  • 使用ROLLBACK命令,DELETE语句将被撤销,而TRUNCATE语句则不会被撤销。
  • TRUNCATE是一个DDL语言,像其他所有的DDL语言一样,其被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
  • TRUNCATE清空表后,表空间及其索引将重新设置成初始大小,而DELETE语句则不能。

TRUNCATE命令一次性完成删除与表有关的所有数据页的操作,其并不更新事务处理日志;而使用DELETE语句时,Oracle将一次一行地处理要删除的表中的记录,在从表中删除行之前,在事务处理日志中记录相关的删除操作和删除行中的列值,以防删除失败时,可以使用事务处理日志来恢复数据。

相关推荐
r i c k14 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦14 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL15 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·15 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德15 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫15 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i16 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.16 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn16 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露16 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot