DDL、DML和DCL的区别与理解

DML、DDL、DCL区别 .

总体解释:

DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL(Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

详细解释:

一、DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言
1.CREATE - to create objects in the database 创建
2.ALTER - alters the structure of the database 修改
3.DROP - delete objects from the database 删除
4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed
TRUNCATE TABLE [Table Name]。
  下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:
  Truncate table 表名 速度快,而且效率高,因为:
  TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
  DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
  TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
  对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
  TRUNCATE TABLE 不能用于参与了索引视图的表。
5.COMMENT - add comments to the data dictionary 注释
6.GRANT - gives user's access privileges to database 授权
7.REVOKE - withdraw access privileges given with the GRANT command 收回已经授予的权限

二、DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL中处理数据等操作统称为数据操纵语言

1.SELECT - retrieve data from the a database 查询
2.INSERT - insert data into a table 添加
3.UPDATE - updates existing data within a table 更新
4.DELETE - deletes all records from a table, the space for the records remain 删除
5.CALL - call a PL/SQL or Java subprogram
6.EXPLAIN PLAN - explain access path to data
Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。
7.LOCK TABLE - control concurrency 锁,用于控制并发

三、DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等

1.COMMIT - save work done 提交
2.SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点
3.ROLLBACK - restore database to original since the last COMMIT 回滚
4.SET TRANSACTION - Change transaction options like what rollback segment to use 设置当前事务的特性,它对后面的事务没有影响.

DDL、DML和DCL的理解 (张青山)

先给出一个图:

1、DDL

1-1、DDL的概述
               DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,Drop可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。

1-2、DDL的主要语句(操作)
               Create语句:可以创建数据库和数据库的一些对象。
               Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。
               Alter语句:修改数据表定义及属性。
      1-3、DDL的操作对象(表)
               1-3-1、表的概念
                           表的创建就是用来存放数据用的,由于我们存放的数据的不通,所以我们需要定义些数据类型,以方便管理。
               1-3-2、表的属性   
                           主键属性:主键就是主键约束,只不过起的名字不同了,主键的起名偏向于虚的(就是描述描述这件事),主键约束起名偏向于实得(就是描述操作的实施),描述的都是同一件事,主键约束就是表中的一个属性;在一个表中最多可以有一个主键;一个主键可以定义在一个或多个字段;主键使一个或多个字段的值必须唯一且不为空,这样做可以通过该字段或该组字段中的值唯一的代表一条记录。
                           唯一属性:一个表中只能有一个主键属性,为了方表用户,提出唯一约束;唯一约束可以定义在一个或多个字段上;唯一约束使该字段或该组字段中的值唯一,可以为空,但是,不能重复。
                           外键属性:又叫外键,又叫外键约束,跟主键和主键约束的关系是一样的;外键约束针对的两个表,如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表,但要注意,必须要计算机要知道你是这种关系。

核查、Null和缺省属性:核查属性又叫核查约束,Null属性又叫Null约束,缺省属性又叫缺省约束;这些名称是描述一件事,描述一种情况,这件事或这张情况我们当然可以人为的那样特意做(输入数据是注意就行),但是,他们的本意是实现自动化,也就是让计算机做这件事。
            (你知道为什么建立主键和唯一约束的时候,会自动的创建索引吗?而且是唯一索引,想一想索引大多在那些字段上用,以及索引的作用就会知道了。像主键约束、唯一约束、非空约束、外键约束、核查约束和缺省约束这些操作都是使表具有某些特性,所以在这里我认为他们都是表的属性。)

2、DML

2-1、DML的概述
               DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。
      2-2、DML的主要语句(操作)
               Insert语句:向数据表张插入一条记录。
               Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。
               Update语句:用于修改已存在表中的记录的内容。
      2-3、DML的操作对象——记录
               2-3-1、注意
                           当我们对记录进行Insert、Delete和Update操作的时候,一定要注意,一定要清楚DDL对其的一些操作。

3、DCL

3-1、DCL的概述
                DCL(Data Control Language 数据控制语句)的操作是数据库对象的权限,这些操作的确定使数据更加的安全。
       3-2、DCL的主要语句(操作)
                Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。
                Revoke语句:可以废除某用户或某组或所有用户访问权限
       3-3、DCL的操作对象(用户)
                此时的用户指的是数据库用户。

(0)

相关推荐

  • 详解SQL四种语言:DDL DML DCL TCL

    看到很多人讨论SQL还分为四种类型,在这里知识普及一下,并总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREATE,ALTER,DROP等,下面用例子详解.该语言不需要commit,因此慎重. CREATE – to create objects in the database   在数据库创建对象 例: CREATE DATABASE test; // 创建一个名为test的数据库 ALTER – a

  • Sql学习第二天——SQL DML与CTE概述

    DML (Data Manipulation Language) 与 CTE (Common Table Expression) 今天看书时遇到的两个缩写,不知道其含义,于是就百度了一下,特地在此记录下来,以便于下次复习使用. 关于DML (Data Manipulation Language): 数据操纵语言,用户能够查询数据库以及操作已有数据库中的数据的计算机语言.具体是指是UPDATE更新.INSERT插入.DELETE删除. 关于CTE (Common Table Expression)

  • DDL、DML和DCL的区别与理解

    DML.DDL.DCL区别 . 总体解释: DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL(data definition language): DDL比DML要多,主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 DCL(Da

  • 关于java关键字this和super的区别和理解

    this: this理解为:当前对象 或 当前正在创建的对象 可以调用的结构:属性.方法:构造器 this调用属性.方法: 先了解一下形参: 形参的意义就是给属性赋值,我们是要给同名的属性赋值,这时候我们就把形参名和属性的名字写成一样,这样我们就知道我们传入的形参就是要给我们同名的属性去赋值的. 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法.但是, 通常情况下,我们都择省略"this.".特殊情况

  • 值类型和引用类型的区别深入理解

    区别: 1.值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高. 2.引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例.3.值类型继承自ValueType(注意:而System.ValueType又继承自System.Object):而引用类型继承自System.Object. 4.值类型变量包含其实例数据,每个变量保存了其本身的数据拷贝(副本),因此在默认情况下,值类型的参数传递不会影响参数本身:而引用类型变量保存了其数据的引用地址,因

  • Java中HashMap和TreeMap的区别深入理解

    首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的). HashMap 非线程安全 TreeMap 非线程安全 线程安全 在Java里,线程安全一般体

  • Get方法和Post方法的区别深入理解

    Get方法在超链接后边紧跟要传递的参数对于用户是可见的如:http://tieba.baidu.com/f?kw=%D6%A3%D6%DD%B4%F3%D1%A7&fr=index&ie=utf-8 而Post方法传递的参数是不可见的 GET是从服务器上获取数据: POST是向服务器传送数据. -------------------------------- 在客户端, GET通过URL提交数据,数据在URL中可见: POST把数据放在form的数据体内提交. --------------

  • redis与memcached的区别_动力节点Java学院整理

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间. 2.Memcached与MySQL数据库数据一致性问题. 3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL

  • Java中堆和栈的区别详解

    当一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(Last In First Out)的顺序的数据结构,这就是java.util.Stack.这种情况下,不免让很多人更加费解前面的问题.事实上,堆和栈都是内存中的一部分,有着不同的作用,而且一个程序需要在这片区域上分配内存.众所周知,所有的Java程序都运行在JVM虚拟机内部,我们这里介绍的自然

  • 深入理解Node module模块

    在开发复杂Web应用的时候,通常需要把各个功能进行拆分.封装到不同的文件并在需要的时候引用该文件,即进行代码的模块化管理.几乎所有的编程语言都有自己的模块组织方式,比如Java中的包.C#中的程序集,而Node采用CommonJS模块规范. 模块规范 CommonJS旨在将运行在浏览器之外的JS进行标准化,并已经解决了大量的JS问题(如全局命名冲突).Node对CommonJS的实现中,每个模块都会被封装在一个单独的JS文件中,即一个文件就是一个模块,而文件路径就是模块名.在编写每个模块时,都有

  • Hibernate的各种保存方式的区别详解

    hibernate的保存  hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一.预备知识:  在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient.persistent.detached  下边是常见的翻译办法: transient:瞬态或者自由态 persistent:持久化状态 detached:脱管状态或者游离态 脱管状态的实例可以通过调用save().persist()或者saveOrUpdate()方法进行

随机推荐