当前位置:文档之家› 数据库实验-实验三

数据库实验-实验三

实验报告
一、目的(本次实验所涉及并要求掌握的知识点)
数据库相关操作
二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析)
1.创建学生数据库STUXXX,并在其中创建表(列请选择适当类型):
学生表:Studentxxx
课程表:Coursexxx
学生选课表:SCxxx
2.创建临时表
(1)局部临时表
(2)全局临时表(选择适当类型)
3.修改表Studentxxx,把Sname设为主键,同时保持scxxx的外键sno Studentxxx.Sno.
三、实验使用环境(本次实验所使用的平台和相关软件)
平台:Win10
软件:Sql server 2016
四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
1.创建学生数据库STUXXX,并在其中创建表(列请选择适当类型):
学生表:Student103
(Sno, --主键,6位全为数字,第一位非0
Sname,--唯一
Ssex, --‘男’或‘女’
Sage, --大于0
Sdept—计算机、软件、网络,信息之一
)
CREATE DATABASE STU103
CREATE TABLE Student103(
Sno varchar(6)primary key
check( Sno like'[1-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
Sname NVARCHAR(10)UNIQUE,
Ssex char(2)check(Ssex='男'OR Ssex='女'),
Sage int check(Sage>0),
Sdept NCHAR(5)check(Sdept='计算机'OR Sdept='软件'OR Sdept='网络'OR Sdept='信息'))
课程表:Course xxx
(
Cno,--主键,4位全为数字,第一位非0
Cname,--非空
Cpno,--外键—>Cno
Ccredit --默认为2
)
CREATE TABLE Course103(
Cno varchar(4)PRIMARY KEY
CHECK ( Cno like'[1-9][0-9][0-9][0-9]'),
Cname NVARCHAR(10)NOT NULL,
Cpno varchar(4)foreign key references Course103(Cno),
Ccredit int default('2'))
学生选课表:
SC xxx
(
Sno,--外键,主键。

当Student表中的学号修改或删除时,自动修改或删除;Cno,--外键,主键。

当有该课程成绩时,禁止Course修改或删除;
Pscj,0~100,默认为0,一位小数
Qkcj,0~100,默认为0,一位小数
Zpcj,0.3*pscj+0.7*qkcj
)
CREATE TABLE SC103(
Sno varchar(6)foreign key references Student103(Sno),
Cno varchar(4)foreign key references Course103(Cno),
PRIMARY KEY(Sno,Cno),
Pscj DECIMAL(4,1)check (Pscj<100)default ('0'),
Qkcj DECIMAL(4,1)check (Qkcj<100)default ('0'),
Zpcj AS ([Pscj]*(0.3)+[Qkcj]*(0.7)))
2.创建临时表
(1)局部临时表
#txxx
(id , --自增长列
C, --类型自定) --尝试添加数据
(2)全局临时表(选择适当类型)
##txxx
(A uniqueidentifier ,--主键,取值newid()
B timestamp )--尝试添加数据
CREATE TABLE #t103(
id INT identity(1,1),
C n varchar(10))
CREATE TABLE ##t103(
A uniqueidentifier NOT NULL PRIMARY KEY DEFAULT NEWID(),
B timestamp)
3.修改表Student xxx,把Sname设为主键,同时保持scxxx的外键sno Student xxx.Sno.
(1)把Sname设为主键,要先删除Sno的主键
EXEC sp_help Student103用于查找约束的名称
删除Sno主键时发现必须先删除SC103表的外键约束
删除外键约束
ALTER TABLE SC061 DROP constraint FK__SC103__Sno__3C69FB99
(2)删除主键约束
ALTER TABLE Student103 DROP PK__Student1__CA1FE464793FE7BD
(3)查表发现:unique约束让Sname相当于主键,所以先删除这个约束
ALTER TABLE Student103 DROP constraint UQ__Student0__52723D2786388664
(4)修改Sname类型为不能留空(主键不能为空):not null ALTER TABLE Student103 alter column Sname NVARCHAR(10)not null
(5)设置Sname为主键
ALTER TABLE Student103 ADD PRIMARY KEY (Sname)
(6)设置Sno为unique类型
ALTER TABLE Student103 ADD constraint UN_Sname unique (Sno)
(7)设置外键
7.重新设置外键联系
ALTER TABLE SC103 ADD constraint FK__SC103__Sno__3C69FB99 foreign key(Sno)references Student103(Sno)
五、实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)
1、外键可以为空,但是需要UNIQUE做标识
2、在删除约束的时候,先用EXEC SP_HELPER找到约束条件的名字,然后再执行相关操作。

3、在设定第一位数不为零的时候可以用check函数的like来操作。

4、默认值可以用default函数。

5、有些命令还是不熟,字典里查到的和百度上查到的不太一样,具体的命令还是要多运用,多尝试。

相关主题