标签:数据库
记录下DDL和DML的相关概念。
数据定义语言
定义数据库模式
数据定义语言DDL(Data-Definition Language)可定义数据库模式。数据库模式在之前的文章中已经提到过了。简单来说,建表用的SQL语句就是DDL。如下代码
CREATE TABLE department(dept_name char(20),building char(15),budget numeric(12,2));
这个SQL语句便定义了一张“department”表。并定义了该表有三个列,以及与该列相关的数据类型。
为什么要有DDL呢?之前提到数据库模式的时候有说过:模式是预先设计好的。比如上面这个department表:按照生活常识来讲,部门名字不会是单个数字,而预算金额一般是纯数字。所以我们限制“dept_name”列的数据类型为char,”budget“列的数据类型为numeric(数字的)。
结合生活经验也能知道,存储在数据库中的数据值都必须要满足某些一致性约束。除了程序员规定的一致性约束之外,数据库系统本身实现的则为(数据)完整性约束。
写者注
一致性约束:比如我们规定一个人的姓名不允许为“123”。如果出现了该情况,表明有错误的数据(此处为错误的数据类型)进入到了姓名数据库中,导致该数据和该数据库的约束”不一致“。
数据操纵语言
访问或操控数据
如果说DDL是总工程师,那数据操控语言DML(Data-Manipulation Language)就是下面搬砖的。
DML有以下几种访问类型:
DML有以下两种类型:
很明显后者比过程化的DML简单,我们在SQL中最常用的“查询语句“(query language)就是非过程化的DML。比如下面这段最直接的查询代码:
SELECT * FROM department;
在mysql中试一下,效果如图
而过程化的DML在Oracle那块的PL/SQL“貌似”经常被提及,以后碰到再记录吧。
写者注
去博客园上也没找到专门说“过程化DML”的文章。虽然我个人认为像SELECT这种应该算过程化的DML,因为要指明从哪个表获取数据。但心里还是没个底。