数据定义,就是定义数据的形式,包括定义数据库,定义表和其表现形式(数据项),数据定义涉及的定义有创建、删除和修改。
1.CREATE(创建)
创建可分为创建数据库、基本表、视图和索引四种形式,一个RDBMS中可包含多个数据库,一个数据库内可包含多个基本表和视图,基本表和视图的关系就不是简单的一对多了。索引相关在此文中先略去不讲。
首先若想使用RDBMS,必须要先创建自己的数据库吧。
create database <数据库名>;
记得后面要有分号,当然也可以用create schema 数据库名(不过我不用,创建模式太不直观了好吗)。建好数据库后,我们来看数据库内都包含什么:
基本表(Tables)、视图(View)、存储过程(Stored Procedures)、函数(Functions)构成了整个数据库的结构,后面的文章我会对这些一一讲解。
建好数据库后需要用表来存放数据,下面创建基本表
create table <表名>(
<列名> <数据类型> [列级完整性约束],
[<列名> <数据类型> [列级完整性约束]]
...);
数据类型各RDBMS会有一些不同,使用时注意一下就好。下面看看基本表内都包含哪些东西:
数据列(Columns)、索引(Indexes)、外键(Foreign Key)、触发器(Triggers),后面要说的重点就是这里。
有时为了简化对基本表的操作,对频繁使用的某些列的组合建立一个视图。下面创建视图:
create view <视图名> [(<列名>[,<列名>,...])]
as
<子查询> [with check option];
子查询使用select动词实现,通常不允许使用order by子句和distinct短语。with check option表示对视图进行增、删、改时要满足子查询中的条件表达式。
下面看视图中都包含什么:
视图中包含的东西很少,只有视图表和表内的字段。视图的操作依赖于基本表,所以对视图的操作有所限制,一般也较少使用。
2.DROP(删除)
删除可以作用于数据库、基本表和视图,下面简单了解一下DROP动词。
drop database <数据库名>;
默认情况下MySQL为级联删除(即不论数据库中有无对象都执行删除操作)。
drop table <基本表名> [RESTRICT | CASCADE];
其中CASCADE(级联)表求相关的依赖都会被一起删除,如视图;RESTRICT(限制)则不会。
drop view <视图名> [CASCADE];
删除视图,若用级联则会把由此视图导出的所有视图一并删除。
3.ALTER(修改)
基本表的修改如下:
alter table <表名>
[ add <新列名> <数据类型> [完整性约束] ]
[ drop <完整性约束> ]
[ alter column <列名> <数据类型> ];
修改包括新增列、删除约束、更改列名的数据类型。