一. 实验目的
- 熟悉SQL Server Management Studio环境的使用。
- 了解SQL中的数据库的类型。
- 掌握SQL Server Management Studio环境下创建数据库和表的操作。
- 运用SQL语句创建数据库;运用SQL语句创建表;
- 了解数据库的结构,各种文件的扩展名。
- 查看数据库和表。
- 创建并使用约束和默认值对象,掌握实现数据库的完整性的方法。
二. 实验内容
- 熟悉SQL Server 环境。
- 在 Management Studio环境下创建Study数据库。
- 在Study数据库中创建六个数据表:学生基本情况数据表Student、班级数据表Class、课程数据表Course、选修课程情况数据表Choice、教师数据表Teacher、教师任课情况表Teaching。
- 在创建的六个数据表中输入数据。
- 创建各表的约束,默认值。
- 为两表建立关联,实现参照完整性。
- 运用SQL语句重复上述实验内容。
- 利用对象资源管理器的数据库备份功能,将以上建立的数据库Study备份到所建立的文件夹中,并将备份文件拷贝到U盘中,以备后面的实验使用。
各表的结构如下:
① 学生基本情况数据表Student,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
s_no | char(6) | primary key | 学号 |
class_no | char(6) | not null | 班级号 |
s_name | varchar(10) | not null | 学生姓名 |
s_sex | char(2) | ‘男’或‘女’ | 性别 |
s_birthday | datetime |
| 出生日期 |
② 班级数据表Class,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
class_no | char(6) | primary key | 班级号 |
class_name | char(20) | not null | 班级名称 |
class_special | varchar(20) |
| 所属专业 |
class_dept | char(20) |
| 系别 |
③ 课程数据表Course,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
course_no | char(5) | primary key | 课程号 |
course_name | char(20) | not null | 课程名称 |
course_score | numeric(6,2) |
| 学分 |
④ 选修课程情况数据表Choice,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
s_no | char(6) |
| 学号 |
course_no | char(5) |
| 课程号 |
score | numeric(6,1) |
| 成绩 |
⑤ 教师数据表Teacher,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
t_no | char(6) | primary key | 教师号 |
t_name | varchar(10) | not null | 教师姓名 |
t_sex | char(2) | ‘男’或‘女’ | 性别 |
t_birthday | datetime |
| 出生日期 |
t_title | char(10) |
| 职称 |
⑥ 教师任课情况表Teaching,结构如下:
字 段 名 | 字 段 类 型 | 约 束 控 制 | 字段含义说明 |
couse_no | char(5) |
| 课程号 |
t_no | char(6) |
| 教师号 |
各表的数据记录如下:
① 学生基本情况数据表Student的内容如下:
s_no | class_no | s_name | s_sex | s_birthday |
991101 | js9901 | 张彬 | 男 | 1981-10-1 |
991102 | js9901 | 王蕾 | 女 | 1980-8-8 |
991103 | js9901 | 李建国 | 男 | 1981-4-5 |
991104 | js9901 | 李平方 | 男 | 1981-5-12 |
991201 | js9902 | 陈东辉 | 男 | 1980-2-8 |
991202 | js9902 | 葛鹏 | 男 | 1979-12-23 |
991203 | js9902 | 藩桃芝 | 女 | 1980-2-6 |
991204 | js9902 | 姚一峰 | 男 | 1981-5-7 |
001101 | js0001 | 宋大方 | 男 | 1980-4-9 |
001102 | js0001 | 许辉 | 女 | 1978-8-1 |
001201 | js0002 | 王一山 | 男 | 1980-12-4 |
001202 | js0002 | 牛莉 | 女 | 1981-6-9 |
002101 | xx0001 | 李丽丽 | 女 | 1981-9-19 |
002102 | xx0001 | 李王 | 男 | 1980-9-23 |
② 班级数据表Class的内容如下:
class_no | class_name | class_special | class_dept |
js9901 | 计算机99-1 | 计算机 | 计算机系 |
js9902 | 计算机99-2 | 计算机 | 计算机系 |
js0001 | 计算机00-1 | 计算机 | 计算机系 |
js0002 | 计算机00-2 | 计算机 | 计算机系 |
xx0001 | 信息00-1 | 信息 | 信息系 |
xx0002 | 信息00-2 | 信息 | 信息系 |
③ 课程数据表Course的内容如下:
course_no | course_name | course_score |
01001 | 计算机基础 | 3 |
01002 | 程序设计语言 | 5 |
01003 | 数据结构 | 6 |
02001 | 数据库原理与应用 | 6 |
02002 | 计算机网络 | 6 |
02003 | 微机原理与应用 | 8 |
④ 选修课程情况数据表Choice的内容如下:
s_no | course_no | score |
991101 | 01001 | 88.0 |
991102 | 01001 |
|
991103 | 01001 | 91.0 |
991104 | 01001 | 78.0 |
991201 | 01001 | 67.0 |
991101 | 01002 | 90.0 |
991102 | 01002 | 58.0 |
991103 | 01002 | 71.0 |
991104 | 01002 | 85.0 |
⑤ 教师数据表Teacher的内容如下:
t_no | t_name | t_sex | t_birthday | t_title |
000001 | 李英 | 女 | 1964-11-3 | 讲师 |
000002 | 王大山 | 男 | 1955-3-7 | 副教授 |
000003 | 张朋 | 男 | 1960-10-5 | 讲师 |
000004 | 陈为军 | 男 | 1970-3-2 | 助教 |
000005 | 宋浩然 | 男 | 1966-12-4 | 讲师 |
000006 | 许红霞 | 女 | 1951-5-8 | 副教授 |
000007 | 徐永军 | 男 | 1948-4-8 | 教授 |
000008 | 李桂菁 | 女 | 1940-11-3 | 教授 |
000009 | 王一凡 | 女 | 1962-5-9 | 讲师 |
000010 | 田峰 | 男 | 1972-11-5 | 助教 |
⑥ 教师任课情况表Teaching的内容如下:
course_no | t_no |
01001 | 000001 |
01002 | 000002 |
01003 | 000002 |
02001 | 000003 |
02002 | 000004 |
01001 | 000005 |
01002 | 000006 |
01003 | 000007 |
02001 | 000007 |
02002 | 000008 |
三.创建数据库及基本表
1.建立一个属于自己的新数据库Study
create database Studyon(
name=Study,
filename='C:\Study.mdf',
size=5,
maxsize=50,
filegrowth=5)
log on( name=Study_log,
filename='C:\Study_log.ldf',
size=5,
maxsize=50,
filegrowth=5)
2.建立表Class
create table Class(
class_no char(6) primary key,
class_name char(20) not null,
class_special varchar(20),
class_dept char(20)
)
3.建立表Student
/*创建表Student*/
create table Student(
s_no char(6) primary key,
class_no char(6) not null foreign key references Class(class_no),
s_name varchar(10) not null,
s_sex char(2) check(s_sex='男' or s_sex='女'),
s_birthday datetime
)
4.建立表Course
/*创建表Course*/
create table Course(
course_no char(5) primary key,
course_name char(20) not null,
course_score numeric(6,2)
)
5.建立表Choice
/*创建表Choice*/
create table Choice(
s_no char(6) foreign key references Student(s_no),
course_no char(5) foreign key references Course(course_no),
score numeric(6,1)
)
6.建立表Teacher
/*创建表Teacher*/
create table Teacher(
t_no char(6) primary key ,
t_name varchar(10) not null,
t_sex char(2) check(t_sex='男' or t_sex='女'),
t_birthday datetime, t_title char(10)
)
7.建立表Teaching
/*创建表Teaching*/
create table Teaching(
course_no char(5) foreign key references Course(course_no),
t_no char(6) foreign key references Teacher(t_no)
)
四.给建立好的表中插入相对应的数据
1.在Class表中插入数据
/*在Class表中插入数据*/
insert into Class(class_no,class_name,class_special,class_dept)
values('js9901','计算机99-1','计算机','计算机系'),
('js9901','计算机99-2','计算机','计算机系'),
('js0001','计算机00-1','计算机','计算机系'),
('js0002','计算机99-1','计算机','计算机系'),
('xx0001','信息00-2','信息','信息系'),
('xx0002','信息00-2','信息','信息系');
2.在Student表中插入数据
/*在Student表中插入数据*/
insert into Student(s_no,class_no,s_name,s_sex,s_birthday)
values('991101','js9901','张彬','男',1981-10-1),
('991102','js9901','王蕾','女',1980-8-8),
('991103','js9901','李建国','男','1981-4-5'),
('991104','js9901','李平方','男','1981-5-12'),
('991201','js9902','陈冬辉','男','1980-2-8'),
('991202','js9902','葛鹏','男','1979-12-23'),
('991203','js9902','藩桃芝','女','1980-2-6'),
('991204','js9902','姚一峰','男','1981-5-7'),
('001101','js0001','宋大方','男','1980-4-9'),
('001102','js0001','徐辉','女','1978-8-1'),
('001201','js0002','王一山','男','1980-12-4'),
('001202','js0002','牛莉','女','1981-6-9'),
('002101','xx0001','李丽丽','女','1981-9-19'),
('002102','xx0002','李王','男','1980-9-23');
3.在Course表中插入数据
/*在Course表中插入数据*/
insert into Course(course_no,course_name,course_score)
values('01001','计算机基础',3),
('01002','程序设计语言',5),
('01003','数据结构',6),
('02001','数据库原理及应用',6),
('02002','计算机网络',6),
('02003','微机原理及应用',8);
4.在Choice表中插入数据
/*在Choice表中插入数据*/
insert into Choice(course_no,score)
values('991101','01001',88),
('991102','01001',null),
('991103','01001',91),
('991104','01001',78),
('991201','01001',67),
('991101','01002',90),
('991102','01002',58),
('991103','01002',71),
('991104','01002',85);
5.在Teacher表中插入数据
/*在Teacher表中插入数据*/
insert into Teacher(t_no,t_name,t_sex,t_birthday,t_title)
values('000001','李英','女',1964-11-3,'讲师'),
('000001','王大山','男',1955-3-7,'副教授'),
('000001','张朋','男',1960-10-5,'讲师'),
('000001','陈为君','男',1970-3-3,'助教'),
('000001','宋浩然','男',1966-12-4,'讲师'),
('000001','许红霞','女',1951-5-8,'副教授'),
('000001','徐勇军','男',1948-4-8,'教授'),
('000001','李桂青','女',1940-11-3,'教授'),
('000001','王一凡','女',1962-5-9,'讲师'),
('000001','田峰','男',1972-11-5,'助教');
6.在Teaching表中插入数据
/*在Teaching表中插入数据*/
insert into Teaching(course_no,t_no)
values('01001','000001'),
('01002','000002'),
('01003','000002'),
('02001','000003'),
('02002','000004'),
('01001','000005'),
('01002','000006'),
('01003','000007'),
('02001','000007'),
('02002','000008');