詹惠儿

2018-11-06   阅读量: 1006

数据分析师 Python编程 Python数据分析

如何区分SQL的DDL,DML,TCL和DCL语句呢

扫码加入数据分析学习群

SQL的DDL,DML,TCL和DCL语句分别是数据定义语言,数据操作语言,事务控制语言和数据控制语言。

DDL(数据定义语言):

数据定义语言用于定义数据库结构或模式。DDL还用于指定数据的其他属性。数据库系统使用的存储结构和访问方法由一组特殊类型的DDL中的语句组成,称为数据存储和定义语言。这些语句定义了数据库模式的实现细节,这些细节通常对用户是隐藏的。存储在数据库中的数据值必须满足某些一致性约束。
例如,假设大学要求部门的帐户余额绝不能为负数。DDL提供了指定此类约束的工具。每次更新数据库时,数据库系统都会检查这些约束。通常,约束可以是与数据库有关的任意谓词。但是,任意谓词的测试成本可能很高。因此,数据库系统实现可以以最小开销测试的完整性约束。

  1. 域约束:可能值的域必须与每个属性相关联(例如,整数类型,字符类型,日期/时间类型)。将属性声明为特定域充当其可以采用的值的约束。
  2. 参照完整性:在某些情况下,我们希望确保在一个关系中出现的值对于给定的属性集也出现在另一个关系中的某组属性中,即参照完整性。例如,为每个课程列出的部门必须是实际存在的部门。
  3. 断言:断言是数据库必须始终满足的任何条件。域约束和完整性约束是断言的特殊形式。
  4. 授权:我们可能希望区分用户,只要它们在数据库中的各种数据值上允许访问的类型。这些区别以授权表示。最常见的是:
    读取授权 - 允许读取但不允许修改数据;
    插入授权 - 允许插入新数据但不修改现有数据
    更新授权 - 允许修改但不允许删除。

一些命令:

CREATE:在数据库中创建对象
ALTER:改变数据库的结构
DROP:从数据库中删除对象
RENAME:重命名对象

以下SQL DDL语句定义了department表:

创建表部门
(dept_name char(20),
建筑炭(15),
预算数字(12,2));

执行上述DDL语句会创建包含三列的department表 - dept_name,building和budget; 每个都有与之关联的特定数据类型。

DML(数据操作语言):

DML语句用于在模式对象中管理数据。
DML有两种类型 -

  1. 程序DML:要求用户指定需要哪些数据以及如何获取这些数据。
  2. Declerative DML(也称为非过程DML):要求用户指定所需的数据,而不指定如何获取这些数据。声明性DML通常比程序性DML更容易学习和使用。但是,由于用户不必指定如何获取数据,因此数据库系统必须找出访问数据的有效方法。

一些命令:

SELECT:从数据库中检索数据
INSERT:将数据插入表中
更新:更新表中的现有数据
DELETE:删除表中的所有记录,保留记录的空间

查找历史记录部门中所有教师名称的SQL查询示例:

选择instructor.name
来自教练
其中instructor.dept_name ='历史';

该查询指定必须检索dept_name为History的表教师中的那些行,并且必须显示这些行的名称属性。

TCL(交易控制语言):

事务控制语言命令用于管理数据库中的事务。这些用于管理DML语句所做的更改。它还允许将语句组合在一起成为逻辑事务。

TCL命令的示例 -

COMMIT:Commit命令用于永久保存任何事务
进入数据库。
ROLLBACK:此命令将数据库还原到上次提交状态。
它还与savepoint命令一起使用以跳转到保存点
在交易中。
SAVEPOINT:Savepoint命令用于临时保存事务
你可以在必要时回滚到那一点。

DCL(数据控制语言):

数据控制语言是一种类似于计算机编程语言的语法,用于控制对存储在数据库中的数据的访问(授权)。特别是,它是结构化查询语言(SQL)的一个组件。

DCL命令的示例:

GRANT:允许指定的用户执行指定的任务。
REVOKE:取消之前授予或拒绝的权限。

可以向用户或角色授予或撤消权限的操作适用于数据定义语言(DDL)和数据操作语言(DML),并且可以包括CONNECT,SELECT,INSERT,UPDATE,DELETE,EXECUTE和用法。

在Oracle数据库中,执行DCL命令会发出隐式提交。因此,您无法回滚命令。

0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子