实验2 建立表和定义完整性约束

该实验旨在熟练掌握数据库中表的创建和数据完整性的定义,通过CREATE TABLE和ALTER TABLE命令操作。实验者需在已有的数据库基础上,根据指定的结构建立表并设置完整性约束,包括新增字段、修改字段类型及定义数值范围等。

实验名称:建立模式、表和定义完整性约束。
实验内容:在实验1建立的数据库的基础上,参照图3-4和表3-10建立表和定义完整性约束。
图3-4  订货数据库
在这里插入图片描述
在这里插入图片描述
表3-10  订货数据库字段和约束说明
实验目的:熟练掌握表的建立和数据完整性速描定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
实验方法:在实验一建立数据库的基础上用CREATE TABLE命令建立表并定义数据完整性约束,用ALTER TABLE命令修改表结构。
实验要求
1.用CREATE SCHEMA命令建立模式(自己命名模式名称)。
2.在定义的模式下参照图3-4和表3-10使用CREATE TABLE命令建立表并定义完整性约束。
3.使用ALTER TABLE命令按如下要求修改表结构: 
(1)为订购单增加一个新的字段“完成日期”,类型为日期时间型,默认是空值。
(2)为订单明细表的“数量”字段重新定义约束:大于0、小于等于1000的正整数,不允许为空值。
(3)将供应商表的供应商名字段的类型修改为varchar(30)。
实验者: 何小变

实验一建立的数据库:

**以上代码必须在英文全角的状态下输入**
CREATE DATABASE test1
ON
(NAME=TEST1,
FILENAME='D:/HE/DATA.mdf',   //数据文件的存储位置。
SIZE=5,  //可带单位可不带,默认单位为MB。
MAXSIZE=10,
FILEGROWTH=5)      //存储空间的增长量,最大不能超过MAXSIZE-SIZE。
LOG ON
(NAME=TEST_LOG,
FILENAME='D:/HE/LOG.ldf',  //此次是单引号引出存储地址。
SIZE=10MB,
MAXSIZE==20MB,
FILEGROWTH=10MB)

1.注意:建立模式和使用数据库的语句要一条一条的执行。
建立模式:

CREATE SCHEMA company

使用数据库test1:

USE  test1 //需要使用数据库才能建表。

2.开始建表:
仓库表

CREATE TABLE company.仓库
(仓库号 char(6) PRIMARY KEY check(仓库号 like'[A-Z][A-Z][0-9][0-9][0-9][0-9]'),  //注意:“-”号不能写成“~”号。
城市 char(10) UNIQUE NOT NULL,
面积 int check(面积>=50))

职工表

CREATE TABLE company.职工
(职工号 char(8) PRIMARY KEY check(职工号 like'[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]'),  //此时另外对职工号进行约束,前两位为大写英文字母,后六位位数字字符。
仓库号 char(6) FOREIGN KEY REFERENCES company.仓库(仓库号),
工资 money check(工资>=1000 and 工资<=10000))// 工资约束也可写成(工资 between 1000 and 10000)

供应商表

CREATE TABLE company.供应商
(供应商号 char(4) PRIMARY KEY check(供应商号 like '[S][0-9][0-9][0-9]'),
供应商名 char(16),
地址 char(30))

订购单表

CREATE TABLE company.订购单
(职工号 char(8) FOREIGN KEY REFERENCES  company.职工(职工号) NOT NULL,
供应商号 char(4) FOREIGN KEY REFERENCES  company.供应商(供应商号), NULL
订购单号 char(6) PRIMARY KEY check(订购单号 like'[O][R][0-9][0-9][0-9][0-9]'),
订购日期 datetime default getdate(), 
金额 money NULL  )

订购单明细表

CREATE TABLE company.订购单明细
(订购单号 char(6)  FOREIGN KEY REFERENCES company.订购单(订购单号) NOT NULL,
序号 char(2),
产品名称 char(20),
单价 money check(单价>0) null,
数量 int check(数量>0) not null,
primary key(订购单号,序号))  

3.修改表结构:
(1)

ALTER  TABLE company.订购单
ADD 完成日期 datetime NULL

(2)

ALTER TABLE company.订购单明细
ADD CONSTRAINT 数量 CHECK (数量 BETWEEN 0 AND 1000)

(3)

ALTER TABLE company.供应商
ALTER COLUMN  供应商名 varchar(30)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值