本系列同样是记录代码为主,附带实验内容与要求,可参考代码,SQL编码习惯为小写且习惯性换行。
实验的环境和软件为Microsoft SQLServer 2019。
实验内容:
1.创建教务管理数据库(jwgl),其数据文件和日志文件分别为jwgl_data.mdf和jwgl_log.ldf。
2.依据表1~表5所示创建对应的数据表,设置表的列名、数据类型及约束。
表1 学生表(student)
字段名称 | 字段类型及长度 | 说明 | 备注 |
sno | char(10) | 学生学号 | 主键 |
sname | char(6) | 学生姓名 | 非空 |
ssex | char(2) | 学生性别 | 可为空 |
sbirth | smalldatetime | 学生出生日期 | 可为空 |
clno | char(6) | 班级编号 | 外键 |
表2 课程表(course)
字段名称 | 字段类型及长度 | 说明 | 备注 |
cno | char(4) | 课程编号 | 主键 |
cname | varchar(20) | 课程名称 | 非空 |
chours | int | 学时 | 可为空 |
表3 选课表(sc)
字段名称 | 字段类型及长度 | 说明 | 备注 |
sno | char(10) | 学生学号 | 外键,联合主键 |
cno | char(4) | 课程编号 | 外键,联合主键 |
grade | int | 成绩 | 可为空 |
表4 班级表(class)
字段名称 | 字段类型及长度 | 说明 | 备注 |
clno | char(6) | 班级编号 | 主键 |
clname | varchar(20) | 班级名称 | 非空 |
clth | char(9) | 班主任编号 | 可为空 |
表5 教师表(teacher)
字段名称 | 字段类型及长度 | 说明 | 备注 |
tno | char(7) | 教师编号 | 主键 |
tname | char(10) | 教师姓名 | 非空 |
tsex | char(2) | 学生性别 | 默认为“男” |
dept | char(20) | 所在部门 | 可为空 |
sid | char(18) | 身份证号 | 非空 |
--3-1-1
create database 教务系统 on primary
(name='jwgl',
filename='E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\jwgl.mdf',
size=30,maxsize=unlimited,filegrowth=10)
log on
(name='jwgl_log',
filename='E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\jwgl_log.ldf',
size=20,maxsize=2048gb,filegrowth=10)
go
--3-1-2
use 教务系统
create table course(
cno char(4) primary key,
cname varchar(20) not null,
chours int)
bulk insert 教务系统.dbo.course
from 'E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\ex3data\course.txt'
use 教务系统
create table class(
clno char(6) primary key,
clname varchar(20) not null,
clth char(9))
bulk insert 教务系统.dbo.class
from 'E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\ex3data\class.txt'
use 教务系统
create table teacher(
tno char(7) primary key,
tname char(10) not null,
tsex char(2) default'm',
dept char(20),
tid char(18) not null)
use 教务系统
create table student(
sno char(10) primary key,
sname char(6) not null,
ssex char(2),
sbirth char(20),
clno char(6) foreign key references class(clno))
bulk insert 教务系统.dbo.student
from 'E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\ex3data\student.txt'
use 教务系统
create table sc(
sno char(10) foreign key references student(sno),
cno char(4) foreign key references course(cno),primary key(sno,cno),
grade int)
bulk insert 教务系统.dbo.sc
from 'E:\UniversityGrade2\Tail\DBMS\DBMS实验1\DBMS实验1\ex3data\sc.txt'
3.在student表中增加新字段“班级编号(clno)”和“班级名称(clname)”。
--3-1-3
alter table student
add clname varchar(20)
4.在student表中删除字段“班级名称(clname)”。
--3-1-4
alter table student
drop column clname
5.修改student表的sname字段的长度为6。
--3-1-5
alter table student
alter column sname char(6)
6.修改student表的sbirth字段的名称为sbirthday。
--3-1-6
EXEC sp_rename 'student.[sbirth]','sbirthday','column'
7.修改teacher表的名称为th_info。
--3-1-7
EXEC sp_rename @objname='teacher',@newname='th_info'
8.删除teacher表。
--3-1-8
drop table th_info
9.在sc表中为grade字段增加一个check约束,限制其值在0~100之间。
--3-1-9
alter table sc
add check (grade>=0 and grade<=100)