实验一 ——数据库基本操作 (2课时)
一、实验目的
1. 熟悉MS SQL SERVER运行界面,掌握服务器的基本操作。
2. 掌握界面操作方法完成用户数据库建立、备份和还原。
3. 建立两个实验用的数据库,使用企业管理器和查询分析器对数据库和表进行基本操作。
二、实验预习内容
在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1. 熟悉SQL SERVER 2000 的运行环境,练习服务器基本操作:打开、停止、关闭。
2. 使用SQL SERVER 2000 中的企业管理器完成以下任务。
数据库名称:STC
表:STU(sno char(9), sname varchar(50), ssex char(2) , sage int, sdept char(2) );
COUTSES( cnochar(3), cname varchar(50), cpno char(3), credit int );
SC(snochar(9), cno char(3), grade int );
说明:以上为表结构,以sno char(9)为例,说明sno属性设置为字符类型,宽度为9,int指整型数据。
1) 建立数据库STC,分别建立以上三张表,并完成数据录入。(表结构及数据参见教材)
2) 分析并建立各表的主码,用下划线在上面表结构中标出主码。
3) 建立各表之间的关联,请简述操作步骤。
4) 参考实验指导书的【第5章 数据库的备份和还原】,使用企业管理器对数据库STC进行备份,并尝试在个人电脑与机房电脑上进行还原,请简述备份、还原操作的步骤。
1)createtable STU
(
sno char(9) primary key,
sname varchar(50) unique,
ssex char(2),
sage int,
sdept char(2)
);
create table COURSES
(
cno char(3) primary key,
cname varchar(50),
cpno char(3),
credit int
);
create table SC
(
sno char(9) ,
cno char(3),
grade int,
primary key(sno,cno),
foreign key (sno)references STU(sno),
foreign key (cno)references COURSES(cno)
);
INSERT INTO STU
VALUES('12001','李伟','男',20,'CS');
INSERT INTO STU
VALUES ('12002','王琳','女',20,'IS');
INSERT INTO STU
VALUES ('12003','郭文静','女',18,'MA');
INSERT INTO STU
VALUES ('12004','周静','男',19,'IS');
INSERT INTO STU
VALUES ('12005','李菊','女',17,'CS');
INSERT INTO COURSES
VALUES(1,'DB_Design',3,3);
INSERT INTO COURSES
VALUES (2,'数学',null,3);
INSERT INTOCOURSES
VALUES (3,'数据结构',5,4);
INSERT INTOCOURSES
VALUES (4,'数据处理',2,2);
INSERT INTOCOURSES
VALUES (5,'C语言',null,4);
INSERT INTOCOURSES
VALUES (6,'概率论统计',null,3);
INSERT INTO SC
VALUES(12001,1,86);
INSERT INTO SC
VALUES(12001,2,90);
INSERT INTO SC
VALUES(12001,3,80);
INSERT INTO SC
VALUES(12001,4,75);
INSERT INTO SC
VALUES(12001,5,95);
INSERT INTO SC
VALUES(12002,2,90);
INSERT INTO SC
VALUES(12002,3,88);
INSERT INTO SC
VALUES(12002,4,80);
INSERT INTO SC
VALUES(12002,5,86);
INSERT INTO SC
VALUES(12003,2,56);
INSERT INTO SC
VALUES(12003,3,50);
INSERT INTO SC
VALUES(12003,5,90);
INSERT INTO SC
VALUES(12004,2,89);
INSERT INTO SC
VALUES(12004,4,55);
INSERT INTO SC
VALUES(12004,5,95);
SELECT * FROM STU
select * FROMCOURSES
select * FROM SC
STU表
SC表
COURSES表
3)
右击要设置外码的表,“设计表”,选中要设的列,右击“关系”,“新建”选择相应的主键表,外键表以及列。
4)备份:右击要备份的数据库,“任务”,“备份”,在“目标”中点击添加,选择位置,进行备份。还原:数据库右键,“还原数据库”输入目标数据库名称,选择“源设备”,找到还原目标所在位置,添加,确定。
3. 在SQL SERVER 2000 的查询分析器中使用SQL语言完成以下任务。
参考实验指导书《数据库系统实验指导教程》【实验1.1 数据定义】,建立数据库SCHOOL,分别建立students、teachers、courses、choices四张表,表结构见实验指导书P236 【附录A】。
1) 用SQL语言创建数据库、建表。建表时为各表建立关键字、设置外码,数据暂不录入,请写出对应的SQL命令。
create database school;
useschool;
go
create table students
(sidchar(10) primary key,
snamechar(30) not null,
emailchar(30),
gradeint
);
useschool;
go
create table teachers
(tidchar(10) primary key,
tnamechar(30) not null,
email char(30),
salaryint
);
useschool;
go
create table courses
(cidchar(10) primary key,
cnamechar(30) not null,
hourint
);
useschool;
go
create table choices
(no int primary key,
sidchar(10) not null,
tidchar(10),
cidchar(10) not null,
scoreint,
constraintfksid foreign key(sid) references students(sid),
constraintfktid foreign key(tid) references teachers(tid),
constraintfkcid foreign key(cid) references courses(cid),
);
2) 为students表、courses建立按主键増序排列的索引,请写出相应的SQL命令。
create indexstusid on students(sidasc);
create index coucid oncourses(cid asc);
3) 删除course上的索引,请写出相应的SQL命令。
drop index courses.coucid;
4) 在SCHOOL数据库中的students表中增加一个“出生日期”字段,类型为日期时间型,请写出对应的SQL命令。
alter tablestudents
add 出生日期datetime;
5) 删除students中的“出生日期”字段,请写出对应的SQL命令。
alter tablestudents
drop column 出生日期;
6) 删除SCHOOL数据库中的students表,请写出对应的SQL命令。
drop tablestudents;
4. 使用企业管理器创建数据库SCHOOL,实现内容与实验预习内容3完全相同。
5. 使用企业管理器,将SCHOOL数据库分离出MSSQL SERVER,请简述步骤。
分离school数据库:右击需要进行分离的数据库,选择所有任务中的分离数据库,点击确定,分离完成
6. 使用企业管理器,使用【数据库/所有任务/附加数据库】将SCHOOL数据库添加进SQL SERVER,并查看数据。
附加school数据库:右击需要进行附加的数据库,选择所有任务中的附加数据库,选择分离出来的数据库的mdf文件并点击确定。
7. 使用查询分析器,删除数据库STC,请写出对应的SQL命令。
drop database stc;
8. 结束本次实验
三、实验课后训练
1. 使用企业管理器练习数据的导入导出。
1) 将SCHOOL数据库students表中的数据导出到STC数据库对应的stu表中;
2) 向STC数据库courses表导入SCHOOL数据库courses表中的数据;
3) 自行练习实验指导书【实验5.3 SQL SERVER数据库的导入与导出】部分;
2. 自行练习实验指导书【实验1.1数据定义】部分。
四、实验报告
1. 简述本次实验所用到的SQL命令及其功能。
1. createdatabase <数据库名>
功能:创建数据库
2. createtable <表名>
( <列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]]
[,<列级完整性约束条件>] );
功能:创建一张新的表
3. create[unique] index <索引名> on <表名> (<列名>);
功能:创建表的索引
4. drop index 表名.索引名
功能:取消表的索引
5. altertable <表名> add <列名> <数据类型>;
altertable <表名> drop column <列名>;
功能:表中新增列及列数据类型和删除列
6. drop table <表名> cascade;
功能:删除数据库中的表
7. dropdatabase <数据库名>
功能:删除数据库
2. 在MS SQL SERVER中数据库的“分离|添加”与“备份|还原”是相同的功能吗?
数据库的“分离|添加”与“备份|还原”不是相同的功能,分离说的是断开这个数据库的连接,但不是删除,数据库仍然存在于硬盘上,这样就可以随意的挪动数据库了,附加和分离则刚好相反。
备份是为防止出现错误,还原是为了防止出现数据的丢失。
3. 实验总结(实验过程中出现的问题、解决方法、结果如何或其它)
通过这次数据库实验,我感觉到学习数据库并不是和我想象的一样容易,发现了自身很多不同,总的来说sql语句还是比较简单的,不过也有一些不会的,比如在我建立索引之后,不知道查询索引语句,还有就是表与表的关联问题以及一开始把表建立在相应数据库所用的use school ;go 等等。