DDL、DML、DCL区分与说明

本文深入解析了SQL语言的三个核心组件:DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)。详细介绍了每种语言的作用、常见命令及应用范围,为初学者提供了全面的SQL语言入门指南。

DDL: Data Definition Language,数据定义语言,简单概括就是,对数据对象操作的命令,比如说对数据库对象进行创建、修改、删除等,有create,alter,drop,trancate。

数据库对象:

常见的比如,表,表空间,视图,物化视图,索引,函数,包,存储过程,序列,触发器,同义词等,在oracle数据库中,定义的数据库对象共有47中,记录在dba_objects视图中,可以使用以下命令获得对象的清单:

select distinct object_type from dba_objects;

数据库的对象中有一部分是通过段来存储数据库的,共有12种段类型,比如,表,索引,LOB等

DML: Data Manipulation Language,数据操作语言,是我们初步学习sql语言时使用最多的语言,是真正对数据进行操作的语言,比如插入数据,删除数据,查询数据等,有insert,delete,select,update。

DCL:Data Control Language,数据控制语言,主要是作用在用户上,比如创建用户,用户授权,修改密码等,有create,grant,revoke,alter等,有部分操作和DDL有重合,但是,主要的区别方式在于操作的对象。

上述三种语言中,DML的复杂程度做高,主要是因为select中的各种语法,函数实在丰富。本文不再赘述,可以去oracle官网或者w3cschool网站查看,算是sql语句编写的基础只是。

下载前可以先看下教程 https://pan.quark.cn/s/a426667488ae 标题“仿淘宝jquery图片左右切换带数字”揭示了这是一个关于运用jQuery技术完成的图片轮播机制,其特色在于具备淘宝在线平台普遍存在的图片切换表现,并且在整个切换环节中会展示当前图片的序列号。 此类功能一般应用于电子商务平台的产品呈现环节,使用户可以便捷地查看多张商品的照片。 说明中的“NULL”表示未提供进一步的信息,但我们可以借助标题来揣摩若干核心的技术要点。 在构建此类功能时,开发者通常会借助以下技术手段:1. **jQuery库**:jQuery是一个应用广泛的JavaScript框架,它简化了HTML文档的遍历、事件管理、动画效果以及Ajax通信。 在此项目中,jQuery将负责处理用户的点击动作(实现左右切换),并且制造流畅的过渡效果。 2. **图片轮播扩展工具**:开发者或许会采用现成的jQuery扩展,例如Slick、Bootstrap Carousel或个性化的轮播函数,以达成图片切换的功能。 这些扩展能够辅助迅速构建功能完善的轮播模块。 3. **即时数字呈现**:展示当前图片的序列号,这需要通过JavaScript或jQuery来追踪并调整。 每当图片切换时,相应的数字也会同步更新。 4. **CSS美化**:为了达成淘宝图片切换的视觉效果,可能需要设计特定的CSS样式,涵盖图片的排列方式、过渡效果、点状指示器等。 CSS3的动画和过渡特性(如`transition`和`animation`)在此过程中扮演关键角色。 5. **事件监测**:运用jQuery的`.on()`方法来监测用户的操作,比如点击左右控制按钮或自动按时间间隔切换。 根据用户的交互,触发相应的函数来执行...
垃圾实例分割数据集 一、基础信息 • 数据集名称:垃圾实例分割数据集 • 图片数量: 训练集:7,000张图片 验证集:426张图片 测试集:644张图片 • 训练集:7,000张图片 • 验证集:426张图片 • 测试集:644张图片 • 分类类别: 垃圾(Sampah) • 垃圾(Sampah) • 标注格式:YOLO格式,包含实例分割的多边形点坐标,适用于实例分割任务。 • 数据格式:图片文件 二、适用场景 • 智能垃圾检测系统开发:数据集支持实例分割任务,帮助构建能够自动识别和分割图像中垃圾区域的AI模型,适用于智能清洁机器人、自动垃圾桶等应用。 • 环境监控管理:集成到监控系统中,用于实时检测公共区域的垃圾堆积,辅助环境清洁和治理决策。 • 计算机视觉研究:支持实例分割算法的研究和优化,特别是在垃圾识别领域,促进AI在环保方面的创新。 • 教育实践:可用于高校或培训机构的AI课程,作为实例分割技术的实践数据集,帮助学生理解计算机视觉应用。 三、数据集优势 • 精确的实例分割标注:每个垃圾实例都使用详细的多边形点进行标注,确保分割边界准确,提升模型训练效果。 • 数据多样性:包含多种垃圾物品实例,覆盖不同场景,增强模型的泛化能力和鲁棒性。 • 格式兼容性强:YOLO标注格式易于主流深度学习框架集成,如YOLO系列、PyTorch等,方便研究人员和开发者使用。 • 实际应用价值:直接针对现实世界的垃圾管理需求,为自动化环保解决方案提供可靠数据支持,具有重要的社会意义。
<think> 我们正在讨论DDLDMLDCL的含义、作用及使用方法。以下是基于用户提供的引用和一般知识的整理: 引用[1]中提到了DDL/DML/DCL的区别概述,并特别指出在建立主键和唯一约束时会自动创建索引(唯一索引),这是因为索引的作用(提高查询速度)和约束(保证数据唯一性)的需求。同时,引用[1]还提到主键约束、唯一约束、非空约束、外键约束、核查约束和缺省约束都是表的属性。 引用[2]则从Oracle的角度说明DDLDMLDCL的区别,特别是权限控制方面,比如delete和drop的区别(delete是DML,删除表中的行;drop是DDL,删除整个表结构)。 以下是对DDLDMLDCL的详细解释: ### 一、DDL(数据定义语言) **定义**:用于定义和管理数据库对象(如表、索引、视图等)的结构。 - **主要命令**: - `CREATE`:创建数据库对象(如表、索引、视图等) - `ALTER`:修改数据库对象的结构 - `DROP`:删除数据库对象 - `TRUNCATE`:删除表中所有数据(保留表结构,不可回滚) - `RENAME`:重命名对象 - `COMMENT`:添加注释 **特点**: - 执行后自动提交(隐式提交),不能回滚(除个别数据库如MySQL的某些DDL支持事务)。 - 通常需要较高的权限。 - 会自动提交当前事务(在Oracle中,DDL执行前会隐式提交前面未提交的事务)。 **示例**: ```sql -- 创建表 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), age INT ); -- 修改表结构(添加列) ALTER TABLE employees ADD salary DECIMAL(10,2); -- 删除表 DROP TABLE employees; -- 清空表数据(快速删除所有行) TRUNCATE TABLE employees; ``` > **注意**:`TRUNCATE``DELETE`(DML)的区别: > - `TRUNCATE`是DDL,删除所有数据且不可回滚,速度快(不记录日志)。 > - `DELETE`是DML,可带条件删除部分数据,可回滚,速度较慢(记录日志)[^2]。 ### 二、DML(数据操纵语言) **定义**:用于操作数据库中的数据(增删改查)。 - **主要命令**: - `SELECT`:查询数据 - `INSERT`:插入新数据 - `UPDATE`:更新现有数据 - `DELETE`:删除数据 - `MERGE`:合并数据(插入或更新) **特点**: - 需要显式提交(如`COMMIT`)或回滚(`ROLLBACK`)。 - 操作单位是表中的记录。 - 可通过`WHERE`子句指定条件。 **示例**: ```sql -- 插入数据 INSERT INTO employees (id, name, age) VALUES (1, '张三', 30); -- 更新数据 UPDATE employees SET age = 31 WHERE name = '张三'; -- 删除数据(删除指定行) DELETE FROM employees WHERE id = 1; -- 查询数据 SELECT * FROM employees WHERE age > 25; ``` ### 三、DCL(数据控制语言) **定义**:用于控制数据库访问权限和安全。 - **主要命令**: - `GRANT`:授予用户权限 - `REVOKE`:撤销用户权限 - `DENY`:拒绝权限(SQL Server特有) **特点**: - 涉及用户权限管理,如对表、视图、存储过程的访问权限。 - 权限类型包括:`SELECT`、`INSERT`、`UPDATE`、`DELETE`、`EXECUTE`等。 **示例**: ```sql -- 授予用户user1对employees表的SELECT权限 GRANT SELECT ON employees TO user1; -- 授予用户user2对employees表的INSERT、UPDATE权限 GRANT INSERT, UPDATE ON employees TO user2; -- 撤销用户user1的SELECT权限 REVOKE SELECT ON employees FROM user1; ``` --- ### 关键区别总结 | 特性 | DDL | DML | DCL | |------------|--------------------------|------------------------------|--------------------------| | **作用** | 定义/修改数据库结构 | 操作数据记录 | 控制访问权限 | | **命令** | `CREATE`, `ALTER`, `DROP` | `SELECT`, `INSERT`, `UPDATE`, `DELETE` | `GRANT`, `REVOKE` | | **提交** | 自动提交 | 需显式提交(除非自动提交模式) | 自动提交 | | **回滚** | 不可回滚 | 可回滚 | 不可回滚 | | **示例** | 建表、删表 | 增删改查数据 | 授权、撤销权限 | ### 附加说明:索引约束的关系 - **主键约束**和**唯一约束**会自动创建唯一索引(如Oracle的`B树索引`),用于快速查找和保证唯一性[^1]。 - **外键约束**通常也会创建索引,以提高关联查询效率(但非强制,建议手动创建)。 --- §§相关问题§§ 1. 在哪些场景下使用`TRUNCATE`比`DELETE`更合适? 2. `GRANT`和`REVOKE`命令如何实现权限的级联控制? 3. 数据库事务中DDL操作会导致哪些隐式行为? 4. 如何通过DCL命令实现数据库审计功能? 5. 为什么外键约束通常需要手动创建索引? </think> ### DDLDMLDCL 详解 #### 一、DDL(数据定义语言) **定义**:用于定义和管理数据库对象(如表、索引、视图等)的结构。 **核心命令**: - `CREATE`:创建数据库对象 ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); ``` - `ALTER`:修改对象结构 ```sql ALTER TABLE users ADD age INT; -- 添加列 ``` - `DROP`:删除对象 ```sql DROP TABLE users; -- 删除表 ``` - `TRUNCATE`:清空表数据(保留结构) - `COMMENT`:添加注释 **特点**: 1. **自动提交**:执行后立即生效,不可回滚(如`CREATE TABLE`)[^1][^2] 2. **隐式创建索引**:定义主键(`PRIMARY KEY`)或唯一约束(`UNIQUE`)时,数据库自动创建唯一索引以加速查询和保证数据唯一性[^1] 3. **权限要求高**:需数据库管理员权限 --- #### 二、DML(数据操纵语言) **定义**:用于操作数据库中的数据记录。 **核心命令**: - `SELECT`:查询数据 ```sql SELECT * FROM users WHERE age > 18; ``` - `INSERT`:插入数据 ```sql INSERT INTO users (id, name) VALUES (1, 'Alice'); ``` - `UPDATE`:更新数据 ```sql UPDATE users SET age = 20 WHERE id = 1; ``` - `DELETE`:删除数据 ```sql DELETE FROM users WHERE age < 18; -- 删除行,可回滚 ``` **特点**: 1. **需显式提交**:执行后需`COMMIT`才能持久化(可回滚) 2. **操作单位**:记录级(行) 3. **DDL本质区别**: - `DELETE`(DML):删除行,可恢复 - `DROP`(DDL):删除整个表,不可恢复[^2] --- #### 三、DCL(数据控制语言) **定义**:控制数据库访问权限和安全。 **核心命令**: - `GRANT`:授予权限 ```sql GRANT SELECT, INSERT ON users TO user1; -- 授权查询和插入 ``` - `REVOKE`:撤销权限 ```sql REVOKE DELETE ON users FROM user1; -- 撤销删除权限 ``` - `DENY`:禁止权限(特定数据库如SQL Server) **使用场景**: 1. 控制用户对表的操作权限(如禁止删除) 2. 管理角色权限(如创建只读用户组) --- ### 关键区别总结 | 特性 | DDL | DML | DCL | |--------------|--------------------------|------------------------------|--------------------------| | **作用对象** | 数据库结构(表、索引等) | 数据记录(行) | 访问权限 | | **提交方式** | 自动提交 | 需显式提交(`COMMIT`) | 自动提交 | | **回滚** | 不可回滚 | 可回滚(`ROLLBACK`) | 不可回滚 | | **典型命令** | `CREATE`, `ALTER`, `DROP` | `SELECT`, `INSERT`, `DELETE` | `GRANT`, `REVOKE` | ### 索引约束的关系 - **自动索引创建**:定义`PRIMARY KEY`或`UNIQUE`约束时,数据库自动生成唯一索引以: 1. 快速定位数据 2. 强制保证数据唯一性 3. 加速关联查询(如`JOIN`)[^1] - **索引使用场景**: ```sql -- 在WHERE子句常用字段上创建索引 CREATE INDEX idx_age ON users(age); -- 索引可显式创建(非约束字段) SELECT * FROM users WHERE age > 20; -- 使用idx_age加速 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hannah_JK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值