表是数据库中的主要对象,是用来存储数据和操作数据的逻辑结构的。表的结构包括列(Column)和行(Row),列主要描述数据的属性,而行是组织数据的单位。当用户使用数据库时,大部分时间是在与表打交道。表的容量及访问速度在一定程度上体现了数据库性能的好坏。在数据库的开发中,对表进行规划、设计和实现,是数据库成功的关键。
本章主要介绍如何对表进行规划、创建和管理,具体内容包括:
n 如何创建表
n 如何修改表的结构
n 如何向表中插入数据
n 如何删除表中的数据
n 如何删除表
表用来存储各种各样的信息,具有以下特点:
n 表是一个存储数据的实体,具有唯一的名称。
n 表由行和列组成。行又称为记录,列称为字段。
n 行和列的顺序是任意的。
n 列名在表中的唯一性由SQL Server强制实现,行在表中的唯一性通过增加列的关键字来实现,在一个表中,没有相同的两行。
表5-1是某公司的销售数据库中的一个表。
表5-1 表说明
|
定单ID |
客 户 |
产品名称 |
定单日期 |
|
20001010 |
A10001 |
AC—0900 |
|
|
20001012 |
A1000 |
AC—0901 |
|
|
19990502 |
B00999 |
CDK—200 |
|
|
19990505 |
A10020 |
CDK—300 |
|
|
20000715 |
B10080 |
CDK—400 |
|
|
19990723 |
C10096 |
ADC—8080 |
|
|
20000821 |
C10098 |
ADC—8000 |
|
|
20009011 |
D00300 |
CDB—801 |
|
|
19991021 |
D10080 |
CDB—802 |
|
数据库中的数据一般保存在永久性的表中,在表创建后,就一直存在,直到用户删除为止。除了永久表,用户还可以创建临时表,临时表的使用方法和永久表相同,只是它保存在内存中,当用户不使用临时表时,系统会自动删除临时表。
一个表可以有1024个列,列名在一个表中是唯一的,但一个数据库中的不同表可以有相同名称的列。在一个数据库中,可能有由不同用户创建的表,由不同用户创建的表可以具有相同的名称,比如,在一个数据库中,可以创建两个表Orders,一个Orders表是由Tom创建的。另外一个Orders表是由john创建的。为了区别这种类型的表,可以在表名称的前面加上创建表的用户名。
创建表的两种方法:
n 使用CREATE TABLE语句创建表
n 使用SQL Enterprise Manager创建表
使用CREATE TABLE语句创建表的句法如下:
CREATE TABLE table_name
(
{<column_defination>
|column_name AS computed_column_expression
|<table_constraint>
}[,…n]
)
[On{filegroup|DEFAULT}]
[TEXTIMAGE_ON{filegroup|DEFAULT}]
下面举一个例子,结合这个例子向读者介绍各个选项的含义。
程序清单如下:
CREATE TABLE employees
(
number int not null,
name varchar(10)not null,
sex char(3)null,
birthday datetime null,
hometown varchar(30)null,
telephone varchar(15)null,
address varchar(30)null,
)
上面的代码创建一个名为employees的表。该表中有七个字段,每一个字段都具有字段名、数据类型以及是否为null属性。Number表示职员的ID号,数据类型为Int,不允许空;name表示职员姓名,数据类型为varchar,长度为30,不允许空;sex为职员性别,数据类型为char,长度为3,允许空;birthday表示职员生日,类型为datetime,允许空:hometown表示职员籍贯,数据类型为varchar,长度为30,允许空;telephone表示职员电话,数据类型varchar,长度为15,允许空;address表示职员地址,数据类型为varchar,长度为30,允许为空。
表5-1是某公司的定单表,存储了定单的相关信息,包括:定单ID、客户ID、产品名称和定单日期。下面使用CREATE TABLE语句创建该表,程序清单如下:
CREATE TABLE orders
(
order_ID char(10)not null,
customer_ID char(10) not null,
product_name varchar(30)not null,
order_date date time not null
)
在Orders表中,有四个字段。Order_ID表示定单ID,数据类型为char,长度为10,不允许为空;customer_ID表示客户ID,数据类型为char,长度为10,不允许为空;product_name表示产品名称,数据类型为varchar,长度为30,不允许为空;order_date表示定单日期,数据类型为datetime,不允许为空。
使用SQL Enterprise Manager创建表的步骤如下:
(1)单击“开始”菜单,选择“程序”子菜单中的Microsoft SQL Server菜单项,在其子菜单中,单击Enterprise Manager,打开Enterprise Manager窗口。
(2)打开某个服务器组,然后打开一个服务器。
(3)单击Databases,打开需要创建的表所在的数据库,比如,选择在MDB数据库中创建表,如图5-1所示。
图5-1 数据库对象窗口
(4)用鼠标右键单击Tables,弹出如图5-2所示的快捷菜单,单击New Table,打开如图5-3所示的创建表结构窗口。
图5-2 表快捷菜单
图5-3 创建表结构窗口
(5)键入相应的列值,每一行代表表中的一列。
(6)在某一行中单击鼠标右键,弹出如图5-4所示的快捷菜单。选择相应的命令可以进行主键设备、插入列、删除列、选择属性等操作。
在图5-4的快捷菜单中,单击Properties菜单项,打开表属性对话框,选择Tables选项卡,如图5-5所示。在Table Name文本框中,键入表的名称,在Table Filegroup列表框中,选择放置表的文件组,在Text Filegroup列表框中,选择放置Text、Image列的文件组。
图5-4 行快捷菜单
图5-5 表属性对话框
在表创建之后,可能由于种种原因,需要调整或者修改表的结构,包括增加和删除列、改变表的名称和所有者等。
改变表的结构有如下两种方法:
n 使用ALTER TABLE命令增加或删除列
n 使用SQL Enterprise Manager增加或删除列
使用ALTER TABLE命令增加或删除列的句法如下:
ALTER TABLE table_name
{
ADD
{[<column_definition>]
|column_name AS computed_column_expression
|[<table_constraint>]}
|[,…n]
|DROP
|COLUMN column
|[,…n]
}
下面这段代码创建一个表test,然后显示其结构信息,再在表中增加一个名为column_b的字段,它的数据类型为varchar,长度为30。然后再查看表的结构。程序清单如下:
CREATE TABLE test(column_a int)
GO
EXEC sp_help,test
GO
ALTER TABLE test ADD column_b varchar(30)null
GO
EXEC sp_help,test
GO
其中,GO语句是查询批处理的结束标志,用于把Transact-SQL语句分开执行。
下面这段代码创建一个表test,然后再查看表的结构。程序清单如下:
CREATE TABLE test(column_a int,column_b varchar(30))
EXEC so_help,test
GO
ALTER TABLE test ADD column_b varchar(30) null
GO
EXEC sp_help,test
GO
使用SQL Enterprise Manager增加或删除列的步骤如下:
(1)启动SQL Enterprise Manager。
(2)打开某个服务器组,然后打开一个服务器。
(3)打开Databases,选择要修改的表所在的数据库,在这里选择MDB数据库,在右面的窗格中列出了该数据库中的表项,如图5-6所示。
图5-6 数据库中的表项
(4)在表项中用鼠标右键单击需要修改的表,弹出一个快捷菜单,如图5-7所示,选择Design Table,打开设计表窗口,如图5-8所示。
(5)在要删除的列上单击鼠标右键,弹出一个快捷菜单,单击Delete column菜单项,即可删除选定的列。
(6)要增加一列,先选择所增加的新列的下一个列,然后单击鼠标右键,在弹出的快捷菜单中选择Insert Column菜单项,这时,会在选定的列前出现一个空行,如图5-9所示,在空行中键入相应信息。
(7)单击工具栏上的保存按钮,保存所做的修改。
图5-7