数据库用户只能通过数据库语言来定义数据库的结构和访问数据库中的数据。数据库管理系统提供两种不同类型的语言:一种用于定义数据库模式,这就是数据定义语言;另一种用于表达数据库的查询和更新,这就是数据操纵语言。
数据定义语言
数据库模式是通过一系列定义来说明的,这些定义由称作数据定义语言(Data Definition Language,英文缩写为DDL)的一种特殊语言来表达,如create table。DDL语句的编译结果是填写一系列存储在一个特殊文件中的系统表,这个特殊的文件称作数据字典。数据字典是一个包含元数据的文件,元数据是关于数据的数据。在数据库管理系统中,实际读取和修改数据前总要先查询该文件。
数据库管理系统所使用的存储结构和访问方式也是通过一系列特殊的DDL语句,如create cluster、create index来定义的,这种特殊的DDL语句称作数据存储定义语言。这些语句的编译结果是一系列用来描述数据库模式实现细节的指令,这些实现细节对用户来说是不可见的。
各行各业都有各自的”行话”,有时也称为”黑话”。数据定义语言就是用来定义这些”黑话”的。例如这边一句”create table”语句,那边数据库管理系统就明白了要创建一张表。
数据操纵语言
数据操纵是指对存储在数据库中的信息进行检索、向数据库中插入新的信息、从数据库中删除信息以及修改存储在数据库中的信息。数据抽象的层次不仅适用于定义数据和组织数据,还适用于对数据的操纵。在物理层,必须定义可以高效访问数据的算法。在较高的抽象层次上,强调数据的易用性,目的是要提供人与系统间的有效交互。
数据操纵语言(Data Manipulation Language,英文缩写为DML)通常有两类:
1、过程化的DML要求用户指定需要什么数据以及如何获得这些数据;
2、非过程化的DML只要求用户指定需要什么数据,而不必指明如何获得这些数据。通常非过程化的DML比过程化的DML易学易用,但是非过程化的DML比过程化的DML的效率可能要低一些。
我们创建一个数据库,最终是要能够保存和检索我们需要的数据。这就需要另外一种语言,即数据操纵语言。通过这种语言,数据库能够理解并完成我们想要完成的工作,例如插入数据,或者对数据进行修改等等。数据操纵语言通常有两类:过程化的DML和非过程化的DML。前者要给出如何进行操作,后者只要给出要做什么事情即可。显然后者比较”讨领导喜欢”。但是因为后者经常耍一些”小聪明”,马屁拍的太多,其效率可能比前者要低一些。
查询是用来对信息进行检索的语句。DML中涉及信息检索的那一部分称作查询语言。但在实际当中不严格区分查询语言和数据操纵语言,有时就简单地称为数据查询语言。
Sorry, the comment form is closed at this time.
No comments yet.