文档库 最新最全的文档下载
当前位置:文档库 › 数据库实验及其答案

数据库实验及其答案

数据库实验及其答案
数据库实验及其答案

《数据库系统概论》实验报告书

专业班级

学号

姓名

指导教师

安徽工业大学计算机学院

实验一:数据定义/数据操纵语言

[ 实验日期 ] 2011 年 4 月 10 日

[ 实验目的 ]

熟悉SQL SERVER上机环境;熟练掌握和使用DDL语言,建立、修改和删除数据库表;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

[ 实验内容 ]

1.先建立数据库:STUDENT

用两种方式建立:在查询分析器中以DDL语言方式建立.步骤为:先在指定的地方建立放置数据库文件的文件夹(如学生数据库),然后将建立的数据库文件放到指定的文件夹中.

2.SQL数据定义语句:

例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。

create table Student(SNO char(5) primary key,SNAME char(8) NULL,SDEPT char(2),SCLASS char(2),SAGE smallint)

create table Course(CNO char(3) primary key,CNAME char(16),CTIME smallint)

create table Teach(TNAME CHAR(8),TSEX CHAR(2),CNO CHAR(3),TDATE smalldatetime,TDEPT CHAR(2)) create table Score (sno char(5),cno char(3),Score float);

例1-2: (修改数据库表) 在Student表中增加SSEX(C,2) 字段。

alter table student add SSEX char(2)

例1-3: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。

alter table student alter column SNAME char(10) not null

例1-4: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。

create table S1(SNO char(5)primary key,SNAME char(10) not NULL,SD char(2),SA smallint)

3. SQL数据操纵语句:

例2-1: (插入数据) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。

insert into Student values('96001','马小燕','CS','01','女',21);

insert into Student values('96002','黎明','CS','01','男',18);

insert into Student values('96003','刘东明','MA','01','男',18);

insert into Student values('96004','赵志勇','IS','02','男',20);

insert into Student values('97001','马蓉','MA','02','女',19);

insert into Student values('97002','李成功','CS','01','男',20);

insert into Student values('97003','黎明','IS','03','女',19);

insert into Student values('97004','李丽','CS','02','女',19);

insert into Student values('96005','司马志明','CS','02','男',18);

insert into COURSE values('001','数学分析',144);

insert into COURSE values('002','普通物理',144);

insert into COURSE values('003','微机原理',80);

insert into COURSE values('004','数据结构',72);

insert into COURSE values('005','操作系统',80);

insert into COURSE values('006','数据库原理',80);

insert into COURSE values('007','编译原理',60);

insert into COURSE values('008','程序设计',40);

insert into TEACH values('王成刚','男','004','1999.9.5','CS');

insert into TEACH values('李正科','男','003','1999.9.5','CS');

insert into TEACH values('严敏','女','001','1999.9.5','MA');

insert into TEACH values('赵高','男','004','1999.9.5','MA');

insert into TEACH values('刘玉兰','女','006','2000.2.23','CS');

insert into TEACH values('王成刚','男','004','2000.2.23','IS');

insert into TEACH values('马悦','女','008','2000.9.6','CS');

insert into Score values('96001','001',77.5);

insert into Score values('96001','003',89);

insert into Score values('96001','004',86);

insert into Score values('96001','005',82);

insert into Score values('96002','001',88);

insert into Score values('96002','003',92.5);

insert into Score values('96002','006',90);

insert into Score values('96005','004',92);

insert into Score values('96005','005',90);

insert into Score values('96005','006',89);

例2-2:(多行插入) 将表Student表中计算机系(‘CS’)的学生数据插入到表S1中。

insert into s1 select sno,sname,sdept,sage from student where sdept='cs'

例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。

create table Student_Gr(Score float)

insert into student_gr

select avg (score) from score GROUP BY sno

例2-4: (修改数据) 将S1表中所有学生的年龄加2。

update s1 set sa=sa+2

例2-5: (修改数据) 将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。update Course

set ctime

=(select ctime from course where cname='数据结构')

where cname='程序设计'

例2-6: (插入数据) 向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。insert into Score values('98001','001',95)

添加一条信息成功

例2-7: (插入数据) 向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。insert into Score values('97001','010',80)

插入一条信息成功

例2-8: (删除数据) 删除Score表中学号为‘96001’的成绩信息,根据返回信息解释其原因。

delete from score where sno='96001'

将四行学号是96001的学生信息删去

例2-9: (删除数据) 删除Score表中课程号为‘003’的成绩信息,根据返回信息解释其原因。

delete from score where cno='003'

将一条课程号是003的信息删去

例2-10:(删除数据) 删除学生表S1中学号以96打头的学生信息。

delete from s1 where sno like '96%'

例2-11:(删除数据) 删除数据库表S1中所有学生的数据。

delete from s1

例2-12:(删除表) 删除数据库表S1和Student_Gr。

drop table s1,student_gr

[ 实验要求 ]

①熟悉SQL Server上机环境;

②建立数据库表,修改数据库表结构;

③对数据库表进行插入、修改和删除数据的操作。

[ 实验方法 ]

①执行SQL语句;

②将实验需求用SQL语句表示;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

①SQL语句以及执行结果;

Sql语句已经验证成功

②对重点实验结果进行分析;

③实验中的问题和提高;

遇到不会的问题,主动查找资料,知道了怎样解决问题。

④收获与体会。

熟悉了数据库基本的表的建立,删去,修改等操作

实验二:数据查询语言

[ 实验日期 ] 2011 年 4 月 14 日

[ 实验目的 ]

体会SQL语言数据查询功能的丰富和复杂。

[ 实验内容 ]

3. SQL数据查询语句:

例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

select sno,sname,ssex,sage from student

例3-2: (不选择重复行) 求选修了课程的学生学号。

select distinct sno from score

例3-3: (选择表中的所有列) 求全体学生的详细信息。

Select * from student

例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。

select sno,sname,year( getdate ())-sage from student

例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。select sno as 学号,sname,year( getdate ())-sage as 出生年月 from student 例3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

select sname,sage from student where sage>19

例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。select sname,sdept,sage from student where sage>18 and sdept in ('cs','is') 例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。select sno,sage from student where sage between 19 and 22

例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

select sno,sage from student where sage not between 19 and 22

例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

select * from student where sdept in ('cs','ma')

例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。

select * from student where sdept not in ('cs','ma')

例3-12:(匹配查询) 求姓名是以“李”打头的学生。

select * from student where sname like '李%'

例3-13:(匹配查询) 求姓名中含有“志”的学生。

select * from student where sname like '%志%'

例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

select * from student where sname like '%_马_%'

例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、

课程号和成绩。

select distinct cno,student.sno,score from student,score

where student.sno=score.sno and cno in ('001','003')

and score between 80 and 90

and student.sno like '96%'

例3-16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。

select sno,cno from score where score is null

例3-17:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数。

select sno,cno,score from score where cno in ('003','004')

例3-18:(组函数) 求学生总人数。

select count(distinct sno) from student

例3-19:(组函数) 求选修了课程的学生人数。

select count( distinct sno) from score

例3-20:(组函数) 求计算机系学生的平均年龄。

select avg( distinct sage) from student where sdept='cs'

例3-21:(组函数) 求选修了课程001的最高、最低与平均成绩。

select max(score),min(score),avg(score) from score where https://www.wendangku.net/doc/6810855244.html,o='001'

例3-22:(分组查询) 求各门课程的平均成绩与总成绩。

select cno,avg(score),count(score) from score group by cno

例3-23:(分组查询) 求各系、各班级的人数和平均年龄。

select count(sno),avg(sage),sclass

from student group by sclass union

select count(sno),avg(sage),sdept

from student group by sdept

select count(sno),avg(sage),sclass,sdept

from student group by sclass,sdept

例3-24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。

SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’ GROUP BY SDEPT;

因为是按sdept分组的,其他列不在分组后的表中

例3-25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。

SELECT SAGE FROM STUDENT GROUP BY SNO;

因为是按sno分组的,sage不在其中

SELECT SAGE FROM STUDENT GROUP BY SNO,sage;

例3-26:(分组查询) 求学生人数不足3人的系及其相应的学生数。

select sdept,count(sdept) from student

group by sdept having count(sdept)<3

例3-27:(分组查询) 求各系中除01班之外的各班的学生人数。

select sdept,sclass,count(sclass) from student

group by sdept,sclass having sclass!='01'

例3-28:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。

例3-29:(自然连接查询) 求学生学号、姓名以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。

select score.sno from student,score

where student.sno=score.sno

例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。

select sname,cname,score from student,score,course

where student.sno=score.sno and https://www.wendangku.net/doc/6810855244.html,o=https://www.wendangku.net/doc/6810855244.html,o and https://www.wendangku.net/doc/6810855244.html,o='001' and score

between 70 and 90

例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。

select s1.sname,https://www.wendangku.net/doc/6810855244.html,o,score from

student s1,score s2 where s1.sno=s2.sno

例3-32:(自身连接查询) 求年龄大于’李丽’的所有学生的姓名、系和年龄。

select s2.sname,s2.sdept,s2.sage from student s1,student s2

where s1.sname='李丽' and s2.sage>s1.sage

例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩。

select sno,https://www.wendangku.net/doc/6810855244.html,o,cname,score from score right join

course on https://www.wendangku.net/doc/6810855244.html,o=https://www.wendangku.net/doc/6810855244.html,o

where https://www.wendangku.net/doc/6810855244.html,o='002' or https://www.wendangku.net/doc/6810855244.html,o='003'

例3-34:(子查询) 求与‘李丽’年龄相同的学生的姓名和系。

select sname,sdept from student

where sage=(select sage from student where sname='李丽')

例3-35:(子查询) 求选修了课程名为’数据结构’的学生的学号和姓名。

select sno,sname from student

where sno=(select sno from score

where cno=(select cno from course where cname='数据结构'))

例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。

select sname,sdept from student where sage> any

(select sage from student where sdept='ma')

例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。

select sname,sdept from student where sage> all

(select sage from student where sdept='ma')

例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。

select sname,sdept from student where exists

(select * from score where sno=student.sno and cno='004') 例3-39:(返回多列的子查询) 求与‘李丽’同系且同龄的学生的姓名和系。

select sname,sdept from student where sdept=

(select sdept from student where sname='李丽')

and sage=(select sage from student where sname='李丽') 例3-40: (相关子查询) 求未选修课程004的学生的姓名。

select sname from student where not exists

(select * from score where sno=student.sno and

cno='004')

[ 实验要求 ]

对数据库表进行各种查询操作。

[ 实验方法 ]

①将实验需求用SQL语句表示;

②执行SQL语句;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

①SQL语句以及执行结果;

语句验证成功

②对重点实验结果进行分析;

知道了sql语句的要求,知道了有些语句不能成功运行的原因,并作了修改,完成要求。

③实验中的问题和提高;

总会遇到一些不会的问题,但是经过对这些问题做了分析和解决,更清晰了语法的要求。

④收获与体会。

通过不同的语句将相同的问题解决,知道了不同方法有不同的用法,有些用起来更方便,大致知道了sql的基本语句和用法。

实验三:视图、授权控制与事务处理

[ 实验日期 ] 2011 年 4 月 20 日

[ 实验目的 ]

通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。

[ 实验内容 ]

4. SQL视图的定义与操纵:

例4-1: (建立视图) 建立计算机系的学生的视图STUDENT_CS。

create view student_cs

as select * from student where sdept='cs'

例4-2: (建立视图) 建立由学号和平均成绩两个字段的视图STUDENT_GR。

create view student_gr ( sno,avg_score)

as select sno,avg(score) from score group by sno

例4-3: (视图查询) 利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。

select * from student_cs

where sage>19

例4-4: (视图查询) 利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。

select sno,avg_score from student_gr

where avg_score>=88

例4-5: (视图更新) 利用视图STUDENT_CS,增加学生( ‘96006’,‘张然’,‘CS’,‘02’,‘男’,19 )。

insert into student_cs

values('96006','张然','cs','02','男',19)

例4-6: (视图更新) 利用视图STUDENT_CS,将学生年龄增加1岁。观察其运行结果并分析原因。

update student_cs

set sage=sage+1

返回6行,视图中的年龄都加了一岁

例4-7: (视图更新) 利用视图STUDENT_GR,将平均成绩增加2分。观察其运行结果并分析原因。

update student_gr

set avg_score=avg_score+2

因为视图student_gr 中有聚合,不能更新,如果平均成绩改变,score表中不能确定是哪些课程的成绩改变能改变平均成绩

例4-8: (视图更新) 删除视图STUDENT_CS中学号为‘96006’的学生的全部数据。

delete from student_cs

where sno='96006'

例4-9: (视图更新) 删除视图STUDENT_GR的全部数据。

delete from student_gr

例4-10:(删除视图) 删除视图STUDENT_CS和STUDENT_GR。

drop view student_cs ,student_gr

5. SQL数据控制语句:

例5-1: (授权) 给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限。

grant select on student to u1,u2

with grant option

例5-2: (授权) 给邻近同学(用户)授予Teach表上的所有权限。

grant all privileges on teach to u1,u2

例5-3: (授权) 给所有用户授予Score表上的SELECT权限。

grant select on score to public

例5-4: (授权验证) 观察左右邻近同学查询你所授权的表中的内容。

例5-5: (收回授权) 收回上面例子中的所有授予的权限。

revoke select on student from guest cascade

revoke all privileges on teach from guest

revoke select on score from public

6. SQL事务处理:

例6-1: (事务回退) 将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改(ROLLBACK)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。

begin transaction

update course

set ctime=80 where cname='程序设计'

update course

set ctime=70 where cname='编译原理'

rollback work

select sum(ctime) from course查询结果为750,

加上rollback后,结果恢复原值

例6-2: (事务提交) 将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改(COMMIT)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。

begin transaction

update course

set ctime=80 where cname='程序设计'

update course

set ctime=70 where cname='编译原理'

commit

select sum(ctime) from course

[ 实验要求 ]

①建立视图,视图查询,视图更新;

②给某一或全部用户授权和收回授权;

③事务回退,事务提交。

[ 实验方法 ]

①将实验需求用SQL语句表示;

②执行SQL语句;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

① SQL语句以及执行结果;

②对重点实验结果进行分析;

③实验中的问题和提高;

遇到问题解决了,知道了一些基本用法。

④收获与体会。

知道了视图的基本语法和使用价值,通过对视图的应用和对基本表的对比,知道了有时候,掌握视图的应用更能完成相应的操作。

实验四:存储过程与触发器

[ 实验日期 ] 2011 年 4 月 24 日

[ 实验目的 ]

通过实验进一步理解和掌握数据库的存储过程和触发器。

[ 实验内容 ]

7.索引与数据库完整性

例7-1: (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。create unique index sc_grade on score

(cno asc,score desc)

例7-2: (删除索引) 删除索引SC_GRADE。

drop index score.sc_grade

例7-3: (修改数据库表) 添加成绩表Score的参照完整性约束关系。

ALTER TABLE SCORE ADD CONSTRAINT FK_SC_SNO

FOREIGN KEY (SNO) REFERENCES STUDENT (SNO);

ALTER TABLE SCORE ADD CONSTRAINT FK_SC_CNO

FOREIGN KEY (CNO) REFERENCES COURSE (CNO);

例7-4: (修改数据库表) 删除成绩表Score的参照完整性约束关系。

ALTER TABLE SCORE drop CONSTRAINT FK_SC_SNO

ALTER TABLE SCORE drop CONSTRAINT FK_SC_CNO

8.存储过程与触发器:

例8-1: (存储过程) 创建一个显示学生总人数的存储过程。

create procedure countstudent

as select count(sno) from student

例8-2: (存储过程) 创建显示学生信息的存储过程STUDENT_LIST,并引用STU_COUNT存储过程。create procedure student_lsit

as

begin

select * from student

execute countstudent

end

execute student_lsit

例8-3: (存储过程) 创建一个显示学生平均成绩的存储过程。

create procedure avgallscore

as

begin

select avg(score)from score

end

execute avgscore例8-4: (存储过程) 创建显示所有学生平均成绩的存储过程。

create procedure avgscore

as

begin

select avg(score)from score group by sno

end

execute avgscore

例8-5:(存储过程) 创建一个对学生姓名进行模糊查找的带参存储过程。

create procedure lookname @sscore float

as

begin

select * from student where sname='%李%'and

ssex=@sscore

end

execute lookname 90

例8-7: (触发器) 创建包含插入、删除、修改多种触发事件的触发器Trig_xs_xskc,对xs、kc和xs_kc表进行参照完整性关系的维护。

create trigger trig_xs_xskc on xs,kc,xs_kc

for insert,update,delete as

constraint

(1)当在xs_kc表中插入一条记录时,要检查其学号在xs表中和课程号在kc表中是否存在,若不

存在则不允许插入。

create trigger xs_kc_tg1 on xs_kc for insert as

if exists(select * from inserted

where inserted.学号 not in(select 学号 from xs)

or

inserted.课程号 not in(select 课程号 from kc))

begin

raiserror('违背数据的一致性',16,1)

rollback tran

end

(2)对xs表进行删除操作,则删除XS_KC表中对应学号的所有记录;对xs表的学号进行更新操作,

则更新XS_KC表中对应学号的所有记录;

create trigger trg_xs_del on xs

for delete

as

delete from xs_kc

where 学号 in(select 学号 from deleted)

create trigger trg_xs_upd on xs

for update

as

update from xs_kc

where 学号 in(select 学号 from updated)

(3)对kc表进行删除操作,则删除XS_KC表中对应课程号的所有记录;对kc表的课程号进行更新

操作,则更新XS_KC表中对应课程号的所有记录;

create trigger trg_kc_del on kc

for delete as

delete from xs_kc

where 学号 in(select 学号 from deleted)

create trigger trg_kc_upd on kc

for update as

update from xs_kc

where 学号 in(select 学号 from updated)

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

福建工程学院《实验指导书(数据库系统原理及应用)》

数据库系统原理 实验指导书 (本科)

目录 实验一数据定义语言 (1) 实验二SQL Sever中的单表查询 (3) 实验三SQL Serve中的连接查询 (4) 实验四SQL Serve的数据更新、视图 (5) 实验五数据控制(完整性与安全性) (7) 实验六语法元素与流程控制 (9) 实验七存储过程与用户自定义函数 (11) 实验八触发器 (12)

实验一数据定义语言 一、实验目的 1.熟悉SQL Server2000/2005查询分析器。 2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表 的定义、删除与修改,掌握索引的建立与删除方法。 3.掌握SQL Server2000/2005实现完整性的六种约束。 二、实验内容 1.启动SQL Server2000/2005查询分析器,并连接服务器。 2.创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server2000中建立一个StuDB数据库: 有一个数据文件:逻辑名为StuData,文件名为“d:\db\S tuDat.mdf”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\StuLog.ldf”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10% 2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。 3.设置StuDB为当前数据库。 4.在StuDB数据库中作如下操作: 设有如下关系表S:S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。 写出实现下列功能的SQL语句。 (1)创建表S; (2)刷新管理器查看表是否创建成功; (3)右击表S插入3个记录:95031班25号李明,男性,21岁; 95101班10号王丽,女性,20岁; 95031班座号为30,名为郑和的学生记录; (4)将年龄的数据类型改为smallint; (5)向S表添加“入学时间(comedate)”列,其数据类型为日期型(datetime); (6)对表S,按年龄降序建索引(索引名为inxage); (7)删除S表的inxage索引; (8)删除S表; 5.在StuDB数据库中, (1)按照《数据库系统概论》(第四版)P82页的学生-课程数据库创建STUDENT、COURSE 和SC三张表,每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。 并输入相关数据。 (2)将StuDB数据库分离,在D盘下创建DB文件夹下找到StuDB数据库的两个文件,进行备份,后面的实验要用到这个数据库。 6.(课外)按照《数据库系统概论》(第四版)P74页习题5的SPJ数据库。创建SPJ数据 库,并在其中创建S、P、J和SPJ四张表。每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。要作好备份以便后面的实验使用该数据库数据。 三、实验要求:

数据库实验四作业及答案

实验4数据查询 一、实验目的 1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2.掌握使用SELECT语句进行条件查询的方法。 3.掌握嵌套查询的方法。 4.掌握多表查询的方法。 5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 6.掌握联合查询的操作方法。 7.掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法。 二、实验准备 1.了解SELECT语句的基本语法格式和执行方法。 2.了解嵌套查询的表示方法。 3.了解UNION运算符的用法。 4.了解SELECT语句的GROUP BY和ORDER BY子句的作用。 5.了解IN、JOIN等子查询的格式。 6.了解INSERT INTO、UPDATE、DELETE的格式与作用。 三、实验内容及步骤 0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。 创建数据库代码 1.在studentsdb数据库中,使用下列SQL语句将输出什么? (1)SELECT COUNT(*) FROM grade (2)SELECT SUBSTRING(姓名,1,2) FROM student_info (3)SELECT UPPER('kelly')

(4)SELECT Replicate('kelly',3) (5)SELECT SQRT(分数) FROM grade WHERE 分数>=85 (6)SELECT 2,3,POWER(2,3) (7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) 2.在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 SELECT*FROM student_info (2)查询学号为0002的学生的姓名和家庭住址。 SELECT姓名,家庭住址FROM student_info WHERE学号=0002 (3)找出所有男同学的学号和姓名。 SELECT学号,姓名FROM student_info

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

数据库实验四(含答案)

实验四使用SQL语句创建和删除数据库、表 一. 实验目的: 1、了解SQL Server 2005数据库的逻辑结构和物理结构。 2、掌握使用SQL 语句创建和删除数据库。 3、学会使用T-SQL语句创建表。 二. 实验准备 1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建和删除数据库的基本语法。 3.是用查询分析器,完成用SQL语句创建和删除基本表。 三. 实验要求 1、熟练使用查询分析器进行数据库的创建和删除操作。 2、用查询分析器,完成用SQL语句创建和删除基本表。 3、完成实验报告。 四. 实验内容 一、数据库 1.以下是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M filegrowth=1)--数据文件每次增长1M log on ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 , filegrowth=1) 运行上诉语句建立数据库userdb1

句,并建立“学生信息”数据库.(.mdf的名字可以修改) 3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 ,

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.wendangku.net/doc/6810855244.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.wendangku.net/doc/6810855244.html,um =https://www.wendangku.net/doc/6810855244.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

数据库系统原理与设计(第二版)实验一至实验三

实验一 1-1.查询员工的姓名、职务和薪水 select employeeName,headShip,salary from employee 图1-1 2.查询名字中含有“有限”的客户姓名和所在地 select CustomerName,address from Customer where CustomerName like '%有限%'

3. 查询出姓“张”并且姓名的最后一个字为“梅”的员工。 select * from employee where employeeName like '张%梅' 图1-3 4. 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示 SELECT employeeName,department,address, isnull (convert(char(10),birthday,120),'不详')出生日期, case sex when 'M'then '男' when 'F'then'女' end as 性别 from employee where (address like '%上海%'or address like '%南昌%')and sex='F'

5. 查询出职务为“职员”或职务为“科长”的女员工的信息 select * from employee where (headship='职员' or headship='科长') and sex='F' 图1-5 6. 选取编号不在“C20050001”和“C20050004”的客户编号、客户名称、客户地址。 Select * from Customer where CustomerNo not in ( 'C20050001' ,'C20050004')

数据库实验上机答案整理-中国石油大学-龚安

实验四SQL练习2 一、实验目的 1.掌握索引的建立、删除及使用; 2.掌握单表查询、连接查询、嵌套查询和集合查询; 3.掌握插入数据、修改数据和删除数据语句的非常用形式。二、实验学时 2学时 三、实验内容 1.利用Query Analyzer完成以下操作: ⑴在预算日期、结算日期和入账日期上分别建立索引,并在查询操作中体会索引的作用。 ⑵在完成第2题的查询操作后,删除预算日期、结算日期和入账日期上的索引。 2.利用Query Analyzer完成以下操作: ⑴采油一矿二队2016-5-1到2016-5-28有哪些项目完成了预算,列出相应明细。 ⑵采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应明细。 ⑶采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应的材料费消耗明细。 ⑷采油一矿二队2016-5-1到2016-5-28有哪些项目完成了入账,列出相应明细。

⑸列出采油一矿二队2016-5-1到2016-5-28总的预算金额。 ⑹列出采油一矿二队2016-5-1到2016-5-28总的结算金额。 ⑺列出采油一矿二队2016-5-1到2016-5-28总的入账金额。 ⑻列出采油一矿2016-5-1到2016-5-28总的入账金额。 ⑼有哪些人员参与了入账操作。 ⑽列出2016-5-1到2016-5-28进行了结算但未入账的项目。 ⑾列出采油一矿二队的所有项目,按入账金额从高到低排列。 ⑿列出有哪些施工单位实施了项目,并计算各单位所有项目结算金额总和。 ⒀找出消耗了材料三且消耗超过了2000元的项目,列出相应消耗明细(利用子查询)。 ⒁作业公司二队参与了哪些项目。 ⒂作业公司一队和二队参与了哪些项目(利用union)。 ⒃采油一矿的油井是哪些作业队参与施工的。 3.利用Query Analyzer完成以下操作: ⑴建立数据表(包含3个属性列:★施工单位、★年月、◆结算金额)保存各个施工单位每月的结算金额总和。 ⑵用子查询将各个施工单位每月的结算金额总和插入到所建立的数据表中。 ⑶用带子查询的修改语句将采油一矿油井作业项目的结算人改为“李兵”。 ⑷用带子查询的删除语句删除采油一矿油井作业项目。

sql 数据库 实验3答案

实验三:创建及管理数据表 1、创建表 依据数据表的结构创建相对应的数据表,表结构如下所示; 学生信息表(student ) CREATE (sno char (9) PRIMARY KEY , sname char (8) NOT NULL, ssex char (2), sage int , sdept varchar (20) ) 课程信息表(course ) CREATE (cno char (4) PRIMARY KEY , cname varchar (20) NOT NULL, cpno char (4), ccredit int ) 选课信息表(sc )

CREATE TABLE sc (sno char(9), cno char(4), grade int, Constraint PK_sno PRIMARY KEY(sno,cno)) 2.修改表结构 1)在表student中增加新字段“班级名称(sclass)”字符类型为varchar(10); use student ALTER TABLE student Add sclass nvarchar(10) 2)在表student中删除字段“班级名称(sclass)”; use student ALTER TABLE student Drop column sclass 3)修改表student中字段名为“sname”的字段长度由原来的6改为8; use student ALTER TABLE student ALTER COLUMN sname char(8) 4)修改表student中ssex字段默认值为‘男’; use student ALTER TABLE student add default'男'for ssex 5)修改表course中cname字段为强制唯一性字段; use student ALTER TABLE course Add constraint ix_course unique (cname) 6)修改表sc中grade字段的值域为0-100; use student ALTER TABLE sc Add constraint CK_grade CHECK(grade between 0 and 100) 7)删除数据表course的唯一性约束; use student ALTER TABLE course drop ix_course

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

大数据库系统应用与开发--实验二

实验二JDBC基础(1) 一、相关知识点 1、JDBC基本概念 2、java连接数据库的方式 3、JDBC简单查询 二、实验目的: 理解Java连接数据库的基本概念。理解JDBC的四种驱动程序,掌握纯java驱动和jdbc-odbc驱动。理解Statement对象和ResultSet对象。 三、实验内容: 1、将booklib应用的JDBC驱动程序改成JDBC-ODBC驱动方式。 第一步:设置ODBC数据源;

第二步:修改DBUtil类中的相关代码;

第三步:运行程序 【实验结果与分析】 A、说明需要修改DBUtil类的哪些地方,及修改原因? private static final String jdbcUrl="jdbc:odbc:cjeSQL"; 因为booklib应用的驱动方式是jdbc-odbc驱动 2、利用Statement对象和Result对象实现按出版社名称精确查询出版社功能(精确查 询是指查询的目标和查询条件中值完全相同的数据)。 第一步:在https://www.wendangku.net/doc/6810855244.html,.zucc.booklib.control. PublisherManager类中添加按出版社名称精确查询方法public BeanPublisher loadPubByName(String name)throws BaseException 第二步:编写上述方法,要求当相应名字的出版社不存在时,返回null值;相关代码请参考提取所有出版社函数。 第三步:启动booklib主程序,在出版社管理中录入几个出版社 第四步:清空https://www.wendangku.net/doc/6810855244.html,.zucc.booklib.control. PublisherManager类中的main函数现有内

数据库实验四(含答案)

实验四使用SQL语句创建与删除数据库、表 一、实验目的: 1、了解SQL Server 2005数据库的逻辑结构与物理结构。 2、掌握使用SQL 语句创建与删除数据库。 3、学会使用T-SQL语句创建表。 二、实验准备 1.明确能够创建数据库的用户必须就是系统管理员,或就是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建与删除数据库的基本语法。 3.就是用查询分析器,完成用SQL语句创建与删除基本表。 三、实验要求 1、熟练使用查询分析器进行数据库的创建与删除操作。 2、用查询分析器,完成用SQL语句创建与删除基本表。 3、完成实验报告。 四、实验内容 一、数据库 1.以下就是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 'g:\xygl\userdb4、mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M )--数据文件每次增长1M log on ( name=userdb4_log, 'g:\xygl\userdb4、ldf ' , size=2 , maxsize=5 , ) 运行上诉语句建立数据库userdb1

2.根据步骤1的sql语句,写出创建实验二中“学生信息”数据库的sql语句,并建立“学生信息”数据库、(、mdf的名字可以修改) 3、数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, 'g:\xygl\userdb4、ldf ' , size=2 , maxsize=5 ,

数据库原理实验报告四(有答案)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。 (2)掌握数据排序和数据联接查询的方法。 (3)掌握SQL Server查询分析器的使用方法。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询 操作,并将将调试成功的T-SQL命令,填入实验报告中。 a)查询所有课程的详细情况。 b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。 c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。 d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降 序排列,如果成绩相同则按学号升序排列。 e)查询所有学生的学号、姓名和年龄。 f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并 将成绩乘以0.7输出。 g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院 (DEPT_ID为09)姓张的学生的信息。。 h)查询所有核心课程(课程名中带*的)的情况。 i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。 (2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作: a)查询每个学生的情况以及他(她)所选修的课程。 b)查询学生的学号、姓名、选修的课程名及成绩。 c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。 e)分别用等值联接和内联接查询有授课记录的老师的姓名。 f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院 系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该 老师没有授课历史,在课程号和授课的学期中显示空值 (3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL编 辑器工具栏中各快捷按钮的作用。 (4)按要求完成实验报告。

mysql数据库实验答案

实验一创建、修改数据库和表结构 1、用create建立教学数据库的五个基本表: (1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ; (2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址), T(Tno,Tname,ssex,birthday,dept,title,address) ; (5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj); Create Database Student default character set utf8 default COLLATE utf8_bin;

Use Student; Create Table Student( SNo c har(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo c har(20) primary key, CName char(20) NOT NULL,

CRedit f loat ) ENGINE=InnoDB; Create Table SC( SNo c har(20) NOT NULL, CNo c har(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) )ENGINE=InnoD B;

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库系统概论实验设计答案

数据库系统概论 实验报告册 姓名:momo 学号: 教师:

实验一需求分析(一)——业务流程调查 一、实验目的:掌握需求分析的步骤和业务流程调查的方法;掌握应用Powerbuilder绘制BPM模型 二、学时:6H(课内4H,课外2H) 三、实验软件平台:Windows 2k或Windows XP, Powerduilder9.5,Visio 四、实验内容:根据该VCD连锁店的业务需求调查文字,利用PD绘制该VCD连锁店管理系统的BPM 模型。 五、实验结果: 出售租借:根据购买人或租借人提供的VCD租借单,查阅库存,如果有,则办理销售或租借并登记销售或租借流水帐;如果没有相应的VCD,则可根据购买人或租借人的要求办理预约登记,当有VCD时,及时通知购买人或租借人。 归还:根据租借人提供的所还VCD,检查VCD是否完好,如果完好,则办理归还登记,如果有损坏的VCD,办理赔偿登记。并把赔偿通知单通知给租借人。

逾期罚款通知:查询逾期未还的VCD,及时通知租借人,并进行相应的罚款登记。 六、思考题 1、数据库设计为什么需要进行详细的需求分析? 答:需求分析简单地说就是分析用户的要求。需求分析是设计数据库的起点,需求分析的结果是不是准确的反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是不是合理使用情况。 2、需求分析的目标是什么?其调查步骤是什么?常用的调查方法有哪些? 答:(1)需求分析的目标: 1.通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况, 明确用户的各种需求。 2.在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当 前应用需求来设计数据库。 (2) 调查步骤:

数据库认证实验四答案

--1,创建登陆用户temp1,密码是1234,加入到school数据库中并赋予db_owner数据库角色. Sp_addlogin'temp1','1234','School'; ---添加用户 use School go exec sp_grantdbaccess'temp1'; --- /* CREATE LOGIN tmp1 WITH PASSWORD = '123',default_database=School; -- Creates a database user for the login created above. CREATE USER user1 FOR LOGIN tmp1; */ --查看登录账号的信息 Select*from sys.syslogins where name='temp1'; /* use School go exec sp_addsrvrolemember 'temp1','sysadmin';--添加服务器角色 */ --赋予db_owner数据库角色. use School go exec sp_addrolemember'db_owner','temp1'; --2,创建登陆用户temp2,密码是1234, --加入到school数据库中,并赋予该用户对student表select,insert权限 Sp_addlogin'temp2','1234','School'; ---添加用户 use School go exec sp_grantdbaccess'temp2';

grantselect,insert on student to temp2; --3,对数据库school进行完全数据库备份,写出备份语句 Use School Go Sp_addumpdevice'disk','schoolinfo','e:\data\schoolinfo.bak' Go Backupdatabase school to schoolinfo withinit; --4,将student学生信息表中所有学生信息年龄改为20,进行差异化备份--修改表的数据 use school go update student set sage=20; ---执行差异化的备份 Use School Go Backupdatabase School todisk='e:\data\schoolinfo.bak'; Use school Go Backupdatabase School to schoolinfo withdifferential,init Use school Go select*from student Backupdatabase school to schooldemo withdifferential,init

数据库_实验三答案

实验3 SQL语言 一、实验目的 1、掌握SQL中运算符和表达式的使用。 2、掌握实用SQL语言查询数据库。 二、实验要求 1、所有的实验过程请严格按照实验容的步骤进行。 2、对关键步骤截屏并复制到实验报告的相应位置。 三、实验设备、环境 设备:计算机 环境:WINDOWS XP、SQL SERVER 2000中文版 四、实验原理、方法 上机操作 五、实验容 准备工作:还原学生成绩管理数据库; 注意:写SQL语句时,注意学生成绩管理数据库中表名称和字段名称的对应。 1、使用SQL查询分析器,对学生成绩管理数据库完成如下查询操作: 1)简单查询 (1)求数学系学生的学号和。 (2)求选修了课程的学生学号。

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。 (4)求选修课程0001且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 (5)求数学系或计算机应用系姓王的学生的信息。 (6)求缺少了成绩的学生的学号和课程号。

2)连接查询 (1)查询每个学生的情况以及他(她)所选修的课程。 (2)求学生的学号、、选修的课程名及成绩。 (3)求选修0001课程且成绩为90分以上的学生学号、及成绩。

3)嵌套查询 (1)求选修了0003的学生学号和。 (2)求0001课程的成绩高于王军的学生的学号和成绩。

(3)求其他系中比计算机系某一学生年龄小的学生。 4)使用分组和函数查询 (1)求学生的总人数。 (2)求选修了课程的学生人数。

(3)求课程和选修0001的人数。 (4)求选修课超过3门课的学生学号。

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

数据库管理系统实验报告含答案

xxxx大学《数据库管理系统》课程实验报告 班级: _______姓名:实验时间:年月日指导教师:_______ 一、实验目的 1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。 2、牢固掌握SQL SERVER的功能操作和Transact-SQL语言。 3、紧密联系实际,学会分析,解决实际问题。学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。 二、实验内容 1.导入实验用示例数据库: f:\教学库.mdf f:\教学库_log.ldf f:\仓库库存.mdf f:\仓库库存_log.ldf 1.1 将数据库导入 在SqlServer 2005 导入已有的数据库(*.mdf)文件,在SQL Server Management Studio 里连接上数据库后,选择新建查询,然后执行语句 EXEC sp_attach_db @dbname = '教学库', @ = 'f:\教学库.mdf', @ = 'f:\教学库_log.ldf' go use [教学库] EXEC sp_changedbowner 'sa' go EXEC sp_attach_db @dbname = '仓库库存', @ = 'f:\仓库库存.mdf',

@ = 'f:\仓库库存_log.ldf' go use [仓库库存] EXEC sp_changedbowner 'sa' go 1.2 可能出现问题 附加数据库出现“无法打开物理文件"X.mdf"。操作系统错误5:"5(拒绝访问。)"。(Microsoft SQL Server,错误: 5120)”。 解决:找到要附加的.mdf文件-->右键-->属性-->安全-->选择当前用户-->编辑-->完全控制。对.log文件进行相同的处理。 2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。 CREATE DATABASE仓库库存 (NAME = '仓库库存_data', = 'F:\仓库库存_data.MDF' , SIZE = 10MB, = 20%) LOG ON (NAME ='仓库库存_log', = 'F:\仓库库存_log. LDF', SIZE = 2MB, MAXSIZE = 5MB, = 1MB) 2.1 在数据库“仓库库存”中完成下列操作。 (1)创建“商品”表,表结构如表1: (2)创建“仓库”表,表结构如表2: 表2 仓库表

相关文档