Oracle中SQL更新数据_图文(精)
oracle update 原理

oracle update 原理
Oracle Update是一种数据库操作语句,用于修改已存在的数
据库表中的数据。
它的原理是根据指定的条件更新表中的数据行,使其满足新的值。
当执行Oracle Update语句时,首先会根据指定的条件来确定
要更新的数据行。
这些条件可以基于单个列或多个列的值,也可以使用复杂的逻辑运算符进行组合。
只有满足条件的数据行才会被更新,其他行将保持不变。
一旦确定了要更新的数据行,Oracle会对这些行进行逐个更新。
更新过程中,可以使用Update语句中的SET子句来指定更新
的列以及其新的值。
可以单独更新一个或多个列,也可以一次更新多个列。
更新的值可以是文本、数值或其他适当的数据类型。
在更新过程中,Oracle会将新的值替换掉原有的值。
更新操作是在事务中进行的,因此更新过程中的任何错误都会导致事务被回滚,即所有已经更新的数据都将恢复到原始状态。
这确保了数据的一致性和完整性。
Oracle Update语句是一个强大的工具,可以根据需要快速、
准确地修改数据库中的数据。
然而,在使用Update语句时需
要小心,确保操作的正确性和安全性。
在执行更新操作之前,最好做好备份并进行充分的测试,以避免意外和数据丢失。
总之,Oracle Update语句通过指定条件和新的值来更新数据
库表中的数据行。
它是一个重要的数据库操作,可以灵活地操作和调整数据,以满足实际需求。
oracle update的多种用法

在数据库管理系统中,Oracle Update 是一种常见的数据库操作,用于更新表中的数据。
它可以根据指定的条件更新表中已有的数据,也可以通过插入新数据来更新表。
除了基本的更新操作,Oracle Update 还有一些高级的用法,能够更灵活、高效地操作数据库。
接下来,我将针对 Oracle Update 的多种用法进行深度探讨和详细介绍。
1. 基本的更新操作在 Oracle 数据库中,最基本的更新操作就是使用 Update 语句来修改已有数据。
通过指定要更新的表名、要修改的字段及其新值,以及更新的条件,可以对数据库中的数据进行灵活的更新。
例如:```sqlUPDATE 表名SET 字段1 = 新值1, 字段2 = 新值2WHERE 条件;```在这种基本的更新操作中,可以使用各种各样的条件来限定更新的范围,比如等值条件、范围条件、逻辑条件等。
这样就可以实现按需更新数据,确保数据的准确性和完整性。
2. 使用子查询进行更新除了基本的更新操作,Oracle 还支持使用子查询来更新数据。
这种方式可以在更新时动态地从其他表或查询结果中获取数据进行更新,非常灵活。
例如:```sqlUPDATE 表名SET 字段1 = (SELECT 新值1 FROM 其他表 WHERE 条件) WHERE 条件;```通过使用子查询,可以实现跨表更新、基于查询结果更新等复杂的更新操作,极大地增强了更新的灵活性和功能性。
3. 批量更新数据在实际应用中,有时需要一次性更新大量数据,而不是只更新一条或少数几条。
为了提高更新效率,Oracle 提供了批量更新的方式,可以一次性更新大量数据,减少数据库的压力。
例如:```sqlUPDATE 表名SET 字段1 = 新值1WHERE 条件;COMMIT;```通过一次性更新大量数据,并在合适的时候提交事务,可以有效地提高更新操作的效率和稳定性,避免了频繁的数据库操作带来的性能问题。
4. 使用触发器进行更新除了直接的 Update 操作外,Oracle 还可以通过触发器来实现自动更新功能,实现数据的自动同步和一致性维护。
数据库试验---SQL数据更新语句

实验SQL数据更新语句一、实验目的本次实验了解SQL Server 2005的启动,熟悉如何使用SSMS和5@1.建立数据库和表,并加深对于完整性的理解。
一.二、背景知识在使用数据库的过程中,接触最多的就是数据库中的表。
表是数据存储的地方,是数据库中最重要的部分,管理好表也就管理好了数据库。
表是由行和列组成的。
创建表的过程主要就是定义表的列的过程。
表的列名在同一个表中具有唯一性,同一列的数据属于同一种数据类型。
除了用列名和数据类型来指定列的属性外,还可以定义其它属性:是否为空、默认值、标识符列、全局唯一标识符列等。
约束是SQL Server提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。
在SQL Server中有5种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)x 检查约束(Check Constraint)和默认约束(Default Constraint) 0...三、实验目的加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌握掌握单个元组及多个元组的插入、修改及删除操作的实现过程加深对更新操作时数据库中数据一致性问题的了解加深对约束条件在数据更新操作执行中的作用问题的了解。
实验报告要求1、写出与上述任务相对应的SQL更新语句(实验报告上写出3、5、10的SQL语句)2、并记录在实验过程中遇到的问题、解决办法及心得体会。
五、实验内容方法一:在SSMS中插入、删除及修改数据,方法二:在查询编辑器中写SQL插入、删除及修改数据设有一个SPJ数据库,包括S, P, J, SPJ四个关系模式:S (SNO, SNAME, STATUS, CITY)dlim-S dbo. F dbo. JP (PNO, PNAME, COLOR, WEIGHT)PNAM;vardnar(2D)08L8Cbi3l(4)0WEIGm-int H□J (JNO, JNAME, CITY)列名数据类型允许空供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表1由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
Oracle数据库---SQL更新数据

1.数据的变更,主要有三种:插入(insert)、修改数据(updae)、
删除数据(delete)。
Insert into 表名(列名1,列名2,…)
Values(值1,值2…)
insert into student(id,age,name,cid,sex,point)
values(13,22,'张山',108,'男',88)
如果insert语句所指定的列名列表包括了表中的所有列,那么可以将列名列表省略。
如上面可以直接写:
insert into student
values(13,22,'张山',108,'男',88)
2.批量插入
insert into b_student
select*from student s
where s.id>11
3.更新单列
Update 表名set 列=新值where ….
4.更新多列
Update 表名set 列1=新值1,列2=新值2…Where …..
如果没有where,将更新列的所有值。
5.删除数据
Delete操作用于删除表中的数据
Delete from 表名
Where….
除了delete语句外,truncate 命令也可以删除表中的数据,但delete和insert、update语句同属于DLL-数据操作语言的范畴,当数据修改之后,可以通过回滚操作,忽略所做的数据修改。
而truncate语句则无法回滚。
oracle 多表更新方法

oracle 多表更新方法
Oracle中多表更新方法有以下几种:
1. 使用内连接(Inner Join)更新多个表:使用UPDATE语句结合INNER JOIN将多个表连接起来,并更新相应的记录。
例如:
```sql
UPDATE table1
SET table1.column = table2.column
FROM table1
INNER JOIN table2 ON table1.id = table2.id;
```
2. 使用子查询(Subquery)更新多个表:可以使用子查询来更新多个表中的记录。
例如:
```sql
UPDATE table1
SET column = (SELECT column FROM table2 WHERE table2.id = table1.id)
WHERE EXISTS (SELECT 1 FROM table2 WHERE table2.id = table1.id);
```
3. 使用MERGE语句更新多个表:MERGE语句可以根据指定的条件将源表的数据合并到目标表中,并同时更新目标表的记录。
例如:
```sql
MERGE INTO table1
USING table2
ON (table1.id = table2.id)
WHEN MATCHED THEN
UPDATE SET table1.column = table2.column;
```
以上是Oracle中常用的多表更新方法,根据具体的需求选择合适的方法来更新多个表中的记录。
oracle多表update语句

文章标题:深度解析Oracle多表update语句在Oracle数据库中,update语句是用于修改表中数据的重要操作之一。
而当需要更新多个表中的数据时,就需要使用Oracle多表update语句。
本文将从简单到复杂,由浅入深地探讨Oracle多表update语句的相关知识,帮助读者更全面地理解这一主题。
一、什么是Oracle多表update语句?在数据库中,有时候需要修改多个表中的相关数据。
Oracle多表update语句就是为了实现这一目的而设计的。
通过一条update语句可以同时更新多个表中的数据,实现数据的同步和一致性。
二、语法和用法Oracle多表update语句的语法如下:```sqlUPDATE table1SET column1 = (SELECT expression1 FROM table2 WHERE condition)WHERE condition;```其中,table1为要更新的主表,table2为辅助表,column1为表1中要更新的字段,expression1为要更新的值,condition为更新条件。
通过子查询的方式,可以从辅助表中获取相关的数据进行更新。
三、示例假设有两个表,分别为employee和department,现在需要将employee表中的部门编号根据department表中的部门名进行更新,可以使用如下的Oracle多表update语句:```sqlUPDATE employee eSET e.department_id = (SELECT d.department_id FROM department d WHERE e.department_name =d.department_name);```通过该语句,employee表中的部门编号将根据department表中的部门名进行更新,从而实现数据的同步更新。
四、注意事项在使用Oracle多表update语句时,需要注意以下几点:1. 确保子查询返回的结果是唯一的,否则可能会出现更新失败或更新错误的情况。
mybatis oracle批量更新的语句
在MyBatis中,要实现Oracle批量更新的语句,可以使用`<foreach>`标签结合`<update>`标签。
以下是一个示例:1. 首先,在mapper接口中定义一个批量更新的方法:```javapublic interface YourMapper {int batchUpdate(List<YourEntity> entityList);}```2. 然后,在对应的XML映射文件中编写批量更新的SQL语句:```xml<mapper namespace="com.example.mapper.YourMapper"><update id="batchUpdate" parameterType="java.util.List">UPDATE your_tableSET column1 = #{item.column1},column2 = #{item.column2},...WHERE id IN<foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item.id}</foreach></update></mapper>```在这个示例中,`your_table`是你要更新的表名,`column1`、`column2`等是表中的列名,`id`是主键列名。
`<foreach>`标签用于遍历传入的实体列表,生成IN子句中的ID值。
如何更新oracle数据库表里面的一段文字内容
如何更新oracle数据库表里面的一段文字内容要更新Oracle数据库表中的一段文字内容,你可以使用UPDATE语句。
以下是更新Oracle表中一段文字内容的步骤:1. 首先,确保你已经连接到Oracle数据库,并且具有足够的权限来更新表中的数据。
2. 确定你要更新的表和要更新的字段。
假设你要更新名为"employees"的表中的"job_description"字段。
3. 编写UPDATE语句,指定要更新的表和条件。
例如,假设你想将"job_description"字段中所有与"Sales"相关的条目更改为"Marketing",可以使用以下语句:```sqlUPDATE employeesSET job_description = 'Marketing'WHERE job_description LIKE '%Sales%';```上述语句将更新"employees"表中所有"job_description"字段包含"Sales"的条目,将其更改为"Marketing"。
4. 执行UPDATE语句。
你可以使用SQL工具(如SQLPlus、Oracle SQL Developer等)或编程语言中的数据库连接库来执行UPDATE语句。
5. 确认更新是否成功。
你可以使用SELECT语句来检索更新后的数据,以验证更新是否已正确应用。
例如:```sqlSELECT FROM employees WHERE job_description LIKE'%Marketing%';```上述查询将返回所有已更新的条目,你可以检查它们是否符合你的期望。
请注意,上述示例仅用于说明目的,实际情况中你可能需要根据具体的需求和条件来编写UPDATE语句。
SQL入门教程:更新(UPDATE)数据
SQL⼊门教程:更新(UPDATE)数据⽬录⽬录汇总:更新(修改)表中的数据,可以使⽤UPDATE语句。
有两种使⽤UPDATE的⽅式:更新表中的特定⾏;更新表中的所有⾏。
下⾯分别介绍。
注意:不要省略在使⽤UPDATE时⼀定要细⼼。
因为稍不注意,就会更新表中的所有⾏。
使⽤这条语句前,请完整地阅读本⽂。
提⽰:UPDATE与安全在客户端/服务器的 DBMS 中,使⽤UPDATE语句可能需要特殊的安全权限。
在你使⽤UPDATE前,应该保证⾃⼰有⾜够的安全权限。
使⽤UPDATE语句⾮常容易,甚⾄可以说太容易了。
基本的UPDATE语句由三部分组成,分别是:要更新的表;列名和它们的新值;确定要更新哪些⾏的过滤条件。
举⼀个简单例⼦。
客户 1000000005 现在有了电⼦邮件地址,因此他的记录需要更新,语句如下:输⼊▼UPDATE CustomersSET cust_email = 'kim@'WHERE cust_id = 1000000005;UPDATE语句总是以要更新的表名开始。
在这个例⼦中,要更新的表名为Customers。
SET命令⽤来将新值赋给被更新的列。
在这⾥,SET⼦句设置cust_email列为指定的值:SET cust_email = 'kim@'UPDATE语句以结束,它告诉 DBMS 更新哪⼀⾏。
没有WHERE⼦句,DBMS 将会⽤这个电⼦邮件地址更新Customers表中的所有⾏,这不是我们希望的。
更新多个列的语法稍有不同:输⼊▼UPDATE CustomersSET cust_contact = 'Sam Roberts',cust_email = 'sam@'WHERE cust_id = 1000000006;在更新多个列时,只需要使⽤⼀条SET命令,每个“列=值”对之间⽤逗号分隔(最后⼀列之后不⽤逗号)。
在此例⼦中,更新顾客1000000006 的cust_contact和cust_email列。
SQL实验四_SQL的数据更新
SQL实验四_SQL的数据更新第一篇:SQL实验四_SQL的数据更新实验四、数据更新1、实验目的熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、更新、删除操作。
2、实验内容λ在本实验中,主要内容是如何用SQL语句对数据进行更新。
λ使用INSERT INTO语句插入数据,包括插入一个元组或将子查询的结果插入到数据库中两种方式。
λ使用UPDATE语句可以修改指定表中满足WHERE子句条件的元组,有三种修改的方式:修改某一个元组的值;修改多个元组的值;带子查询地修改语句。
λ使用DELETE语句删除数据:删除某一个元组的值;删除多个元组的值;带子查询地删除语句。
3、实验步骤在数据库University_Mis上按下列要求进行数据更新。
(1)使用SQL语句向Students表中插入元组(Sno:S78;Sname:李迪;Semail:***********.cn;Scredit:0;Ssex:男)。
(2)对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入。
(3)在Students表中使用SQL语句将姓名为李迪的学生的学号改为S70。
(4)在Teachers表中使用SQL语句将所有教师的工资加500元。
(5)将姓名为刘华的学生的课程“数据库原理及其应用”的成绩加上6分。
(6)在Students表中使用SQL语句删除姓名为李迪的学生信息。
(7)删除所有选修课程JAVA的选修课记录。
(8)对Courses表做删去学分<=4的元组操作,讨论该操作所受到的约束。
第二篇:实验四SQL语言实验四 SQL语言——数据更新操作2007-06-16 01:12:44|分类:课程作业 |标签:数据更新操作sql 语言|字号大中小订阅实验四 SQL语言——数据更新操作三、实验条件与环境1.通用PC机2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台 3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)4.最好有一台公用的SQL Server 2000 服务器四、实验目的1.通过上机实验进一步加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌握2.通过上机实验掌握单个元组插入操作的实现过程3.通过上机实验掌握多个元组插入操作的实现过程4.通过上机实验掌握单个元组修改操作的实现过程5.通过上机实验掌握多个元组修改操作的实现过程6.通过上机实验掌握单个元组删除操作的实现过程7.通过上机实验掌握多个元组删除操作的实现过程8.通过上机实验加深对更新操作时数据库中数据一致性问题的了解9.通过上机实验加深对约束条件在数据更新操作执行中的作用问题的了解五、实验要求1.本实验所有实验内容要求在规定时间(2课时)内完成2.实验内容中涉及到的各更新操作均通过SQL语言来实现3.本实验中各操作内容的执行均会更新当前数据库,为便于下一实验内容的顺利执行,请在每成功完成一个实验内容后重新导入初始状态下的实验数据库4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交六、实验内容:1.在S表中插入元组“s6,华誉,402.在J表中插入元组“j8,传感器厂”3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库4.将P表中PNO值为p6的元组的color属性值改为绿,weight 属性值改为605.将SPJ表中前4个元组的qty属性值统一修改为3006.将S表中city属性名含有“京”或“津”的相应status属性值增加1007.将供应商s2为“一汽”工程项目所供应的零件数量修改为20008.将全部红色零件的颜色修改为浅红色9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列上填上实验当时的日期和时间11.删除所在城市为“广州”的供应商记录12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数据信息七、实验总结:数据更新操作(插入操作[INSERT]、修改操作[UPDATE]、删除操作[DELETE])是关系数据库系统中一种极为重要、数据更新能力强、使用灵活的数据操纵方式,此数据操作的使用不是完全独立的,而是和数据定义操作、数据查询操作有着紧密联系的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17.2.1 利用update修改单列的值
update可以修改单列的值。
update people set status = 'CXL';
select * from people;
17.2.2 利用update修改多列的值
update命令既可以修改单列值,也可以同时修改多列 的值。例如,有时为了合并两个表的数据,需要为其中一个 的主键id添加一个基数,以避免两个表中主键的重复。此时 ,需要修改表中所有id的值。以表people为例,在修改列id 的值的同时,也可以修改status列的值。 update people set id = (20000+id), status = 'ACT';
17.1.4 insert语句与唯一性约束
当使用insert语句时,需要注意的是唯一性约束。当插 入的列值违反了唯一性约束时,Oracle将抛出错误。例如, 表people中,列id为表的主键,尝试向其中插入数据: insert into people values(11, '张三', 'ACT')
对于数值型主键来说,在插入数据时,使用序列来获得 主键值是一个好的选择。
17.1.5 insert语句与外键约束
insert语句更新数据表时,同样会引起外键约束的检查
alter table t_salary add constraint fk_employee_id foreign key (employee_id) references t_employees (employee_id); insert into t_salary (salary_id, employee_id, month, salary) values (31, 20, '1月', 5000);
17.7 习题
1.如何利用insert命令实现批量插入。
2.如何利用update命令修改多列的值。 别。
3.简述利用delete命令与truncate命令删除数据的区
4..简述提交动作与回滚动作的区别。
17.3.1 用delete命令删除数据
像update命令一样,delete命令经常与where子句一 起出现,以删除数据表中的某些数据。
delete from people p where exists(select 1 from t_employees e where e.employee_name = )
17.1.2 利用子查询批量插入数据
Oracle可以利用子查询向表中批量插入数据。此时的 SQL语句除了包含insert into命令之外,还应该包含一个查 询语句。 insert into people select employee_id, employee_name, status from t_employees where employee_id>=3;
删除数据。
17.1 插入数据
插入数据即向数据表中插入新的记录,插入数据应该使 用insert命令。插入数据的主要途径包括:通过指定各列的 值直接插入、通过子查询插入、通过视图插入等。对于通过 视图插入的方式,大多数应该使用instead of触发器来进行 处理,因此,本章将着重讲述前两种插入方式。
17.2.3 利用where子句限制修改范围
where子句是update命令最常用的子句。不使用 where子句的update命令是不安全的。因为不使用where子 句将一次性修改表中所有记录,这将带来极大的安全隐患。 为了将表people中,id大于20010的status列修改为 “CXL”则可以利用如下所示的SQL语句。
SQL更新数据
Oracle中可以利用DML更新数据。其DML语句与其他 数据库的SQL语法完全一致——都是遵守了工业标准。与查 询操作不同,更新数据将导致数据库状态的变化,因此, Oracle同样提供了提交与回滚操作来保证数据库状态的一致 性。Oracle常见的更新操作包括:
插入数据;
修改数据;
17.1.3 insert语句与默认值
当向数据表中插入数据时,如果表中某列含有默认值约 束,对于该列又没有显式赋值,那么默认值将作为列值进行 插入。 alter table people modify (status varchar2(3) default 'ACT');
insert into people (id, name) values (12, '殷商'); select * from people where id = 12;
update people set status = 'CXL' wher据删除的目标是数据表中的记录,而不是针对列来进 行的。删除数据应该使用delete命令或者truncate命令。其 中delete命令的作用目标是表中的某些记录,而truncate命 令的作用目标是整个数据表。
17.1.1 insert语句向表中插入数据
insert into people values(people_seq.nextval, '张 文', 'ACT');
insert into people (id, name) values(people_seq.nextval, '柳平'); 注意与说明:当使用第二种方式插入数据时,列名列表 和列值列表必须保持一致,即每个列的数据类型和实际插入 类型保持一致。
17.4.1 回滚动作
回滚动作有两种情况,一是用户在提交动作之前,手动 执行rollback命令,以放弃该事务对数据库的修改;二是事 务执行失败,数据库自动执行rollback命令,来恢复事务对 数据库的修改。 select * from people;
insert into people values (1, '周璇', 'ACT');
17.4 数据提交与回滚
Oracle中有回滚段的概念。Oracle中的回滚段是指, 当DML修改数据库时,用于存储原数据影像的存储空间。当 DML修改数据库中的数据(例如,update和delete命令) 之后,执行提交之前, 如果执行了回滚操作,Oracle将利 用回滚段中的数据影像将数据库恢复到修改前的状态。
rollback; select * from people;
17.4.2 提交动作
提交动作是指将数据库的修改操作反映到数据库,不再 允许使用回滚操作。 insert into people values (1, '周璇', 'ACT');
commit;
select * from people; rollback; select * from people;
17.4.3 PL/SQL Developer中的回滚与提交
在PL/SQL中,同样可以利用图形化界面来处理回滚与 提交动作。
insert into people values (2, '刘祥', 'ACT');
17.5 本章实例
本章重点讲述了如何使用命令进行数据更新。但是很多 时候,开发员使用工具直接修改数据会更加直观。
delete命令用于删除表中数据;from people p用于指 定删除的目标表为people,并指定该表的别名为p;where exists(select 1 from t_employees e where e.employee_name = )用于指定删除记录的过滤条 件——在表t_employees中存在着一条记录,该记录的 employee_name列值等于表people的当前记录的name列 值;该删除语句用于保证表people中,所有的姓名不再存 在于表t_employees中。 注意与说明:delete命令是针对表中的整条记录,因此 ,其后不需要指定列名或者*。例如,执行delete * from people,Oracle将抛出错误提示。
。
17.2 修改数据
像其他数据库一样,Oracle使用update命令来修改数 据。update修改数据一般有以下几种情况:直接修改单列 的值、直接修改多列的值、利用where子句限制修改范围和 利用视图修改数据。利用视图修改数据往往需要利用 instead of触发器实现,因此本节将着重讲述前三种更新方 式。
17.3.2 用truncate命令删除数据
truncate命令删除数据和delete命令删除数据主要有三 点不同。 truncate命令属于DDL(数据库定义语言)范畴,而 delete命令是DML(数据库操作语言)范畴。 truncate命令将一次性删除数据表的所有数据,而 delete语句将对数据表中所有记录进行循环处理。 truncate命令删除的数据将不能回滚,而delete语句在 提交修改之前,仍然可以回滚操作。 truncate table people;
create table test_people as select * from people; select * from test_people order by id for update;
17.6 本章小结
由于利用update更新数据表和利用delete删除表中数 据,语法简单,而且为大多数读者所熟悉,所以本章只进行 了简单介绍。需要注意的是利用truncate删除表中数据和利 用delete删除数据的区别:truncate命令是DDL,数据删除 之后,不可回滚;而delete命令是DML,数据删除之后,可 以利用rollback进行回滚。就速度而言,truncate命令要快 于delete命令,因此,当确定要删除表中所有数据,只保留 数据表结构时,应该使用truncate命令(这往往发生在数据 清理,例如,删除测试数据);而删除表中部分数据应该使 用delete命令。