实验2 数据表的创建与管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 数据表的创建与管理
实验目的
1.掌握SQL Server 2005数据表的类型、数据类型。
2.掌握SQL Server 2005创建数据表的不同方法。
3.使用图形界面和使用SQL语句。
4.掌握数据表结构的查看、修改及删除的操作。
5.掌握数据的完整性,6个完整性约束的应用。
实验内容及步骤
一、表的创建
1.利用SQL Server管理平台创建表
在SQL Server管理平台中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表”选项,如图3-1所示。在图3-1的对话框中,可以对表的结构进行更改,设置主键及字段属性,使用SQL Server管理平台可以非常直观地修改数据库结构和添加数据。在表中任意行上右击,则弹出一个快捷菜单,如图3-2所示。
图3-1 新建表对话框
图3-2 设置字段属性对话框
2. 利用create命令创建表
使用create命令创建表非常灵活,它允许对表设置几种不同的选项,包括表名、存放位
置和列的属性等。其完整语法形式如下:
CREATE TABLE
[database_name.[owner].|owner.]table_name
({
[ON{ filegroup|DEFAULT}]
[TEXTIMAGE_ON { filegroup|DEFAULT}]
[COLLATE
[[DEFAULT constant_expression]
|[IDENTITY[(seed,increment )[NOT FOR REPLICATION]]]]
[ROWGUIDCOL]
[
例1创建了一个工人信息表,它包括工人编号、姓名、性别、出生日期、职位、工资和备注信息。
SQL语句的程序清单如下:
CREATE TABLE worker
(number char(8) not null,
name char(8) NOT NULL,
sex char(2) NULL,
birthday datetime null,
job_title varchar(10) null,
salary money null,
memo ntext null
)
3完整性约束
约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。在SQL SERVER中,对于基本表的约束分为列约束和表约束。
列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用’,’分隔,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:
[CONSTRAINT constraint_name(约束名)] <约束类型>
约束不指定名称时,系统会给定一个名称。
在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
1)主键(PRIMARY KEY)约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。PRIMARY KEY既可用于列约束,也可用于表约束。
例2 建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
CREATE TABLE SC
(SNO CHAR(5) NOT NULL,
CNO CHAR(5) NOT NULL,
SCORE NUMERIC(3),
CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO))
2)惟一性约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。当使用惟一性约束时,需要考虑以下几个因素:
使用惟一性约束的字段允许为空值;
•一个表中可以允许有多个惟一性约束;
•可以把惟一性约束定义在多个字段上;
•惟一性约束用于强制在指定字段上创建一个惟一性索引;
•默认情况下,创建的索引类型为非聚集索引。
例3创建一个学生信息表,其中name字段具有惟一性。
程序清单如下:
Create table student(
id char(8),
name char(10),
sex char(2),
constraint pk_id primary key(id),
constraint uk_identity unique(name)
)
3)检查约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
•一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
•一个表中可以定义多个检查约束;
•每个CREATE TABLE语句中每个字段只能定义一个检查约束;
•在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
•当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
•检查约束中不能包含子查询。
例4建立一个SC表,定义SCORE 的取值范围为0到100之间。
程序清单如下:
CREATE TABLE SC
(SNO CHAR(5),
CNO CHAR(5),
SCORE NUMERIC(5,1) CONSTRAINT SCORE_CHK CHECK(SCORE>=0 AND SCORE <=100))
4)默认(DEFAULT)约束
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。使用默认约束时,应该注意以下几点:(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
例5为 dept字段创建默认约束。
程序清单如下:
CREATE TABLE SC
(SNO CHAR(5) NOT NULL,
CNO CHAR(5) NOT NULL,