当前课程知识点:数据库概论 >  第三章 结构化查询语言SQL >  3.2 数据定义DDL >  数据定义DDL

返回《数据库概论》慕课在线视频课程列表

数据定义DDL在线视频

数据定义DDL

下一节:SQL数据更新DML

返回《数据库概论》慕课在线视频列表

数据定义DDL课程教案、知识点、字幕

各位同学大家好

我是来自云南大学软件学院的张璇

下面

我们介绍如何使用SQL的数据定义语言DDL

来定义数据库和数据库中的数据表

在开始定义一个数据库之前

我们先了解一下SQL语言的语法格式约定

大写字母代表了保留的关键字标识符

小写字母表示数据库对象标识符和表达式

大括号中的内容为必选参数

其中的多个选项我们用竖线分隔开

竖线表示参数之间的或关系

方括号表示列出的选项是可选的

用户可以不选择

省略号自然表示重复前面语法单元

而注释中

单行注释用两个破折号表示

块注释用斜杠星号来表示

基于这个约定

我们下面看看定义数据库的SQL语言

这个定义中的绿色大写标识符是定义数据库的动词

CREATE DATABASE就是创建数据库

后面的database_name

可根据实际情况定义数据库的标识符

也就是数据库的名称

ON后面显式定义用来

存储数据库数据的磁盘文件

即数据文件

其中

定义数据文件

定义数据文件组

LOG ON后面显式定义

用来存储数据库日志的磁盘文件

如果没有指定这个选项

系统会自动创建一个日志文件

PRIMARY定义主文件组

在指定关联的数据文件列表中

定义一个主文件

需要注意

一个数据库只能有一个主文件

如果没有指定PRIMARY

那么 CREATE DATABASE 语句中

列出的第一个文件

将被自动定义为主文件

主文件包含在数据文件组

FILEGROWTH指定了数据文件

定义的文件的增长增量

其增量设置不能超过

最大存储MAXSIZE的设置

FILEGROUP即是用户定义的文件组

下面我们举一个示例

来创建一个学生数据库

Create DataBase Student_DB

创建一个名为Student_DB的学生数据库

ON Primary后面定义主数据文件

这里是定义主数据文件的逻辑名称

在Name这里

定义为Student_DB_dat

然后

我们用FileName

定义具体的物理文件位置和文件名

也就是用这一句命令来表示

在FileName等于d盘

data文件夹下的Student_DB.mdf

这里mdf是主数据文件的后缀

Size等于10MB

这里定义了主数据文件初始规模为10M

MaxSize等于50MB

定义主数据文件最大规模为50M

FileGrowth等于15%

定义为文件增长的增量每次为15%

后面的数据文件组FileGroup

和日志文件Log ON的定义相似

我们就不细说了

请大家自己学习

现在

我们定义了一个学生数据库

如果需要修改

可以使用ALTER DATABASE动词

下面是它的语法格式

这个命令对database_name指定的数据库进行修改

用ALTER DATABASE的命令

其中ADD FILE用于增加数据文件

REMOVE FILE用于删除已存储的数据文件

MODIFY FILE用于修改已存储的数据文件

最后MODIFY NAME用于修改数据库的标识符

其他修改操作类似

同样我们不细说

下面我们来举一个具体的例子

这里Alter DataBase Student_DB

是对我们刚刚创建好的

Student_DB数据库进行修改

首先我们用Modify File

修改数据文件的初始规模

把Size重新设定为20M

然后

用Add File增加一个新的数据文件定义

定义方式与前面创建数据库时

使用的定义方式一致

那如果我们要删除已创建好的数据库

就直接使用DROP DATABASE

加上数据库标识符就可以了

当然

特别要注意

如果删除数据库一定要谨慎使用

因为数据将会全部被删除掉

在定义数据库后

我们可以在里面

继续定义装数据的数据表

定义数据表的动词

与定义数据库的动词非常相似

同样是Create

Alter和DROP

只是后面跟TABLE和数据表的标识符

首先看一下定义数据表

定义数据表本质上是定义表的结构

在CREATE TABLE定义数据表的名称后面

定义构成表的各个列的列名

规定列存储的数据类型

和必要的完整性约束条件

这里表的列也称为数据表的属性

不过

我们下面统一用列进行描述

定义完列之后

可以在最后

定义整个数据表的完整性约束条件

这里说的完整性约束包括

用UNIQUE定义输入的数据唯一

不能重复

用DEFAULT定义默认值

用Primary Key是定义主键约束

用Foreign key是定义外键约束

CHECK是用来定义输入数据格式

或内容的一个约束

我们之前定义了学生数据库

下面我们在这个数据库里面

定义三张数据表

它们分别是学生表

课程表和成绩表

其中

学生表我们定义学号S#

学生姓名定义Sname

入学年龄定义Age

性别定义Gender

和所学习系的系定义Dept

课程表C定义课程号C#

课程名Cname和课程类型Ctype

成绩表SC定义学生S#

在课程C#所获得的成绩Grade

下面我们以学生表为例

来看看如何定义数据表

首先

使用Create Table动词定义学生表S

在定义表结构中的各个列时

首先定义列标识符

然后定义对应的数据类型

和完整性约束条件

例如

学号标识符我们定义为S#

后面数据类型我们定义为

10字符长度的定长字符类型char(10)

完整性约束条件是

学号不能空

定义为NOT NULL

且必须唯一定义为UNIQUE

按照同样的方式定义完所有其他列之后

可以在最后定义数据表的完整性约束条件

例如

我们定义学号S#为主键

就在最后用Primary Key(S#)进行约束

当然

这里如果定义了学号S#为主键

针对S#的前面

我们定义了列完整性约束非空

NOT NULL和唯一UNIQUE

就可以不定义了

因为主键定义

就是约束其非空和唯一条件

课程表和成绩表的定义类似

我们只看看区别

课程表主键定义为课程号C#

由于是单个列定义为主键

所以

我们可以把主键约束Primary key

直接定义为C#的列完整性约束条件

再来看成绩表

由于成绩表的两个列

学生学号S#和课程号C#

共同构成成绩表的主键

因此

必须定义为表级的完整性约束

注意

我们不能在这两个列后面

同时增加Primary key的约束

语法是通不过的

另外

学生学号S#和课程号C#

分别是对应学生表和课程表的外键

因此我们用foreign key进行外键定义

并用refreneces指向外键对应的数据表

和具体的属性列

最后一行

我们使用check约束限制

成绩要么为空

grade is null

要么其数值在0到100之间

grade Between 0 and 100

在定义了数据表之后

如果我们需求修改

可以使用ALTER Table进行修改

其中

使用ADD可以增加一个新的列

使用DROP可以删除一个已经定义的列

使用ALTER可以修改已经定义的一个列

需要注意

新增加的列

不能增加非空NOT NULL的完整性约束条件

原因很简单

在修改数据表之前

数据表中很可能已经有数据了

增加新的列

下面的数据自然是空的

所以不能定义为NOT NULL

对于修改数据表

我们举一个非常简单的示例

我们修改数据表S就Alter Table S

增加一个属性列就Add Address

定义数据类型就varchar(30)

就是在学生表中

增加一个保存学生家庭住址的列

数据类型用变长字符型

长度为30字符

当然

一个数据表中的列

有可能被其他数据库对象引用

比如说视图

因此

在删除列的时候

通常要指明是CASCADE方式

还是RESTRICT方式

CASCADE表示删除列时

所引用到的数据库对象中的

对应列也要一起级联删除

而RESTRICT表示

当没有数据库对象引用时

可以删除

否则拒绝删除操作

最后需要注意的是

在修改一个

已经定义了列的数据类型时

新数据类型必须和原数据类型要匹配

并且一般新增数据类型的长度

要能够存储表中已经有的数据

和删除数据库类似

删除数据表使用DROP动词

不同的是

后面增加上Table

和要删除的数据表标识符即可

同样需要注意

数据表一旦删除

表中的数据

在这个数据表上建立的数据库对象

比如说索引和视图

都会被自动删除掉

所以一定要谨慎执行删除操作

好了

上面我们介绍使用SQL中的

数据定义语言DDL

来完成数据库和数据表的定义

包括

创建

修改和删除

它们都用了共同的Create

Alter和Drop动词

数据库定义主要定义数据文件

日志文件和文件组

而数据表则主要定义属性列

数据类型和完整性约束

下面我们要介绍如何操作

我们定义的数据库和数据表

谢谢大家

数据库概论课程列表:

导论

-数据库概述

--Video

-导论--数据库概述

第一章 数据库基础

-1.1 数据库基础

--Video

-第一章 数据库基础--1.1 数据库基础

第二章 关系运算

-2.1 CAP数据库

--CAP数据库

-第二章 关系运算--2.1 CAP数据库

-2.2 自然关系运算1

-- 自然关系运算1

-第二章 关系运算--2.2 自然关系运算1

-2.3 自然关系运算2

--自然关系运算2

-第二章 关系运算--2.3 自然关系运算2

第三章 结构化查询语言SQL

-3.1 SQL概述

-- SQL概述

-3.1 SQL概述--作业

-3.2 数据定义DDL

--数据定义DDL

-3.2 数据定义DDL--作业

-3.3 SQL数据更新DML

--SQL数据更新DML

-3.3 SQL数据更新DML--作业

-3.4 复杂SQL查询操作1

--复杂SQL查询操作1

-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1

-3.5 复杂SQL查询操作2

--复杂SQL查询操作2

-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2

第四章 数据库完整性、视图与安全性

-4.1 数据完整性

--4.1 数据完整性

-4.1 数据完整性--作业

-4.2 完整性约束

--完整性约束

-4.2 完整性约束--作业

-4.3 外键约束

--外键约束

-4.3 外键约束--作业

-4.4 触发器

--触发器

-4.4 触发器--作业

-4.5 视图

--视图

-4.5 视图--作业

-4.6 安全性

--安全性

-4.6 安全性--作业

第五章 索引

-5.1 索引

--Video

-5.2 B+树索引

--Video

第六章 规范化理论

-6.1 函数依赖

--Video

-6.2 Armstrong公理

--Video

-6.3 无损分解

--Video

-6.4 范式举例

--Video

-6.5 三种范式

--Video

-6.5 三种范式--作业

第七章 实体关系模型

-7.1-E-R模型概述

--E-R模型概述

-7.2 E-R模型详解

--Video

-7.3 E-R模型的拓展

--Video

-7.4 E-R模型实例分析

--Video

第八章 事务处理

-8.1 事务的ACID性质介绍

--ACID介绍

-8.1 事务的ACID性质介绍--作业

-8.2 事务经历

--事务经历

-8.2 事务经历--作业

-8.3 可串行化调度和前趋图

--可串行化调度和前趋图

-8.3 可串行化调度和前趋图--作业

-8.4 两阶段封锁

--两段锁协议

-8.4 两阶段封锁--作业

-8.5 隔离级别

--隔离级别

-8.5 隔离级别--作业

-8.6 事务恢复

--事务恢复

-8.6 事务恢复--作业

第九章 数据库应用与开发

-9.1 数据库使用介绍

--数据库使用介绍

-9.2 Java访问数据库

--Java访问数据库

-9.2 Java访问数据库--作业

第十章 其他数据库技术概述

-10.1 数据库新技术概述

--Video

数据定义DDL笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。