【SQL】DML、DDL、ROLLBACK 、COMMIT详解

在这里插入图片描述
在这里插入图片描述

DML

DML(Data Manipulation Language)数据操作语言,是用于对数据库中的数据进行基本操作的一种编程语言。DML是数据库管理系统(DBMS)中的一个重要部分,它允许用户或应用程序对数据库中的数据进行增、删、改、查等操作。以下是DML数据操作语言的详细介绍:

DML的基本功能

DML的主要功能包括以下几个方面:

插入数据:使用INSERT语句将新的数据记录插入到数据库中。这可以是单条记录,也可以是批量插入。
删除数据:使用DELETE语句从数据库中删除一个或多个数据记录。在删除数据时,可以指定条件,以删除满足条件的记录。
修改数据:使用UPDATE语句修改数据库中的数据记录。可以修改记录的一个或多个字段,同样可以指定条件以修改满足条件的记录。
查询数据:使用SELECT语句从数据库中检索出满足条件的数据记录。SELECT语句可以非常复杂,包括各种条件、排序、分组和聚合等操作。

DML的常用语句

在DML中,最常用的语句是INSERT、DELETE、UPDATE和SELECT。以下是这些语句的简要说明:

INSERT语句:
语法:INSERT INTO 表名 [(字段1, 字段2, …)] VALUES (值1, 值2, …);
功能:将新的数据记录插入到指定的表中。如果指定了字段,则只需插入相应字段的值;如果没有指定字段,则需要插入表中所有字段的值。
DELETE语句:
语法:DELETE FROM 表名 WHERE 条件;
功能:从指定的表中删除满足条件的记录。如果没有指定条件,则会删除表中的所有记录。
UPDATE语句:
语法:UPDATE 表名 SET 字段名 = 新值 WHERE 条件;
功能:修改指定表中满足条件的记录的一个或多个字段的值。
SELECT语句:
语法:SELECT 字段名1, 字段名2, … FROM 表名 WHERE 条件 ORDER BY 字段名 [ASC|DESC];
功能:从指定的表中检索出满足条件的数据记录,并可以按照指定的字段进行排序。

DML的特点

DML的主要特点是其操作对象是数据库中的数据记录,而不是数据库的结构。与DDL(Data Definition Language,数据定义语言)不同,DML不用于创建或修改数据库的结构,如创建表、修改表结构等。DML的操作是面向数据的,它允许用户或应用程序对数据进行增、删、改、查等操作,以满足不同的业务需求。

DML的注意事项

事务控制:DML操作通常与事务控制相关。在执行DML操作时,需要考虑事务的完整性,确保数据的一致性和准确性。
权限控制:对数据库进行DML操作需要相应的权限。不同的用户或角色可能具有不同的权限,以控制对数据库数据的访问和修改。
性能优化:在执行DML操作时,需要考虑性能优化。例如,可以通过索引、查询优化等技术来提高查询和更新的效率。
综上所述,DML是数据库管理系统中用于操作数据的重要语言。它允许用户或应用程序对数据库中的数据进行增、删、改、查等操作,以满足不同的业务需求。在使用DML时,需要注意事务控制、权限控制和性能优化等方面的问题。

DDL

DDL(Data Definition Language)是数据定义语言的缩写,它是SQL(Structured Query Language,结构化查询语言)的一部分,用于定义数据库中的对象及其结构。DDL的主要作用是对数据库内部的对象进行创建、删除、修改等操作,这些对象包括数据库、表、视图、索引等。

DDL的主要功能

创建数据库和表:使用CREATE语句来创建新的数据库和表,并定义表的结构,如表名、字段名、字段类型、主键、外键等。
修改数据库和表结构:使用ALTER语句来修改现有数据库和表的结构,如添加、删除或修改字段,修改字段的数据类型,添加或删除索引等。
删除数据库和表:使用DROP语句来删除整个数据库或数据库中的表,以及表中的所有数据。

DDL的常用语句

DDL的常用语句主要包括以下几种:

CREATE:用于创建数据库、表、视图等对象。例如,CREATE DATABASE 数据库名; 用于创建数据库,CREATE TABLE 表名 (字段名 字段类型, …); 用于创建表。
ALTER:用于修改数据库、表、视图等对象的结构。例如,ALTER TABLE 表名 ADD 字段名 字段类型; 用于向表中添加新字段,ALTER TABLE 表名 DROP COLUMN 字段名; 用于删除表中的字段。
DROP:用于删除数据库、表、视图等对象。例如,DROP TABLE 表名; 用于删除表及其所有数据,DROP DATABASE 数据库名; 用于删除整个数据库。

DDL的特点

面向结构的:DDL的操作对象是数据库的结构,而不是数据本身。它用于定义和修改数据库对象的结构,如创建表、修改表结构等。
不可逆的:DDL操作通常是不可逆的,一旦执行,就会对数据库的结构产生永久性的影响。例如,删除表的操作会删除表中的所有数据,并且无法恢复。
权限要求高:执行DDL操作通常需要较高的权限,因为DDL操作会影响到数据库的结构和数据的完整性。

DDL的注意事项

备份数据:在执行DDL操作之前,特别是删除或修改表结构之前,务必备份相关数据,以防止数据丢失或损坏。
低负载时执行:DDL操作可能会对数据库的性能产生影响,因此建议在低负载时执行DDL操作,以避免对正在运行的事务和查询产生不良影响。
检查语法和逻辑:在执行DDL操作之前,务必检查语句的语法和逻辑,确保操作符合实际需求,并避免出现语法错误或逻辑错误。
综上所述,DDL是数据库管理系统中用于定义和修改数据库结构的重要语言。它允许数据库管理员或开发人员通过CREATE、ALTER、DROP等语句来创建、修改和删除数据库对象,从而实现数据库结构的灵活管理。在使用DDL时,需要注意备份数据、选择低负载时执行、检查语法和逻辑等事项,以确保操作的准确性和安全性。

ROLLBACK

ROLLBACK 是 SQL 中的一个事务控制语句,它用于撤销自上一个 COMMIT 或 ROLLBACK 语句以来对数据库所做的所有更改。在数据库管理系统(DBMS)中,事务是一个或多个 SQL 语句的集合,这些语句作为一个工作单元一起执行,以保证数据的完整性和一致性。

当一个事务被 ROLLBACK 时,该事务中所有对数据库的更改都会被撤销,数据库会回到事务开始之前的状态。这通常用于处理错误情况或当事务中的某些条件未满足时,以防止对数据库造成不可预知的影响。

使用场景

错误处理:如果在执行事务的过程中遇到错误,可以使用 ROLLBACK 来撤销已经执行的更改,以避免数据不一致。
条件检查:在事务的末尾,可能需要检查某些条件是否满足。如果不满足,可以使用 ROLLBACK 来撤销更改。
并发控制:在并发环境中,为了避免多个事务相互干扰,可能需要在某些情况下使用 ROLLBACK 来撤销事务的更改。
语法

ROLLBACK;

或者,如果事务被赋予了名称(在某些数据库系统中支持),可以使用以下语法:

ROLLBACK TO SAVEPOINT 保存点名;

这里,SAVEPOINT 是事务中的一个点,可以在该点之后执行 ROLLBACK TO SAVEPOINT 以撤销到该点之前的所有更改,而不是整个事务的更改。

注意事项

ROLLBACK 只撤销自上一个 COMMIT 或 ROLLBACK 以来对数据库所做的更改。
如果在自动提交模式下(某些数据库系统的默认设置),每个单独的 SQL 语句都被视为一个单独的事务,并且立即提交。在这种情况下,ROLLBACK 可能无法撤销最近的更改,除非显式地开始了一个事务。
在执行 ROLLBACK 后,如果需要重新执行事务中的操作,必须显式地重新执行它们。
ROLLBACK 通常不会释放由事务中 SQL 语句获取的资源(如锁),但会撤销对数据库所做的更改。然而,具体的行为可能取决于数据库系统的实现。
示例
假设你正在执行一个向表中插入数据的事务,但在插入过程中发现了一些问题,需要撤销这些更改:

BEGIN TRANSACTION; -- 开始事务(在某些数据库系统中可能不需要此语句)  INSERT INTO employees (name, department) VALUES ('John Doe', 'Sales');  
-- 假设这里发现了错误,需要撤销上面的插入操作  ROLLBACK; -- 撤销自上一个 COMMIT 或 ROLLBACK 以来的所有更改

请注意,具体的 SQL 语法和事务控制机制可能因不同的数据库系统而异。因此,在实际应用中,请参考你所使用的数据库系统的文档。

COMMIT 是 SQL(Structured Query Language,结构化查询语言)中的一个事务控制语句,它用于将自上一个 COMMIT 或事务开始以来对数据库所做的所有更改永久保存到数据库中。在数据库管理系统(DBMS)中,事务是一组作为一个工作单元执行的 SQL 语句,这些语句要么全部成功执行,要么在遇到错误时全部撤销,以确保数据的完整性和一致性。

使用场景

数据完整性:当一系列操作需要作为一个不可分割的整体来执行时,使用 COMMIT 可以确保这些操作要么全部成功,要么在遇到错误时全部回滚到操作之前的状态。
性能优化:通过减少数据库的 I/O 操作次数,COMMIT 可以帮助提高事务处理的性能。例如,在批处理大量数据时,可以定期执行 COMMIT 来保存更改,而不是在每次插入或更新后都立即执行。
并发控制:在并发环境中,COMMIT 语句的执行可以释放事务占用的资源(如锁),使得其他事务可以访问这些资源。
语法

COMMIT;

在某些数据库系统中,如果你正在使用显式的事务控制(即不是自动提交模式),则需要在事务结束时执行 COMMIT 语句来提交更改。

注意事项

在执行 COMMIT 之后,对数据库所做的更改就成为永久性的,并且不能再通过 ROLLBACK 语句来撤销。
如果事务在执行过程中遇到错误,并且没有使用错误处理机制来捕获和处理这些错误,则可能需要手动回滚事务(使用 ROLLBACK 语句)来撤销所做的更改。
在某些数据库系统中,如果你没有在事务块中明确地使用 COMMIT 或 ROLLBACK 语句来结束事务,则系统可能会在事务块结束时自动提交事务(这取决于数据库的配置和是否处于自动提交模式)。
在执行 COMMIT 时,可能会遇到锁定冲突等并发问题。为了确保数据的一致性和完整性,数据库系统可能会等待其他事务释放锁或回滚,直到能够成功提交事务。
示例
以下是一个简单的示例,展示了如何在 SQL 事务中使用 COMMIT 语句:

BEGIN TRANSACTION; -- 开始事务(在某些数据库系统中可能不需要显式地开始事务)  -- 在这里执行一系列的 SQL 语句,如 INSERT、UPDATE、DELETE 等  
INSERT INTO employees (name, department) VALUES ('Jane Doe', 'Marketing');  
UPDATE employees SET salary = salary * 1.1 WHERE department = 'Sales';  -- 如果没有遇到错误,则提交事务  
COMMIT;

在这个示例中,我们首先开始了一个事务,然后执行了两个 SQL 语句来插入和更新数据。如果没有遇到任何错误,我们执行 COMMIT 语句来提交事务,并将所做的更改永久保存到数据库中。如果在这个过程中遇到了错误,并且我们没有使用错误处理机制来捕获和处理这些错误,则可能需要回滚事务来撤销所做的更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索GitHub上的两个革命性开源项目

在数字世界中,总有一些项目能够以其创新性和实用性脱颖而出,吸引全球开发者的目光。今天,我们将深入探索GitHub上的两个令人惊叹的开源项目:Comic Translate和GPTPDF,它们不仅改变了我们处理信息的方式,还极大地丰富了我们的数字生活体验。 01 漫画爱好者的福音:Comi…

PostgreSQl 物化视图

物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它不支持 INSERT…

Windows 电脑查看 WiFi 密码的方法都有哪些?

从设置面板中查看 当你使用的是笔记本电脑并且连接 WiFi 之后可以在设置面板中查看 WiFi 密码,首先打开设置界面,然后点击网络和 Internet,找到 WiFi 之后点击进入,然后点击管理已知网络。 然后点击已经连接好的无线网络。 进入之…

SpringBoot 3.3 【一】手把手讲解-使用Eclipse创建第一个SpringBoot应用程序

简单动作,深刻联结。在这技术海洋,我备好舟,等你扬帆。启航吧! 🌟点击【关注】,解锁定期的技术惊喜,让灵感与知识的源泉不断涌动。 👍一个【点赞】,如同心照不宣的默契&a…

AI工具,如何通过 GPT-4o 提高工作效率

文章目录 引言一、理解GPT-4o及其功能二、如何利用GPT-4o提高工作效率1. 代码生成与优化2. 自动化测试与调试3. 技术文档撰写与知识管理 三、实际案例与成功应用1. GitHub 协作与问题解决2. 敏捷开发与迭代优化 四、GPT-4o的挑战与应对策略五、未来展望与发展方向六、结论 &…

保护企业数据资产的策略与实践:数据安全治理技术之实战篇!

在上篇文章中,我们深入讨论了数据安全治理技术的前期准备工作,包括从建立数据安全运维体系、敏感数据识别、数据的分类与分级到身份认等方面的详细规划和设计。这些准备工作是实现数据安全治理的基础,它们为企业建立起一套系统化、标准化的数…

二进制补码计算

基本知识 原码(Sign and Magnitude):原码是一种最简单的表示法,使用符号位和数值位来表示整数。 符号位:最高位是符号位,0表示正数,1表示负数。 数值位:剩下的位表示数值的大小。反码&#xf…

windows11下vscode配置C/C++(过程记录)

一、概述 一直想在Windows11系统下使用vscode运行C/C程序,如果使用visual studio的话需要占用大量内存,且每次启动较慢。vscode则可以省去大多数烦恼。 二、具体配置过程 (一)参考博客 主要参考两篇博客,分别如下所示…

kubernetes集群如何更改所有节点IP

kubernetes集群如何更改所有节点IP 情景描述更换IP前的准备工作更换IP后的工作--master更换IP后的工作--node节点重新部署之前那些服务 情景描述 我有三台服务器,想要将其组成了一个kubernetes集群,在部署之前,我就对其进行了固定IP的操作&a…

ARM功耗管理之多核处理器启动

安全之安全(security)博客目录导读 思考:SecureBoot?多核处理器启动流程?PSCI启动方式? 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cp…

MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation

MICCAI 2024 Centerline Boundary Dice Loss for Vascular Segmentation MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation中心线边界Dice损失用于血管分割**摘要**:1. 引言相关工作: 2. 方法预备知识Dice的变化 3 实验3.1 数据集3.2 设置3.3 结…

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中,Jpom 可以解…

python--实验8 函数(2)

知识点 变量的作用域 定义:解释了局部变量和全局变量的概念。局部变量: 局部变量是在函数内部定义的变量。它们只在该函数内部可见,一旦函数执行完毕,这些变量就会被销毁。例子:在函数内部通过赋值创建的变量。全局…

macbook触控栏养宠物:Touchbar pet for Mac 免费下载

macbook pro自从出了touchbar后,看起来是十分的炫酷,但平时却很少有人使用,为了让touchbar充分利用起来,Touch bar pet就横空出世了,可爱的画风,简单的玩法,让你可以在touchbar上也可以养一只自…

网络安全就业方向(非常详细)零基础入门到精通,收藏这一篇就够了

这里我整合并且整理成了一份【282G】的网络安全/红客技术从零基础入门到进阶资料包,需要的小伙伴文末免费领取哦,无偿分享!!! 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以…

2.5 计算机网络

声明:文章参考的《系统架构设计师教程(第二版)》,如有侵权,本人将立即修改和删除。 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,并依靠网络软件以及通信协议实现…

p15 p16 c语言实现三子棋

具体的实现代码 game.c #include "game.h"void InitBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i < row; i) {for (j 0; j < col; j) {board[i][j] ;}} }void DisplayBoard(char board[ROW][COL], int row, int col) …

【java实现结果集转为树结构,树转为扁平结构】

list转为树&#xff0c;树拉平 业务需求oracle实现树结构1、**Controller.java层** &#xff1a;前端调此处请求2、**service层&#xff1a;** 逻辑结构 &#xff08;zbjcpjService.java&#xff09;&#xff0c;重点&#xff1a;this.entityMapper.queryZbjcpjTree接口3、**ma…

【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异

问题&#xff1a; fibonacci 斐波拉契数列&#xff0c;用递归和循环的方法分别写,比较递归和循环的思路和写法的差别 最直接的思路&#xff0c;是写递归方法 循环方法的稍微有点绕&#xff0c;我觉得问题主要是出在&#xff0c;总结循环的通项公式更麻烦&#xff0c;难在数学…

多目标螳螂搜索算法MOMSA求解无人机三维路径规划,可以自行修改障碍物位置(MATLAB代码)

无人机路径规划多目标优化求解是一个复杂的过程&#xff0c;涉及到多个目标的考量和优化算法的应用。以下是一些关键点和相关算法的概述&#xff1a; 1. **多目标优化策略**&#xff1a;在无人机路径规划中&#xff0c;需要同时考虑多个目标&#xff0c;如路径长度、安全性、飞…