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

数据库试验答案

数据库试验答案
数据库试验答案

计算机与信息学院

数据库实验报告

专业班级

学生姓名及学号

课程教学班号

任课教师

实验指导教师

实验地点

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。

2. 使用向导删除上面建立的数据库。

用SSMS删除建立的数据库EDUC。

五、实验总结

经过本次试验,对于SQL SERVER有了一个初步的认识,也对于在sql server上创建数据库有了一定的了解。

实验2使用SQL语句创建和删除数据库

一、实验目的

1. 了解SQL Server 2005数据库的逻辑结构和物理结构。

2. 掌握使用SQL 语句创建和删除数据库。

二、实验要求

1. 熟练使用查询分析器进行数据库的创建和删除操作。

2. 完成实验报告。

三、实验内容

用SQL语句去创建和删除数据库。

四、实验步骤

1.创建数据库userdb1。

2.根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC. create database EDUC

on

(name=EDUC_data,--数据文件的逻辑名称,注意不能与日志逻辑同名

filename='E:\sql_data\student_data.mdf',--物理名称,注意路径必须存在

size=10,--数据初始长度为M

maxsize=50,--最大长度为M

filegrowth=5%)--数据文件每次增长M

log on

(name=EDUC_log,

filename='E:\sql_data\student_log.ldf ',

size=2 ,

maxsize=5 ,

filegrowth=1)

3.用SQL语句删除步骤1建立的数据库userdb1。

drop database userdb1;

五、实验总结

掌握了用SQL语句创建和删除数据库,对SQL Server都有了进一步的认识和了解,发现其实SQL语句还是挺好用的。

实验三分别用向导和SQL语句创建和删除表

一、实验目的

1.了解表的结构特点。

2.了解SQL Server的基本数据类型。

3.学会使用T-SQL语句创建表。

二.实验要求

1.完成SQL语句创建和删除基本表。

2.完成实验报告。

三.实验内容

在数据库EDUC中,创建如下几个表:

1.打开查询窗口,输入创建基本表的sql语句。

(1)student表:

create table student(

sno char(8)NOT NULL primary key,--学号

sname varchar(10)NOT NULL,--姓名

sex char(2)check(sex='女'or sex='男'),--性别:男、女

clsno char(6),--班级编号,(外键)参照表class

foreign key (clsno)references class(clsno),

sadrr varchar(20),--住址

sage numeric(3,0),--年龄,大于,但小于岁

height decimal(4,2)--身高

)

(2)class表

create table class(

clsno char(6)NOT NULL primary key,--班号

clsname varchar(16)NOT NULL,--班名

director varchar(10)NULL,--辅导员

specialty varchar(30)NULL--专业

)

(3)course表

create table course(

cno char(4)NOT NULL primary key,--主键

cname varchar(16)NOT NULL,--课程名称

cpno char(4),--先修课程的课程号(外键),参照cno

ccredit tinyint--学分

)

(4)sc表

create table sc(

sno char(8)NOT NULL,--学号,参照Student,与Cno组成主键cno char(4)NOT NULL,--课程号,参照Course

grade numeric(4,1)NULL,--成绩

primary key(sno,cno),

foreign key(sno)references student(sno),

foreign key(cno)references course(cno),

)

五、实验总结

通过本次试验,基本掌握了用sql语言创建数据库表的基本方法。

实验四数据更新操作

一. 实验目的

1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;

2.能将这些更新操作应用于实际操作中去;

二. 实验要求

1.完成下面的实验内容,并提交实验报告;

2.在实验报告中附上相应的代码;

三. 实验内容

(1) 向表(Student)中插入数据

insert into student

values (,'王军','男','cs01','下关#','20','1.76');

insert into student

values (,'李杰','男','cs01','江边路#','22','1.72');

insert into student

values (,'王彤','女','MT04','中央路#','19','1.65');

insert into student

values (,'吴杪','女','PH08','莲化小区#','18','1.60');

select*from student;

(2

插入数据之后使用命令:Select * from Class; 检查插入数据的正确性insert into class

values('cs01','计算机一班','王宁','计算机应用');

insert into class

values('cs02','计算机二班','王宁','计算机应用');

insert into class

values('MT04','数学四班','陈晨','数学');

insert into class

values('PH08','物理八班','葛格','物理');

select*from class;

(3)向表(Course )中插入数据

插入数据之后使用命令:Select * from Course; 检查插入数据的正确性insert into course

values('0001','高等数学',NULL,'6');

insert into course

values('0003','计算机基础','0001','3');

insert into course

values('0007','物理','0001','4');

select*from course;

(4)向表(SC

insert into sc

values(,'0001','90');

insert into sc

values(,'0007','86');

insert into sc

values(,'0001','87');

insert into sc

values(,'0003','76');

insert into sc

values(,'0001','87');

insert into sc

values(,'0003','93');

insert into sc

values(,'0007','85');

select*from sc;

(5).对于student表,将所有班级号为‘CS01’的,并且年龄小于20岁的学生的班级号改为‘CS02’。

update student

set clsno='cs02'

where clsno='cs01'and

sage<20;

select*from student;

(6).对于student表,删掉所有年龄大于20岁,并且专业号为‘CS02’的学生的记录。‘CS01’。

由于表student数据较少,因而添加数据,用来满足要求:

insert into student

values (,'黄磊','男','cs01','下关#','18','1.78');

insert into student

values (,'李超','男','cs01','江边路#','19','1.72');

insert into student

values (,'陈明飞','男','cs02','中央路#','22','1.65');

delete

from student

where sage>20 and

clsno='cs02';

insert into student(sno,sname,ssex,sage,clsno)

values(,'张三','男','19','cs01')

(7).对于student表,将年龄最小的学生的家庭地址去掉。

update student

set sadrr=null

where sage=(select MIN(s.sage)

from student s);

(8).对于student表,将平均年龄最小的一个班级编号改为‘GL01’

由于给定的class表中数据不足,因而添加数据以用来满足要求。

insert into class

values('gl01','计算机班','王','计算应用');

update student

set student.clsno='gl01'

where student.clsno=

(select t1.clsno

from (select s1.clsno,avg(s1.sage)a from student s1group by s1.clsno)t1,(select MIN(t2.a1)m from (select s.clsno,avg(s.sage)a1from student s group by s.clsno)t2)t3 where t1.a=t3.m);

五、实验总结

通过本次试验,懂得了用sql语言来插入数据,以及一些简单的数据更新操作,也对sql server有了更多的了解。

在实验的过程中,也遇到许多的问题,并在实验的过程中解决。比方说,在往表中插入数据时,先插的student表的数据,结果就发现出现错误,原来是student表中的clsno是class 表的外码,需要先插入class表,student表内容才能插进去;还有在数据更新的过程中,比方说“对于student表,将平均年龄最小的一个班级编号改为‘GL01’”,由于class表中没有班号位“gl01”,因而出错,这是没有违反完整性约束条件,在插入一组班号为“gl01”时,该更新操作就能正确的运行。

实验五创建和删除索引

一. 实验目的

1.了解索引的类型和应用。

2.学会用SQL语句对表创建和删除索引

二. 实验要求

1. 了解索引类型并比较各类索引的不同之处

2.完成索引的创建和删除,并提交实验报告。

三. 实验内容

1. 用SQL语句分别建立以下索引

(1) 在student表的Sname列上建立普通降序索引Stusname。

(2) 在course表的Cname列上建立唯一索引Coucname。

(3) 在sc表的Sno(升序), Cno(升序)和grade (降序)三列上建立一个普通索引SCno。

2. 用SQL语句删除索引

Student表的Stusname索引。

四、实验步骤

1. 用SQL语句分别建立以下索引

(1)在student表的sname列上建立普通降序索引Stusname。

create index stusname

on student(sname desc);

(2)在course表的cname列上建立唯一索引Coucname。

create unique index coucname

on course(cname);

(3) 在sc表的Sno(升序), Cno(升序)和grade (降序)三列上建立一个普通索引SCno。create index scno

on sc(sno,cno,grade desc)

2. 删除索引

删除Student表的Stusname索引。

drop index stusname on student;

五、实验总结

通过本次试验,学会了用sql语言为基本表创建索引和删除索引。

实验六数据查询

一.实验目的

1.观察查询结果, 体会SELECT语句实际应用;

2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。

3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

二.实验要求

1. 完成简单查询和连接查询操作,并验收实验结果提交实验报告

三.实验内容

所有的查询全部用Transact-SQL语句实现。此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

对EDUC数据库实现以下查询:

1)查询计算机应用专业的学生学号和姓名;

2)查询选修了课程的学生学号;

3)查询选修课程0001 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数

0.75 输出;

4)查询计算机应用和数学专业的姓“张”的学生的信息。

5)查询“0001”课程的成绩高于张三的学生学号和成绩;

6)查询没有选修“0002”课程的学生姓名;

四.实验步骤

打开查询窗口,输入SQL查询语句,点击“执行”按钮,查看查询结果。

1)查询计算机应用专业的学生学号和姓名;

select sno,sname

from student,class

where student.clsno=class.clsno and

class.specialty='计算机应用';

2)查询选修了课程的学生学号;

select sno

from sc

where sno is not null;

3)查询选修课程0001 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;

select sno,grade*0.75

from sc

where cno='0001'and

grade between 80 and 90;

4)查询计算机应用和数学专业的姓“张”的学生的信息。

select*

from student,class

where sname like'张__'and

student.clsno=class.clsno and

(specialty='计算机应用'or

specialty='数学');

5)查询“0001”课程的成绩高于张三的学生学号和成绩;

select student.sno,grade

from student,sc

where cno='0001'and

student.sno=sc.sno and

grade in(select grade

from student,sc

where sname='王军'and

student.sno=sc.sno

)

6)查询没有选修“0002”课程的学生姓名;

select distinct sname

from student,sc

where student.sno=sc.sno and cno!='0002

五、实验总结

通过本次试验,复习用sql语言处理数据查询的一些方法,更好的掌握数据的查询。

实验七使用聚集函数的SELECT语句

一.实验目的

1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

2. 进一步掌握SQL Server 查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。

二.实验要求

1.在实验之前做好准备。

2.完成实验,并验收实验结果提交实验报告。

三.实验内容

在数据库EDUC中用SQL语句实现如下查询:

1)求学生的总人数。

2)求选修了课程的学生人数。

3)求课程的课程号和选修该课程的人数。

4)求选修课程超过2 门课的学生学号。

四. 实验步骤

1) 求学生的总人数.

select COUNT(*)

from student;

2) 求选修了课程的学生人数。

select COUNT(distinct sno)

from sc;

3)求课程的课程号和选修该课程的人数。

select COUNT(cno)

from sc

group by cno;

4)求选修课程超过2 门课的学生学号。

select sno

from sc

group by sno

having COUNT(*)>1;

五、实验总结

通过本次试验对聚集函数的SELECT语句使用更加熟悉。

实验八视图的定义与使用

一.实验目的

1.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

2.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本

表更新的区别与联系;

3.学习灵活熟练的进行视图的操作,认识视图的作用。

二.实验要求

1.在实验开始之前做好准备工作。

2.实验之后提交实验报告,思考视图和基本表的区别

三.实验内容

1.定义视图

在EDUC数据库中,已Student、Course 和SC表为基础完成一下视图定义:

1)将Student, Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定

义为视图V_SC_G;

2)定义一个反映学生出生年份的视图V_YEAR;

3)将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G;

4)将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。

2.使用视图

1)查询以上所建的视图结果。

2)查询平均成绩为90分及以上的学生学号、姓名和成绩;

3)查询课程成绩大于平均成绩的学生学号、课程号、成绩和平均成绩;

4)查询1994年出生的学生学号和姓名。

四.实验步骤

1.定义视图

1) 将Student, Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G.

create view v_sc_g

as

select student.sno,sname,https://www.wendangku.net/doc/c917478801.html,o,cname,grade

from sc,student,course

where sc.sno=student.sno and

https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o;

select*from v_sc_g;

drop view v_sc_g;

2)定义一个反映学生出生年份的视图V_YEAR.

create view v_year

as

select sno,sname,2013-sage age

from student;

select*from v_year;

3) 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G.

create view v_avg_s_g

as

select student.sno,COUNT(cno)cnum,avg(grade)avg_age

from sc,student

where sc.sno=student.sno

group by student.sno;

4) 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。

create view v_avg_c_g

as

select cno,count(*)

as cnum,avg(grade)avg_grade

from sc

group by cno;

select*from v_avg_c_g;

2.使用视图

1)查询以上所建的视图结果。

2)查询平均成绩为90分及以上的学生学号、姓名和成绩;

select student.sno,sname,avg_age

from v_avg_s_g s,student

where s.sno=student.sno and

s.avg_age>='90';

3).查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩;select student.sno,sname,cno,grade,avg_age

from sc a,student,v_avg_s_g

where a.sno=student.sno and

Student.sno=v_avg_s_g.sno and

not exists(

select*

from sc b,v_avg_c_g

where a.Grade

and https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o

)

4)查询1994年出生的学生学号和姓名。

select sname,sno

from v_year

where age='1994';

五、实验总结

视图的使用很简单,有时使查询变得更加简单,和表的使用很像。视图就是一种很特殊的表。

实验九触发器的创建与使用

一、实验目的

本实验的目的是使学生进一步掌握SQL Server触发器的创建及使用方法,加深SQL触发器的理解。通过对数据的更新操作体会其触发器的作用。

二、实验要求

1. 在实验之前做好准备

2. 试验之后提交实验报告,并验收实验结果

三、实验内容

1. 在班级表class中增加班级人数(c_total)字段

2. 创建INSERT触发器t_inst_stu

3. 创建DELETE触发器t_dele_stu:在学生表(student)中删除一名学生,若其班级编号非

空,则将班级表(class)中相应班级的人数(c_total)自动减1。

4. 创建UPDATE触发器t_update_stu。

5. 体会触发器的作用。

四、实验步骤

1. 在班级表class中增加班级人数(c_total)字段,默认值是0;

并手动统计人数作为该字段的值;

alter table class add c_total int NOT NULL DEFAULT 0

-- alter table class drop column c_total --删除一个字段

2. 创建INSERT触发器t_inst_stu:在学生表(student)中每新增一名学生,若其班级编号

非空,则将班级表(class)中相应班级的人数(c_total)自动加1。

create trigger[dbo].[t_inst_stu]on[dbo].[student]

for insert

as

begin

declare@cls char(6)

select@cls=ClsNo from inserted

if exists(select*from student

where student.ClsNo=@cls and student.ClsNo is not null) print'开始查找并将班级人数加1……..'

update class set c_total=c_total+1 where ClsNo=@cls

print'班级人数已增加!!!!'

End

3. 创建DELETE触发器t_dele_stu:在学生表(student)中删除一名学生,若其班级编号非

空,则将班级表(class)中相应班级的人数(c_total)自动减1。

create trigger[dbo].t_dele_stu

on[dbo].student

for delete

as begin

declare@cls char(6)

select@cls=clsno from deleted

if exists(select*from student

where student.clsno=@cls and

student.clsno is not null)

print'开始查找并将班级人数减……..'

update class

set c_total=c_total-1

where class.clsno=@cls

print'班级人数已减少!!!!'

End

4. 创建UPDATE触发器t_update_stu:当某学生所在班号发生变化时(即调到另一班级后),

将其原先所在班级的人数(c_total)减1,将新调入的班级班级的人数(c_total)加1。create trigger t_update_stu

on student

for update

as begin

declare@oldClsNO char(8),@newClsNO char(8);

select@oldClsNO from deleted;

select@newClsNO from inserted;

if@oldClsNO is not null

update class set c_total=c_total+1

where ClsNO=@oldClsNO;

if@newClsNO is not null

update class set c_total=c_total-1

where ClsNO=@newClsNO;

End

5. 触发器的作用:

1) 查看班级表(class)

2)对学生表(student)分别插入(INSERT)、删除(DELETE)和修改(UPDATE)元组insert into student

values(,'古鑫','男','cs01','合工大','20','1.70');

delete from student

where sname='古鑫';

3)再次查看班级表(class),检查其数据的变化情况,体会触发器的作用。select*from class;

五.实验总结

对触发器的创建把握的不是太好,还是需要多加锻炼。

实验十存储过程的创建与使用

一、实验目的

本实验的目的是使学生进一步掌握SQL Server存储过程的创建及使用方法,加深对SQL 存储过程的理解。通过对存储过程的调用体会其作用。

二、实验要求

1. 在实验之前做好准备

2. 试验之后提交实验报告,并验收实验结果

三、实验内容

1、创建一个不带参数的存储过程p_stu_info1,实现对满足要求的学生基本信息的查询。

2、创建一个带有参数的存储过程p_stu_info2,实现对满足要求的学生基本信息的查询。

3、创建一个存储过程p_stu_info3,根据输入的学号,查询某学生的基本信息。

4、创建一个存储过程p_stu_grade,根据输入的学号,返回其选课及其成绩。

5.使用SQL语句分别执行p_stu_info1、p_stu_info2、p_stu_info3和p_stu_grade,并将

结果显示出来。

四、实验步骤

1.建立不带参数的存储过程p_stu_info1(选择所有年龄<21岁的男同学)。

create procedure p_stu_infol

as begin

select distinct*from student

where sage<20 and sex='男'

End

执行语句:exec p_stu_info1

2.建立带有参数的存储过程p_stu_info2,根据传递的参数只显示与指定学号的学生同龄的所有同学(如:,自己可以选别的学号,下同)。

如:

create procedure p_stu_info2

@sno char(8)

as

begin

declare@age numeric(3, 0)

select@age=sage from student where sno=@sno

select*from student where sage=@age

end

exec p_stu_info2

3.创建一个存储过程p_stu_info3,根据传入的学号(如:),查询某学生的基本信息。create procedure p_stu_info3

@sno char(8)

as begin

select*from student

where sno=@sno

end

exec p_stu_info3

4. 创建一个存储过程p_stu_grade,根据输入的学生学号(如:),返回其选课及其成绩。create procedure p_stu_grade

@sno char(10)

as

begin

select*from v_sc_g

where@sno=sno

End

exec p_stu_grade

五、实验总结

这次实验,了解了存储过程的意义,掌握了存储过程的调用及其参数的使用方法。但是对这一块掌握的还不是太好,以后会多加练习的。

实验十一用户管理操作

一、实验目的

本实验的目的是使学生进一步掌握SQL Server用户角色及权限的使用方法,加深SQL 用户管理的理解。SQL Server的特定数据库都有自己的用户和角色(用户组),该数据库只能由它的用户或角色访问,其他用户无权访问该数据库数据,数据库系统可以通过创建和管理特定的数据库的用户和角色来保证数据库不被非法用户访问。

二、实验要求

1.实现对SQL Server的用户和角色管理

2.设置和管理数据操作权限

三、实验内容

1、创建登录帐号

2、创建用户

3、创建角色

4、授权

5、验证授权操作

四、实验步骤(贴图仅供参考)

1. 创建登录帐号

--添加登录cxp,设置密码为123,默认数据库为EDUC

use EDUC

go

exec sp_addlogin'cxp','123','EDUC';

2、创建用户

use EDUC

go

exec sp_addlogin'cxp1','123','EDUC';

create user p for login cxp1with default_schema=dbo;

此时用户CXP没有一些操作的权限,要用创建的登录账号进入进行验证,如下:

use EDUC

go

select*from student;

3、创建角色

用create语句进行创建

use EDUC

go

create role李超;

4.给角色授权:

grant update(sno),select

on student

to李超;

5.删除角色:

use EDUC

go

drop role李超;

6.验证授权操作

用cxp登录账号登录后,进行验证;

Select *from student;

五.实验总结

通过本次试验,加强了对数据库用户的建立和用户权限的一些基本知识,也对创建角色有了深刻的认识。

数据库实验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

数据库实验四作业及答案

实验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/c917478801.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/c917478801.html,um =https://www.wendangku.net/doc/c917478801.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;

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

实验四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。

数据库实验四(含答案)

实验四使用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 ,

数据库实验答案

实验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中建立四个表:

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

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

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 客户端连接上。 可以通过服务管理器来进行启动。

数据库认证实验四答案

--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门课的学生学号。

数据库实验5答案

实验五:数据库综合查询 一、实验目的 1.掌握SELECT语句的基本语法和查询条件表示方法; 2.掌握查询条件种类和表示方法; 3.掌握连接查询的表示及使用; 4.掌握嵌套查询的表示及使用; 5.了解集合查询的表示及使用。 二、实验环境 已安装SQL Server企业版的计算机(120台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1.了解SELECT语句的基本语法格式和执行方法; 2.了解连接查询的表示及使用; 3.了解嵌套查询的表示及使用; 4.了解集合查询的表示及使用; 5.完成实验报告; 五、实验内容及步骤 1.利用Transact-SQL嵌套语句实现下列数据查询操作。 1) 查询选修了计算机体系结构的学生的基本信息。 select*from student where Sno in(select Sno from course where Cno in(select Cno from sc where Cname='计算机体系结构')) 2) 查询年龄比李勇小的学生的学号和成绩。 select a.sno,grade from student a,course where a.sno=course.sno and sage<(select sage from student where sname='李勇') 3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1') 4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。 select*from student where dnum<>'D3'AND SAGE>all(select sage from student where dnum='D3')

数据库实验三作业及答案.docx

实验3 SQL Server 数据表的管理 一、实验目的 1.学会使用企业管理器和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表。 2.学会在企业管理器中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验准备 1.了解在企业管理器中实现表数据的操作,如插入、修改和删除等。 2.掌握用Transact-SQL语句对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE和TRANCATE TABLE)操作。 三、实验内容及步骤 1.启动企业管理器,展开studentsdb数据库文件夹。 2.在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2、图1-3和图1-4所示。 图1-2 学生基本情况表student_info 图1-3 课程信息表curriculum 图1-4 学生成绩表grade 3.在企业管理器中创建student_info、curriculum表。 4.在企业管理器中,将student_info表的学号列设置为主键,非空。 5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。 CREATE TABLE grade (学号varchar(4), 课程编号varchar(4), 分数decimal(5,0) ) 6.student_info、curriculum、grade表中的数据如图1-5、图1-6和图1-7所示。 图1-5 student_info的数据

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

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 仓库表

数据库实验四答案

数据库实验四答案 --实验四-- --1.定义“IS”系学生基本情况视图V_IS 并查询结果; create view V_IS as select * from S where Sdept='IS' with check option; select * from V_IS; --2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果; create view V_S_C_G as select S.Sno,Sname,https://www.wendangku.net/doc/c917478801.html,o,Cname from S,C,SC where S.Sno=SC.Sno and https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o; select * from V_S_C_G; --3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果; create view V_NUM_AVG as select count(Sno) DeptNum ,avg(Sage) DeptAvgAge,Sdept from S group by Sdept; select * from V_NUM_AVG; --4.定义一个反映学生出生年份的视图V_YEAR并查询结果; create view V_YEAR as select Sno,2012-Sage birthday from S;

select * from V_YEAR; --5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果; create view V_AVG_S_G as select SC.Sno,count(https://www.wendangku.net/doc/c917478801.html,o) CountCno,avg(Grade) AvgGrade from S,C,SC where S.Sno=SC.Sno and https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o group by SC.Sno; select * from V_AVG_S_G; --6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果; create view V_AVG_C_G as select count(SC.Sno) Cnum,avg(Grade) AvgGrade from S,C,SC where S.Sno=SC.Sno and https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o group by https://www.wendangku.net/doc/c917478801.html,o; select * from V_AVG_C_G; --7.查询平均成绩为90分以上的学生学号、姓名和成绩; select SC.Sno,Sname,avg(Grade) AvgGrade from S,SC where S.Sno=SC.Sno group by SC.Sno,Sname having avg(Grade) >90; --8.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;create view V_AVG as select https://www.wendangku.net/doc/c917478801.html,o,avg(Grade) AvgGrade from C,SC where https://www.wendangku.net/doc/c917478801.html,o=https://www.wendangku.net/doc/c917478801.html,o group by https://www.wendangku.net/doc/c917478801.html,o; select distinct S.Sno,Sname,https://www.wendangku.net/doc/c917478801.html,o,Grade

相关文档