【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,一经查实,立即删除!

相关文章

pacman 软件包管理器命令表格

pacman 是一个软件包管理器&#xff0c;它是 Arch Linux 和基于 Arch 的发行版&#xff08;如 Manjaro 和 Antergos&#xff09;中的标准包管理工具。MSYS2 也采用了 pacman 作为其包管理器&#xff0c;它允许用户安装、更新、升级和卸载软件包。 命令描述pacman -S <packa…

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

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

PostgreSQl 物化视图

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

Leetcode 17:电话号码的字母组合

给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 public List<String> letterCombinations(String digits) {if (digits null || digits.length() 0) {return result;}int index0; //记录遍历digits的角标//初始…

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

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

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

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

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

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

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

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

二进制补码计算

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

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

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

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

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

uboot学习:(二)uboot命令

目录 uboot命令 常见命令 内存操作命令 网络操作命令 EMMC/SD卡操作命令: FAT格式文件系统操作命令: EXT格式文件系统操作命令 NAND操作命令 BOOT操作命令 其他命令 uboot命令 在烧录uboot到板子中后&#xff0c;开机三秒后才会进入系统&#xff0c;在这三秒按enter…

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

安全之安全(security)博客目录导读 思考&#xff1a;SecureBoot&#xff1f;多核处理器启动流程&#xff1f;PSCI启动方式&#xff1f; 一般嵌入式系统使用的都是对称多处理器&#xff08;Symmetric Multi-Processor, SMP&#xff09;系统&#xff0c;包含了多个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. 引言相关工作&#xff1a; 2. 方法预备知识Dice的变化 3 实验3.1 数据集3.2 设置3.3 结…

window对象监听浏览器页签之间的切换状态;前端监听浏览器切换页签的触发时机

window对象监听浏览器页签之间的切换状态 记录两种办法 第一种&#xff1a;会将任何鼠标点进或点出浏览器的操作监听&#xff1b;同页面也会触发 // 窗口获得焦点时的回调函数 function onWindowFocus() {console.log(窗口获得焦点);querySubmit() } // 窗口失去焦点时的回调函…

第2章 源码编译构建LAMP

LAMP LAMP是一个常见的开发平台和运行环境&#xff0c;主要用于支持动态网站和Web应用程序的开发和部署。 L: Linux&#xff0c;指操作系统&#xff0c;通常是Linux操作系统。A: Apache&#xff0c;指Web服务器软件&#xff0c;常用于托管网站。M: MySQL&#xff0c;指关系型…

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

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

uniapp js 用dom创建form表单 并提交

// 创建一个新的form元素 var form window.document.createElement(form); // 设置form的method和action属性 form.method POST; form.action https://xxx; …

python--实验8 函数(2)

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

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

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