数据库中的 DDL、DML 和 DCL

数据库中的 DDL、DML 和 DCL

在数据库的定义与操作中,DDLDMLDCL 是三个核心概念,分别用于不同层面的数据库管理与操作。


1. DDL(Data Definition Language) - 数据定义语言

定义

DDL 用于定义和管理数据库的结构或模式。它负责创建、修改、删除数据库对象(如表、视图、索引等)。

常见操作

  • CREATE:创建数据库对象(如表、视图、索引)。
    CREATE TABLE students (
        id INT PRIMARY KEY,
        name VARCHAR(50),
        age INT
    );
    
  • ALTER:修改数据库对象的结构。
    ALTER TABLE students ADD COLUMN gender VARCHAR(10);
    
  • DROP:删除数据库对象。
    DROP TABLE students;
    
  • TRUNCATE:清空表的数据,但保留表结构。
    TRUNCATE TABLE students;
    

特点

  • DDL 操作通常会隐式提交事务,不能回滚。
  • 改变的是数据库结构,而不是数据内容。

高级特性

  • 模式迁移工具支持:与数据库迁移工具(如 Liquibase、Flyway)集成,可实现版本化管理。
  • 生成脚本:支持自动生成脚本以备份和迁移数据库。
  • 支持多种存储引擎:可根据需求选择不同的存储引擎(如 InnoDB 或 MyISAM)。

2. DML(Data Manipulation Language) - 数据操作语言

定义

DML 用于操作数据库中的数据,包括插入、更新、删除和查询等操作。

常见操作

  • SELECT:查询数据。
    SELECT * FROM students;
    
  • INSERT:插入数据。
    INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);
    
  • UPDATE:更新数据。
    UPDATE students SET age = 21 WHERE id = 1;
    
  • DELETE:删除数据。
    DELETE FROM students WHERE id = 1;
    

特点

  • DML 操作需要显式提交事务(如 COMMITROLLBACK)。
  • 主要用于操作数据内容,而不是结构。

高级特性

  • 批量操作:支持批量插入、更新和删除,提高效率。
  • 事务控制:结合事务管理,可以确保数据操作的原子性、一致性、隔离性和持久性(ACID)。
  • 优化查询:支持查询优化器,提供索引、分区和子查询等高级功能。
  • 多表联结:支持复杂的多表关联操作(如 JOIN)。

3. DCL(Data Control Language) - 数据控制语言

定义

DCL 用于控制对数据库的访问权限,管理用户权限和安全性。

常见操作

  • GRANT:授予用户权限。
    GRANT SELECT, INSERT ON students TO user1;
    
  • REVOKE:撤销用户权限。
    REVOKE INSERT ON students FROM user1;
    

特点

  • DCL 操作通常需要管理员权限。
  • 涉及数据库的安全性和权限控制。

高级特性

  • 角色管理:支持角色的创建和分配,简化权限管理。
  • 细粒度权限控制:可以精确到表、列或行级别授予权限。
  • 审计功能:记录权限变更和访问情况,增强数据库安全性。
  • 数据屏蔽:结合数据安全功能,可以对敏感数据进行屏蔽处理。

主要区别总结

类别全称作用关键操作影响范围
DDL数据定义语言定义数据库结构CREATE, ALTER, DROP数据库结构
DML数据操作语言操作和管理数据SELECT, INSERT, UPDATE, DELETE数据库中的数据内容
DCL数据控制语言管理用户权限和安全性GRANT, REVOKE数据库访问权限

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UnityRenderStreaming使用记录(五)

UnityRenderStreaming不一样的错误,船新的版本 继续docker部署UnityRenderStreamingdockerfile一些命令出现了新的错误先解决一个报错不知道怎么解决,先跑个glxgears测试一下先解决MESA和glx的问题新的log,额新的错误尝试解决libnvidia-encod…

Unity-Mirror网络框架-从入门到精通之AdditiveScenes 示例

文章目录 前言Additive Levels和Additive ScenesAdditive Levels场景介绍Portal传送门FadeInOut特效 Additive Scenes示例介绍ZoneHandlerSceneMassage 最后 前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框…

Mac-docker配置

1.配置的文件路径 cd ~/.docker (base) zhangyaweimacbookair .docker % ls buildx cli-plugins config.json contexts daemon.json desktop-build mutagen run (base) zhangyaweimacbookair .docker % cat daemon.json## 重启docker服务 sudo systemctl daemon-reload sudo…

PHP进阶-在Ubuntu上搭建LAMP环境教程

本文将为您提供一个在Ubuntu服务器上搭建LAMP(Linux, Apache, MySQL, PHP)环境的完整指南。通过本文,您将学习如何安装和配置Apache、MySQL、PHP,并将您的PHP项目部署到服务器上。本文适用于Ubuntu 20.04及更高版本。 一、系统更新…

Elasticsearch(看这一篇就够了)

目录: Elasticsearch介绍正排索引和倒排索引Elasticsearch安装安装ES服务安装服务安装kibana 索引操作创建索引查询索引库修改索引库删除索引库 Elasticsearch常用操作文档操作新增文档查询文档删除文档根据id批量查询文档查询所有文档修改文档部分字段 域的属性分词…

嵌入式技术之Linux(Ubuntu) 一

一、Linux入门 1.硬件和操作系统以及用户的关系 一个传感器,获得数据后,需要向服务器发送数据。传感器传数据给上位机。 上位机需要一个程序来接收数据,那么这个上位机是什么机器? 我们的笔记本电脑就可以当成上位机。 两个手…

【实用技能】如何使用 .NET C# 中的 Azure Key Vault 中的 PFX 证书对 PDF 文档进行签名

TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打…

oracle闪回恢复数据:(闪回查询,闪回表,闪回库,回收站恢复)

oracle的闪回查询,可以查询提交在表空间的闪回数据,并可以还原所查询的数据,用于恢复短时间内的delele 或者 update 误操作,非常方便,缺点是只能恢复大概几小时内的数据。 文章目录 概要闪回查询恢复数据的主要方法包括…

开放词汇检测新晋SOTA:地瓜机器人开源DOSOD实时检测算法

在计算机视觉领域,目标检测是一项关键技术,旨在识别图像或视频中感兴趣物体的位置与类别。传统的闭集检测长期占据主导地位,但近年来,开放词汇检测(Open-Vocabulary Object Detection-OVOD 或者 Open-Set Object Detec…

【网络协议】静态路由详解

网络中的路由器通过以下两种方式之一发现远程网络: 静态配置路由动态路由协议 在本文,我们将学习关于静态路由的各种概念,例如如何配置静态路由、路由表如何进行决策、路由接口等相关知识。 文章目录 引言直连网络静态路由路由表原则原则1原…

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…

计算机网络--路由器问题

一、路由器问题 1.计算下一跳 计算机网络--根据IP地址和路由表计算下一跳-CSDN博客 2.更新路由表 计算机网络--路由表的更新-CSDN博客 3.根据题目要求给出路由表 4.路由器收到某个分组,解释这个分组是如何被转发的 5.转发分组之路由器的选择 二、举个例子 …

通过Android Studio修改第三方jar包并重新生成jar包

最近接手了来自公司其他同事的一个Unity项目,里面有一个封装的jar包要改动一下,无奈关于这个jar包的原工程文件丢失了,于是自己动手来修改下jar包,并做下记录。 一、导入第三方jar包 1、新建项目EditJarDemo(项目名随便取) 2、新建libs文件夹,把你要修改的third.jar 复制…

33.3K 的Freqtrade:开启加密货币自动化交易之旅

“ 如何更高效、智能地进行交易成为众多投资者关注的焦点。” Freqtrade 是一款用 Python 编写的免费开源加密货币交易机器人。它就像一位不知疲倦的智能交易助手,能够连接到众多主流加密货币交易所,如 Binance、Bitmart、Bybit 等(支…

计算机网络 (26)互联网的路由选择协议

一、路由选择协议的基本概念 路由选择协议是计算机网络中用于确定数据包在网络中传输路径的一种协议。它帮助路由器构建和维护路由表,以便根据目的地址将数据包转发到正确的下一跳路由器。路由选择协议分为静态路由选择协议和动态路由选择协议两大类。 二、静态路由…

【MySQL实战】Centos安装MySQL

在CentOS上安装MySQL以及进行性能分析:2种方式,第一种直接装;第二种用docker安装: 直接安装MySQL 首先,更新系统软件包列表: sudo yum update然后,安装MySQL服务器: sudo yum in…

centOS7

特殊权限 set_uid 赋予所有者身份 chmod us 文件 set_gid 赋予所有组身份 chmod gs 文件/目录 sticky_bit 防火墙 firewall-cmd 开启端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent 重启防火墙 systemctl restart firewalld 查看开启的所有端口 fi…

Java后端开发单元测试

测试概览 测试是用于促进鉴定软件正确性、完整性、安全性和软件质量的过程。在开发的过程中测试是必不可少的,测试一般分为四个阶段:单元测试,集成测试,系统测试,验收测试;对于后端开发人员而言&#xff0…

LAMP搭建

LAMP搭建 引子:本篇文章为LAMP的搭建流程,其中L(Ubuntu)、A(Apache)、M(Mysql)、P(PHP)。 一、L → Ubuntu Step 1:在Vmware Workstation中使…

LabVIEW 系统诊断

LabVIEW 系统诊断是指通过各种工具和方法检测、评估、分析和解决 LabVIEW 程序和硬件系统中可能存在的故障和性能问题。系统诊断不仅涵盖软件层面的调试与优化,还包括硬件交互、数据传输、实时性能等方面的检查和分析。一个成功的系统诊断能够显著提升LabVIEW应用程…