目录

一、数据表结构的创建

1、利用create命令创建表

2.关于创建表时运用约束的说明

(1)空值约束(NULL or NOT NULL)

(2)主键约束(primary key constraint)

(3)唯一性约束(unique constraint)

(4)检查约束(check constraint)

(6)外部键约束

二、数据表结构的管理

1、修改表中的信息

2.数据表结构的删除


一、数据表结构的创建

在SQL Server 2000中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义1024个字段。

SQL Server 2000提供了两种方法创建数据库表:

  • 第一种方法是利用企业管理器(Enterprise Manager)创建表;
  • 另一种方法是利用Transact-SQL语句中的create命令创建表。

1、利用create命令创建表

其语法形式如下:

CREATE TABLE <表名>

(

    <字段名>  <数据类型>[列级完整性约束条件]

   [,<字段名>  <数据类型> [列级完整性约束条件] …]

   [,<表级完整性约束条件>]

)

参数说明:

(1)是所要定义的基本表的名字。一个表它可以由一个或多个属性组成

(2)一般取有实际意义的名字。

(3)可以是前面介绍的数据类型。

(4)在SQL Server 2000中有下面几种完整性约束条件:

  • 空值约束(NULL or NOT NULL);
  • 主键约束(primary key constraint);
  • 唯一性约束(unique constraint);
  • 检查约束(check constraint);
  • 缺省约束(default constraint);
  • 外部键约束(foreign key constraint);
  • 规则(rule);
  • 缺省值(default)

2.关于创建表时运用约束的说明

(1)空值约束(NULL or NOT NULL)

空值NULL约束决定属性值是否允许为空值(NULL)。

NULL表示没有输入任何内容,它不是零和空白,不允许为空值则用NOT NULL表示。

例如:设置属性teacher允许为空值。

CREATE TABLE t
(
teacher char(8) NULL
)

(2)主键约束(primary key constraint)

       主健约束要求主健属性取值必须惟一一个表只能包含一个主健约束。如果没有在主健约束中指定CLUSTERED或NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该主健约束用CLUSTERED。

主键约束SQL的语法形式如下:

[CONSTRAINT 约束名] PRIMARY KEY
[CLUSTERED|NONCLUSTERED](列名[,…n])


例如:在执行创建产品信息表的操作时,指定产品编号为主键值。

CREATE TABLE products
(
id char(10) NOT NULL,
name char(20) NOT NULL,
price money,
quantity smallint NULL,
CONSTRAINT pk_products PRIMARY KEY CLUSTERED (id)
)


此例的主健名称是pk_products,在products表中关于id建立了一个索引排序。

(3)唯一性约束(unique constraint)

   唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值

创建唯一性约束SQL语句:

[CONSTRAINT 约束名] UNIQUE
[CLUSTERED|NONCLUSTERED](列名[,…n])


例:

CREATE TABLE student1
(
sno char(8),
sname char(16),
constraint pk_student primary key(sno),
constraint uniq_student unique(sname)
)

(4)检查约束(check constraint)

使用检查约束时,应该注意以下几点:

① 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。

② 一个中可以定义多个检查约束。

③ 每个CREATE TABLE语句中每个字段只能定义一个检查约束。

④ 在多个字段上定义检查约束,则必须将检查约束定义为表级约束

⑤ 检查约束中不能包含子查询

创建检查约束SQL语法格式为:

CONSTRAINT constraint_name

CHECK [NOT FOR REPLICATION] (logical_expression)

例如:创建一个职工信息表,其中输入性别字段值时,只能接受“F”或者“M”,并且为phonenum字段创建检查约束,限制只能输入类似01080798654之类的数据,而不能随意输入其他数据。

create table employee
(
Id char(8),
name char(8)    CHECK(NAME LIKE ‘[A-C,a-c][A-Z,a-z][A-Z][A-Z]’),
sex char(2),
phonenum int,
constraint chk_sex check(sex in (’F’,’M’))default ‘F’,
Constraint chk_phonenum check(phonenum like ‘(010)[8,9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]’)
)

(6)外部键约束

外部键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。当使用外部键约束时,应该考虑以下几个因素:

① 外部键约束提供了字段参照完整性。

② 外部键从句中的字段数目和每个字段指定的数据类型必须和REFERENCES从句中的字段相匹配。

外部键约束不能自动创建索引,需要用户手动创建。

④ 一个表中最多可以有31个外部键约束。

⑤ 在临时表中,不能使用外部键约束。

⑥ 主键和外部键的数据类型必须严格匹配。

外键约束SQL的语法形式如下:

[CONSTRAINT 约束名] FOREIGN KEY (外键列名)REFERENCES

参照表(参照列名)

外键约束主要用来维护两个表之间的一致性关系。 外键的建立主要是通过将一个表的主键所在列包含在另一个表中,这些列就是另一个表的外键。

create or replace table 只存在于mysql吗 数据库中create table_字段

外键的作用不只是对输入自身的数据进行限制,同时也限制了对主键所在表的数据进行修改

用户无法对主键里的数据进行修改和删除,除非事先删除或修改外键引用的数据。 

二、数据表结构的管理

1、修改表中的信息

利用企业管理器修改表结构的过程如图所示。单击“设计表”命令,将弹出表设计器。

例如:将教学管理数据库中的学生表的属性“sno”的长度改为7,属性“ssex”的长度改为2。

create or replace table 只存在于mysql吗 数据库中create table_字段_02

 

create or replace table 只存在于mysql吗 数据库中create table_数据库_03

 使用SQL命令修改表。

语法格式:

ALTER TABLE<表名>

ADD<新列名><数据类型>[完整性约束]

|ALTER COLUMN 列名 新类型

|DROP COLUMN 列名

|ADD PRIMARY KEY(列名[,…])

|ADD FOREIGN KEY(列名) REFERENCES 表名(列名)

|ADD CONSTRAINT 约束名….

|DROP CONSTRAINT 约束名

【例4-2】将教学管理数据库中的学生表属性“性别”的长度改为2。

其SQL语句的程序清单如下:

USE 教学管理 --打开教学管理数据库

GO

ALTER TABLE 学生表 ALTER COLUMN 性别 CHAR(2)

2.数据表结构的删除

可以用企业管理器或SQL语句删除基本表。

方法一:使用企业管理器

① 选中要删除的数据表,单击右键,在快捷菜单上选择“删除”。

② 在“除去对象”对话框中,单击“全部除去”。

方法二:使用SQL命令

SQL命令的一般格式为:

DROP TABLE <表名>