一. 實驗目的
- 熟悉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');