数据操纵语言
数据操纵语言 DML ,它使得用户可以访问或操纵那些按照某种适当的数据模型组织起来的数据。有以下访问类型
- 对存储在数据库中的信息进行检索
- 向数据库中插入新的信息
- 从数据库中删除信息
- 修改数据库中存储的信息
通常有两类基本的数据操纵语言:
- 过程化DML 要求用户指定需要什么数据以及如何获得这些数据
- 声明式DML 也称为非过程化DML 只要求用户指定需要声明数据,而不指明如何获得这些数据
由于用户不必指明如何获得数据,数据库必须找出一种访问数据的高效途径
查询 query
是要求对信息进行检索的语句,DML中涉及信息检索的部分称作查询语言 query language
数据定义语言
数据库模式通过一系列定义来说明,这些定义是由一种称作数据定义语言DDL的特殊语言来表达。DDL也可用于定义数据的其他特征。
数据库系统所使用的存储结构和访问方式是通过一系列特殊的DDL语句来说明的,这种特殊DDL称作数据存储和定义语言。
存储在数据库中的数据值必须满足某些一致性约束(consistency constraint)
例如:余额不能为负数
DDL语言提供来指定这种约束的工具
每当数据库被更新的时候,数据库系统都会检查这些约束
域约束(domain constraint)
每个属性都必须对应一个所有可能都取值构成的域(例如:整数型、字符型、日期/时间型)
声明一种属性属于某种具体的域就相当于约束它可以取的值。域约束是完整性约束的最基本形式。每当有新数据项插入到数据库中,系统就能方便的进行域约束检测
参照完整性(referential integrity)
一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现(参照完整性)。例如,每门课程所列出的系必须是实际存在的系。数据库的修改会导致参照完整性的破坏,当参照完整性约束被违反时,通常的处理是拒绝执行导致完整性被破坏的操作
断言(assertion)
一个断言就是数据库需要时刻满足的某一条件。域约束和参照完整性约束是断言的特殊形式。
然而,还有许多约束不能仅用这几种特殊形式表达。例如,‘每一学期每一个系必须至少开设五个课程’,必须表达成一个断言
断言创建以后,系统会检测其有效性。如果断言有效,则以后只有不破坏断言的数据库更新才被允许
授权(authorization)
对于不同的用户在数据库中的不同数据值上允许不同的访问类型。这些区别以授权来表达。最常见的是:
- 读权限:允许读取数据,但不能修改数据
- 插入权限:允许插入新数据,但不允许修改已有数据
- 更新权限:允许修改,但是不能删除数据
- 删除权限:允许删除数据
我们可以赋予用户所有的权限 或者 没有 或部分拥有这些权限