实验一 创建数据库及关系表、数据完整性约束
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一创建数据库及关系表、数据完整性约束
一、实验目的
1.掌握SQL Server数据库管理系统的使用,能够在该环境中进行日常数据库操作;
2.掌握在SQL Server中使用图形化工具创建数据库的方法;
3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;
4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤
1.创建符合如下条件的数据库:
数据库的名字为:Students
数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;
文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
实验结果:
2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:
3.写出实现如下操作的SQL语句,并查看执行结果:
(1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:教师号。
实验结果:
4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:
书号:统一字符编码定长类型,长度为6,主码,
书名:统一字符编码可变长类型,长度为30,非空,
第一作者:普通编码定长字符类型,长度为10,非空,
出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)
印刷数量:小整型,取值范围:1000~5000,默认为4000,
价格:定点小数,小数部分一位,整数部分3位。
实验结果:
(2)书店表,结构如下:
书店编号:统一字符编码定长类型,长度为6,主码,
店名:统一字符编码可变长类型,长度为30,非空,
电话:普通编码定长字符类型,12位长,取值形式:010-8位数字
地址:普通编码可变长字符类型,40位长。前两个字符必须是:北京。
实验结果:
(3)图书销售表,结构如下:
书号:统一字符编码定长类型,长度为6,非空,
书店编号:统一字符编码定长类型,长度为6,非空,
销售日期:小日期时间型,非空,默认值为系统当前日期,
销售数量:微整型,取值大于0,主码(书号,书店编号,销售日期);
书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。
实验结果:
5. 执行下列两条数据插入语句,是否都能执行成功?为什么?
INSERT INTO Book
VALUES('T0001','数据库系统基础','张三','2010-2-1', 3000,28.0)
实验结果:能执行
INSERT INTO Book
VALUES('T0002','计算机网络','张三','2010-1-1', 500,36.0)
实验结果:不能执行,原因:印刷数量小于1000
6. 执行下列数据插入语句,是否执行成功?为什么?
INSERT INTO Store VALUES('S001','新华书店',,'北京市海淀区')
实验结果:不能执行,原因:电话号码不符合标准
7. 执行一条数据插入语句,是否执行成功?为什么?
INSERT INTO Sale(书号,书店编号,销售数量)VALUES('T0001','S001',20)
实验结果:不能执行,原因:store是sale外键,其中store并没有添加进数据。
三、实验源码CREATE table Student(
学号CHAR(7)primary key,
姓名NCHAR(5)not null,
性别NCHAR(1),
年龄TINYINT,
所在系NVARCHAR(20),
专业NVARCHAR(20)
)
CREATE table Course(
课程号CHAR(6)primary key,
课程名NVARCHAR(20)NOT NULL,
学时数TINYINT,
学分TINYINT
)
CREATE TABLE SC(
学号CHAR(7)NOT NULL,
课程号CHAR(6)NOT NULL,
成绩TINYINT,
PRIMARY KEY (学号,课程号),
FOREIGN KEY (学号)REFERENCES Student(学号),
FOREIGN KEY (课程号)REFERENCES Course(课程号)
)
CREATE table Teather(
教师号CHAR(7)not null,
教师名NCHAR(5)not null,
所在部门NVARCHAR(20),
工资Smallmoney,
出生日期Smalldatetime
)
select*from Student
select*from Course
select*from SC
select*from Teather
ALTER TABLE SC
ADD选课类别char(4)
ALTER TABLE Course
ALTER COLUMN学分tinyint
ALTER TABLE Student
DROP COLUMN专业
ALTER TABLE Teather
ADD constraint ys primary key(教师号)
CREATE table Book(
书号NCHAR(6)primary key,
书名Nvarchar(30)not null,
第一作者CHAR(10)not null,
出版日期smalldatetime check(出版日期 印刷数量Smallint check(印刷数量< 5000 and印刷数量> 1000)default (4000), 价格decimal(3,1) ) CREATE table Store( 书店编号NCHAR(6)primary key, 店名NVARCHAR(30)NOT NULL, 电话Char(12)check(电话like '010-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 地址Varchar(40)check(地址like'北京%') ) Create table Sale ( 书号NCHAR(6)not NULL, 书店编号Nchar(6)not NULL, 销售日期Smalldatetime default getdate(), 销售数量tinyint check(销售数量> 0), primary key (书号,书店编号,销售日期), foreign key (书号)references Book(书号), foreign key (书店编号)references Store(书店编号) ) INSERT INTO Book VALUES('T0001','数据库系统基础','张三','2010-2-1', 3000,28.0) INSERT INTO Book VALUES('T0002','计算机网络','张三','2010-1-1', 500,36.0) INSERT INTO Store VALUES('S001','新华书店',,'北京市海淀区') INSERT INTO Sale(书号,书店编号,销售数量)VALUES('T0001','S001',20)