数据定义语句(DDL)是用于描述数据库中要存储的现实世界实体的语言。作为数据库管理系统的一部分,DDL用于定义数据库的所有特性和属性,例如行布局、字段定义、文件位置,常见的数据定义语句有CREATE DATABASE、CREATE TABLE、CREATE VIEW、DROP VIEW、ALTER TABLE等。下面将分别介绍各种数据定义语句。
作为数据库操作语言中非常重要的部分,CREATE用于创建数据库、数据表以及约束等,下面将详细介绍CREATE的具体应用。
创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理。创建数据库时需要指定数据库的名称、文件名称、数据文件大小、初始大小、是否自动增长等内容。SQL Server中可以使用CREATE DATABASE语句,或者通过对象资源管理创建数据库。这里主要介绍CREATE DATABASE的用法。CREAETE DATABASE语句的基本语法格式如下:
主要参数介绍如下:
【例4.1】创建名称为test_db数据库,输入语句如下:
该段代码创建一个名称为test_db的数据库,设定数据库的主数据文件名称为test_db_data1、主数据文件大小为5MB、增长大小为1MB。注意,该段代码没有指定创建事务日志文件,但是系统默认会创建一个数据库名称加上_log的日志文件,该日志文件的大小为系统默认值2MB,增量为10%,因为没有设置增长限制,所以事务日志文件的最大增长空间将是指定磁盘上所有剩余可用空间。
在创建完数据库之后,接下来的工作就是创建数据表。所谓创建数据表,指的是在已经创建好了的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。创建数据表使用CREATE TABLE语句。CREATE TABLE语句的基本语法格式如下:
主要参数介绍如下:
【例4.2】在test_db数据库中创建员工表tb_emp1,结构如表4-1所示。
表4-1 tb_emp1表结构
输入语句如下:
USE test_db CREATE TABLE tb_emp1 ( id INT PRIMARY KEY, name VARCHAR(25) NOT NULL, deptId CHAR(2) NOT NULL, salary SMALLMONEY NULL );
该段代码将在test_db数据库中添加一个名称为tb_emp1的数据表。读者可以打开表的设计窗口,看到该表的结构,如图4-1所示。
图4-1 tb_emp1表结构
既然能够创建数据库和数据表,那么也能将其删除。DROP语句可以轻松地删除数据库和表。下面介绍如何使用DROP语句。
删除数据表是将数据库中已经存在的表从数据库中删除。注意,删除表的同时,表的定义和表中数据、索引和视图也会被删除,因此,在删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果(如果要删除的表是其他表的参照表,此表将无法删除,需要先删除表中的外键约束或者将其他表删除)。删除表的语法格式如下:
DROP TABLE table_name
table_name为要删除的数据表的名称。
【例4.3】删除test_db数据库中的table_emp表,输入语句如下。
USE test_db GO DROP TABLE dbo.table_emp
删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除,删除数据库的基本语法格式为:
DROP DATABASE database_name
database_name为要删除的数据库的名称。
【例4.4】删除test_db数据库,输入语句如下。
DROP DATABASE test_db
当数据库结构无法满足需求或者存储空间已经填满时,可以使用ALTER语句对数据库和数据表进行修改。下面将介绍如何使用ALTER语句修改数据库和数据表。
修改数据库可以使用ALTER DATABASE语句,其基本语法格式如下:
主要参数介绍如下:
【例4.5】将test_db数据库的名称修改为company,输入语句如下。
ALTER DATABASE test_db MODIFY NAME=company
修改表结构可以在已经定义的表中增加新的字段列或删除多余的字段。实现这些操作可以使用ALTER TABLE语句,其基本语法格式如下:
ALTER TABLE [ database_name . [ schema_name ] . ] table_name { ALTER { [COLUMN column_name type_name [column_constraints] ] [,……n] } | ADD { [ column_name1 typename [column_constraints],[table_constraint] ] [, ……n] } | DROP { [COLUMN column_name1] [, ……n] } }
主要参数介绍如下:
【例4.6】在更改过名称的company数据库中,向tb_emp1数据表中添加名称为birth的字段列,数据类型为date,要求非空,输入语句如下。
USE company GO ALTER TABLE tb_emp1 ADD birth DATE NOT NULL
【例4.7】删除tb_emp1表中的birth字段列,输入语句如下:
USE company GO ALTER TABLE tb_emp1 DROP COLUMN birth