数据库实验示例带答案
示例1
实验一
实验名称:SQL语句的应用(6课时)
一、实验目的
通过使用SQL SERVER企业管理器建立表。模式为人事表、客户表、销售表、销售明细表、产品表。理解数据库模式的概念,理解主键约束、外键约束、UNIQUE约束和CHECK 约束。通过SQL SERVER企业管理器建立表间的约束。将得到的表生成脚本,保存。
二、实验环境
是MS SQL SERVER 2000的中文客户端。
三、实验示例
create table employee1(
emp_no char(5) not null,
constraint emp_nochk check(emp_no like '[E-F][0-9][0-9][0-9][0-9]'),
emp_name char(10) not null,
emp_sex char(1) not null,
constraint emp_sexchk check(emp_sex in ('m','f')),
emp_phone char (13) not null,
constraint emp_phonechk check(emp_phone like '([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'), emp_add varchar(60) not null,
emp_salary char(5) not null,
constraint emp_salarychk check (emp_salary between 60000 and 80000)
)
go
四、实验内容与步骤
1、建立五张表,每张表至少需要20条记录。
(1)/*员工人事表employee */
(3)/*销售主表sales */
(4)/*销货明细表sale_item */
2、建立表的同时创建表的约束。
(1)为每张表建立主键约束。
(2)通过拖放操作加入外键。
(3)在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。
(4)为销售主表sales中的发票编号字段建立UNIQUE约束。
3、通过快捷菜单得到脚本。
五、实验报告
实验二
实验名称:使用SELECT、UPDA TE/INSERT/DELETE语句。(2课时)
一、实验目的
理解SELECT语句的操作和基本使用方法,熟练使用UPDA TE/INSERT/DELETE语句进行表操作。
二、实验环境
三、实验示例
1、查找出职称为经理和职称为职员的女员工的姓名、职称、性别。
select emp_name,title,sex
from employee
where title='经理'or title='职员'and sex='F'
2、选取销售数量最多的前5条订单订单号、数量。
select top 5 with ties order_no,sup_id,qty
from sale_item
order by qty desc
3、计算出sale_item表中每一笔销售数据的销售金额,并按照销售金额的大小排序。select prod_id,qty,unit_price,(qty*unit_price)tot_amt
from sale_item
order by tot_amt desc
四、实验内容与步骤
1、查找所有经理的姓名、职称、薪水。
select emp_name,title,salary from employee where title='经理';
2、查找出姓“王”并且姓名的最后一个字为“功”的员工。
select*from employee where emp_name like'王_功'
3、添加一条记录至employee表(用INSERT…..INTO)。
insert into employee values('E1014','a14','m','办公','经理','2012-01-20','1999-12-23',60000,'北京');
4、将每个员工的薪水上调3%。
update employee set salary =salary*(1+0.03);
5、查找住在上海或北京的女员工,并显示其姓名、所属部门、职称、住址。
select emp_name,dept,title,addr from employee where sex='f'and (addr='上海'or addr='北京');
6、在表sales中挑出销售金额大于等于10000元订单。
select*from sales where tot_amt>=10000;
7、选取订单金额最高的前10%的订单数据。
select top 10 percent*from sales order by tot_amt desc;
8、查找出职称为经理或职称为职员的女员工的信息。
select*from employee where title='经理'or title='职员'and sex='f';
9、删除sales表中作废的订单(其发票号码为I000000004),其订货明细数据也一并删除。
delete from sales where invoice_no='I000000004';
sales 表和sale_item 要建立关联,删除原则设为“层叠”
10、计算出一共销售了几种产品。
select count(distinct prod_id ) from sale_item ;
11、显示sale_item表中每种个别产品的订购销售金额总和,并且依据销售金额由大到小排
列来显示出每一种产品的排行榜。
select prod_id,sum(qty*unit_price)as销售金额from sale_item group by prod_id order by sum(qty*unit_price)desc;
12、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。
select month(order_date)as月份,prod_id,sum(qty*unit_price)as销售金额from sale_item group by prod_id ,month(order_date);
五、实验报告
实验名称:表连接JOIN(2课时)
一、实验目的
理解JOIN语句的操作和基本使用方法,掌握内连接、外连接、自身连接的概念和使用。二、实验环境
三、实验示例
1、检索product 表和sale_item表中数量大于2的相同产品的产品编号、产品名称、数量、
单价。
select a.prod_id,a.qty,a.unit_price,b.prod_name
from sale_item as a inner join product as b /*如果改成left join/right join 试分析结果*/
on (a.prod_id=b.pro_id) and a.qty>2
order by a.prod_id
2、查找出employee表中住址相同的员工的姓名、性别、职称、薪水、住址。
select a.emp_name,a.sex,a.title,a.salary,a.addr,b.emp_name,b.sex,b.title,b.salary,b.addr
from employee as a inner join employee as b
on (a.emp_no!=b.emp_no) and (a.emp_name>b.emp_name) and (a.addr=b.addr)
四、实验内容与步骤
1、查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪水、住址。
select
a.emp_name,a.sex,a.title,a.dept,a.salary,a.addr,
b.emp_name,b.sex,b.ti tle,b.dept,b.salary,b.addr
from employee as a join employee as b
on(a.emp_no!=b.emp_no)and(a.emp_name>b.emp_name)and(a.dept=b.dept) and(a.addr=b.addr) and a.sex = 'm' and b.sex = 'm';
2、检索product 表和sale_item表中相同产品的产品编号、产品名称、数量、单价。
select a.prod_id,a.prod_name,b.qty,b.unit_price from product as a join sale_item as b on a.prod_id=b.prod_id order by prod_id ;
3、检索product 表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、
数量、单价。
select a.prod_id,a.prod_name,b.qty,b.unit_price from product as a join sale_item as b on a.prod_id=b.prod_id and b.unit_price>2400 ;
4、分别使用左向外连接、右向外连接、完整外部连接检索product 表和sale_item表中单价
高于2400元的相同产品的产品编号、产品名称、数量、单价。并分析比较检索的结果。select a.prod_id,a.prod_name,b.qty,b.unit_price from product as a left join sale_item as b on a.prod_id=b.prod_id and b.unit_price>2400 ;
inner join left join right join full join
五、实验报告
实验名称:SELECT的嵌套使用,实现复杂查询(2课时)
一、实验目的
掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法。
二、实验环境
三、实验示例
1、由employee表中查找出薪水最高的员工信息。
select *
from employee
where salary=
(select max(salary )
from employee )
2、由sales表中查找出订单金额大于“E0107业务员在2012-1-2这天所接每一张订单的金额”的所有订单。
select*from sales where tot_amt >all
(select tot_amt
from sales
where sale_id='E0107'and order_date='2012-01-02')
order by tot_amt
3、利用begin...end语句实现数据查询,查询出employee表中所有女职工的平均工资和
住址在"上海市"的所有女职工的平均工资
begin
select avg(salary)
from employee
where sex like'f'
union
select avg(salary)
from employee
where sex like'f'and addr like'上海'
end
四、实验内容与步骤
1、由sales表中查找出销售金额最高的订单。
select*from sales
where tot_amt=
(select max(tot_amt )
from sales )
2、由sales表中查找出订单金额大于“E0107业务员在2012-1-2这天所接任一张订单的金
额”的所有订单,并显示承接这些订单的业务员和该条订单的金额。
select sale_id,tot_amt from sales where tot_amt >all
(select tot_amt
from sales
where sale_id='E0107'and order_date='2012-01-02')
order by tot_amt
3、找出公司女业务员所接的订单。
select*
from sales
where sale_id in
(select emp_no
from employee where sex='f')
select*from sales a join employee b on a.sale_id=b.emp_no and b.sex='f' order by sale_id
select a.order_no,a.cust_id,a.sale_id,a.tot_amt from sales a,employee b where a.sale_id=b.emp_no and b.sex='f'
4、找出公司中姓名相同的员工,并且依据员工编号排序相识这些员工信息。
select*from employee where emp_name in
(select emp_name from employee group by emp_name having
count(emp_name)>1
)order by emp_name,emp_no;
select*from employee as a where exists
(select * from employee b where a.emp_no!=b.emp_no and
a.emp_name=
b.emp_name )
order by emp_name,emp_no
5、找出目前业绩未超过200000元的员工。
select*from employee where emp_no in
(select sale_id from sales where tot_amt<50000)
6、计算公司内各个部门的工资支出总和。
select dept,sum(salary)from employee group by dept
7、计算每一产品销售数量总和与平均销售单价。
select prod_id,sum(qty),avg(unit_price)from sale_item group by
prod_id
五、实验报告
实验五
实验名称:视图的建立与使用(2课时)
一、实验目的
掌握视图的定义与工作原理。
二、实验环境
三、实验示例
1、
create view emp_view as
select emp_no,emp_name,salary
from employee
where sex='f'
2、
create view sale_item_view as
select sales.order_no,sales.order_date,prod_id,qty
from sales,sale_item
where sales.order_no=sale_item.order_no
/*注意:插入数据时要考虑数据列是否有默认值或允许为空,否则INSERT失败。*/
insert into sale_item_view(order_no,order_date)
values(10010,'1996/12/20')
insert into sale_item_view(prod_id,qty)
values('p0010',8)
四、实验内容与步骤
1、创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。
2、对视图添加一条记录数据。(注意:分别查看customer表和该视图的结果。)
3、删除视图中所有姓“王”的客户数据。
4、通过视图修改表内某一客户的姓名。
5、有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、
订单号、销售总金额。
6、将上述视图中订单号为10001的记录的销售总金额改为60000。
7、给上述视图添加一条记录数据。
8、删除上述视图。
五、实验报告
实验六
实验名称:存储过程建立与调用(含带参存储过程的建立与调用)(2课时)
一、实验目的
理解存储过程的概念、建立和调用方法。
二、实验环境
三、实验示例
1、模糊查询
create procedure sp_empname @E_name varchar(10) as
select a.emp_name,a.dept,b.tot_amt
from employee a inner join sales b
on a.emp_no=b.sale_id
where a.emp_name like @E_name
go
exec sp_empname '陈%'
2、利用存储过程计算出’E0014’业务员的销售总金额。
create procedure sp_saletot @E_no char(5),@p_tot int output as
select @p_tot=sum(tot_amt)
from sales
where sale_id=@E_no
go
declare @tot_amt int
exec sp_saletot E0014, @tot_amt output
select @tot_amt
四、实验内容与步骤
1、利用存储过程,给employee表添加一条业务部门员工的信息。
2、利用存储过程从employee、sales、customer表的连接中返回所有业务员的姓名、客户姓
名、销售金额。
3、利用存储过程查找“刘刚”的员工编号、订单编号、销售金额。
4、利用存储过程查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金
额。
5、利用存储过程计算出订单编号为10003的订单的销售金额。
五、实验报告
实验七
实验名称:触发器的建立与使用(2课时)
一、实验目的
理解触发器的概念、定义方法和触发条件。
二、实验环境
采用Client/Server模式,学生为客户端,是MS SQL SERVER 2000的中文客户端。登录用户名是:学号;密码为:****** 。用户名和密码以任课老师给出为准。
三、实验示例
(一)After类型触发器
1.创建AFTER-INSERT触发器:在sale_item表上创建dml触发器inssale_item_trg,当向sale_item插入一条记录时,--检查prod_id 是否在product中,order_no是否在sales表中,只要一项不存在,则给出错误提示,并撤销插入操作。
USE company
GO
CREATE TRIGGER inssale_item_trg
ON sale_item
FOR INSERT
AS /* 这触发器定义要执行的操作*/
IF EXISTS(SELECT * FROM inserted a
WHERE (a.prod_id NOT IN(SELECT prod_id FROM product)
OR a.order_no NOT IN(SELECT order_no FROM sales)))
BEGIN
RAISERROR('插入的数据违背了数据的一致性',16,1) /* 错误提示*/
ROLLBACK TRANSACTION /* 事务回滚*/
END;
GO
*/
insert into sale_item(order_no,prod_id)values('24','21')
2.创建AFTER-DELETE触发器:在表sales上创建触发器delsales_trg 当从sales表中删除一条记录时,检查sale_item中是否存在被删记录的order_no,如果存在,则从sale_item表中删除该记录。
/*
USE company
GO
CREATE TRIGGER delsales_trg
ON sales
FOR DELETE
AS /* 为触发器定义要执行的操作*/
DELETE sale_item WHERE sale_item.order_no IN
(SELECT order_no FROM deleted)
GO
*/
delete from sales where order_no='24'
写一个允许用户一次只删除一条记录的触发器。
/*
create trigger tr_emp
on employee for delete as
declare @row_cnt int
select @row_cnt=count(*)from deleted
if @row_cnt>1
begin
print'此删除操作可能回删除多条人事表数据!!!'
rollback transaction
end
*/
delete from employee
where sex='m'/*结果:所影响的行数为*/
3 创建AFTER-UPDA TE触发器,在product表上创建触发器updproduct_trg,当对表product 的记录进行修改时,触发器将给出修改时间信息。
USE company
GO
CREA TE TRIGGER updproduct_trg
ON product
FOR UPDA TE
AS /* 为触发器定义要执行的操作*/
PRINT '修改的时间为:'+CONVERT(char, getdate(),110) /* 显示修改的时间信息*/
GO
update product set prod_name='sql'where prod_id='20'
(二)Instead of类型触发器
1替代触发器能够使无法更新的视图支持更新功能。基于多表的视图必须使用Instead of 触发器来支持基表数据的增、删、改操作。
建立视图:
Create View View_prod_saleitem as
SELECT dbo.product.prod_id, dbo.product.prod_name, dbo.sale_item.order_no, dbo.sale_item.qty, dbo.sale_item.unit_price, dbo.sale_item.order_date
FROM dbo.product INNER JOIN
dbo.sale_item ON dbo.product.prod_id = dbo.sale_item.prod_id
USE company
GO
CREATE TRIGGER InsViewprod_saleitem_Trg
ON View_prod_saleitem
INSTEAD OF INSERT
AS
BEGIN /* 定义触发器的行为*/
DECLARE @prod_id char(5),@prod_name char(20) /* 定义局部变量*/ DECLARE @order_no int,@qty int,@unit_price numeric(7,2) ,@order_date datetime
/* 从逻辑表inserted中选择相应的数据存放到变量中*/
SELECT
@prod_id=prod_id,@prod_name=prod_name,@order_no=order_no,@qty=qty,@un it_price=unit_price,@order_date=order_date
FROM inserted
/* 将相应变量值插入到两个基表中*/
INSERT INTO product
(prod_id,prod_name)
VALUES(@prod_id,@prod_name)
INSERT INTO sale_item
(order_no,prod_id,qty,unit_price,order_date)
VALUES (@order_no, @prod_id, @qty,@unit_price,@order_date)
END;
GO
*/
insert into View_prod_saleitem values('26','javaee',50,100,23.5,'2012-12-25')
示例2
数据库说明:
这是一个大学入学注册管理系统,包含五张表
Registered_students学生选修
Rooms教室
Students学生
students表描述学生信息
id唯一标识学生,major是专业,current_credits是该学生已修的学分数
classes表描述课程信息
department是开课系,course是课程号,department和course唯一决定该课程
max_students是该课程能容纳的学生数,current_students是当前选修的学生数
num_credits是该课程的学分数,room_id是所在的教室位置(和rooms表相关联)rooms教室信息
room_id唯一标识教室,building是所在的教学楼,room_number是房间号
number_seats是教室的座位数
registered_students 学生课程的成绩
student_id是学生号(和students表关联),department和course描述具体课程
grade是该门课的成绩
1.查询特定学生所有课程的成绩(比如first_name是david,last_name是dinsmore)2.查询所有学生所有课程的成绩
3.查询特定专业的所有学生名字(比如history专业)
4.列出所有专业的学生名字
5.查询cs系开的课所在教室的位置信息
6.查询所有系开的课所在教室的位置信息
7.统计musi c专业的学生总数和学分数
8.统计所有专业的学生总数和学分数
9.在students表中新加一个学生
10.该学生选了一门新课(比如his系开的301课),请改变相应的表
11.该学生修完新课,成绩为B,请改变相应表
12 .一个学生毕业,请删除该学生所有相应信息
13找出所有姓中以S.开头的学生。
14找出每个专业的学生人数、已得最高学分、最低学分、平均学分、学分总数。
15找出所有教室的座位数,最大教室的座位数、最小座位数。
16找出各大楼的最大教室,最小教室,平均座位数、座位总数。
17找出各课程尚可选修的人数。
18找出开课最多的系。
19找出开课最少的系。
20找出选课最多的学生。
21找出选课最少的学生。
22找出不及格的学生。
23找出各课程平均分以下的学生。
24找出各系所占教室的座位数。
25分别创建一个学生、选修课程的历史表,要求按时间存储学生、选修课程信息。将当前学生、选修信息全部存储到该历史表。当前学生毕业,将当前学生删除。
26找出选修了HIS系开的所有课程的学生。
参考答案:
1查询特定学生所有课程的成绩(比如first_name是david,last_name是dinsmore)select first_name last_name Grade from Registered_students and Students
where first_name=david and last_name=dinsmore and students.ID=Regjested_students.Student_id.
2查询所有学生所有课程的成绩
select ID course Grade from Registered_students and Students where students.ID=Regjested_students.Student_id.
3查询特定专业的所有学生名字(比如history专业)
select Firstname Lastname from students where major=”history”
4列出所有专业的学生名字
select major Firstname lastname from students group by major (order by major asc?)
5查询cs系开的课所在教室的位置信息
select course roomid building roomnumber from classes and rooms
where classes.roomid =rooms.roomid and department=”cs”加引号
6查询所有系开的课所在教室的位置信息
select department course building roomnumber from classes and roomes
where classes.roomid=rooms.roomid group by department
7统计music专业的学生总数和学分数
select totalstudent tatalcredits from major_stats where major=”music”
8统计所有专业的学生总数和学分数
select* from major_stats group by major
9在students表中新加一个学生
insert into students (id, firstname, lastname, major, currentcredits ) values(“4445”,”m”,”ml”,”cs”,”133”)
10该学生选了一门新课(比如his系开的301课),请改变相应的表
insert into registered_students(studentid, department,course) values(“4445”,”his”,”301”)
update classes set currentstudents+=1 where department=”his” and course=”301”
11该学生修完新课,成绩为B,请改变相应表
Update registeredstudents set grade=”B” where studentid=”4445”
Update students set currentcredits+=2 where studentid=”4445”
update classes set current_students=current_students-1
where department="HIS" and course="301"
12一个学生毕业,请删除该学生所有相应信息
delete from students
where id=1205
delete from regidtered_students
where student_id=1205
update major_stats
set total_students=total_students-1,total_credits=total_credits-12
where major_stats.major="Computer Science"
13找出所有姓中以S.开头的学生。
Select *
From students
Where Last_name like “S%”
14找出每个专业的学生人数、已得最高学分、最低学分、平均学分、学分总数。
Select major,count(distinct id),max(current_credits),min(current_credits),avg(current_credits),sum(current_credits)
from students
group by major
15找出所有教室的座位数,最大教室的座位数、最小座位数。
Select (Number_seats_Seats,Max(Number_Seats),Min(Number_Seats)
From Rooms
16找出各大楼的最大教室,最小教室,平均座位数、座位总数。
找出各大楼的最大教室,
select building,room_number as biggest_room
from rooms as R
where number_seats>=all(select number_seats
from rooms as T
where R.building=T.building)
最小教室,
select building,room_number as biggest_room
from rooms as R
where number_seats<=all(select number_seats
from rooms as T
where R.building=T.building)
平均座位数、座位总数。
select avg(number_seats),sum(number_seats)
from rooms
group by building
17找出各课程尚可选修的人数。
select course,max_students-current_students as remain
from classes
18找出开课最多的系。
select department
from classes
group by department
having count(course)>=all(select count(course) from classes
group by department)
19找出开课最少的系。
select department
from classes
group by department
having count(course)<=all(select count(course) from classes
group by department)
20找出选课最多的学生。
select student_id,count(course)
from registered_students
group by student_id
having count(course)>=all(select count(course) from registered_students
group by student_id)
21找出选课最少的学生。
select student_id,count(course)
from registered_students
group by student_id
having count(course)<=all(select count(course) from registered_students
group by student_id)
22找出不及格的学生。
select distinct id,first_name,last_name
from registered_students,students
where id=student_id and grade="E"
23找出各课程平均分以下的学生。
select student_id,course,grade
from registered_students as R
where grade<=(select avg(grade)
from registered_students as G
where R.course=G.course)
24找出各系所占教室的座位数。
select department,sum(number_seats)
from classes,rooms
where classes.room_id=rooms.room_id
25分别创建一个学生、选修课程的历史表,要求按时间存储学生、选修课程信息。将当前学生、选修信息全部存储到该历史表。当前学生毕业,将当前学生删除。
creat table history_table
(student_id integer,
first_name char(20),
last_name char(20),
department char(3),
course integer,
register_time date,
primary key (student_id,course),
check (student_id in (select id from students)))
将当前学生、选修信息全部存储到该历史表。
select id,first_name,last_name,department,course,2002-5-1
from students,registered_students as R
where students.id=R.studnet_id and T.student_id=students.id and T.first_name=students.first_name and https://www.360docs.net/doc/e45734847.html,st_naem=https://www.360docs.net/doc/e45734847.html,st_name and T.department=R.department and T.course=R.course
当前学生毕业,将当前学生删除。
delete from history_table
where register_time=2002-5-1
26找出选修了HIS系开的所有课程的学生。
select id,first_name,last_name
from students as S
where not exists ((select course
from classes
where department="HIS")
except
(select R.course
from registered_students as R
where R.student_id=S.id))
或者
Select student_id
From registered_students
Where department=”HIS”
Group by student_id
Having count(student_id)=
(select count(distinct course)
from registered_students
where department=”HIS”
)
数据库实验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
福建工程学院《实验指导书(数据库系统原理及应用)》
数据库系统原理 实验指导书 (本科)
目录 实验一数据定义语言 (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四张表。每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。要作好备份以便后面的实验使用该数据库数据。 三、实验要求:
数据库实验题目和答案
按照如下方式重新定义四张表: 定义新的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.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个属性列:★施工单位、★年月、◆结算金额)保存各个施工单位每月的结算金额总和。 ⑵用子查询将各个施工单位每月的结算金额总和插入到所建立的数据表中。 ⑶用带子查询的修改语句将采油一矿油井作业项目的结算人改为“李兵”。 ⑷用带子查询的删除语句删除采油一矿油井作业项目。
数据库试验答案
计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 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.360docs.net/doc/e45734847.html,.zucc.booklib.control. PublisherManager类中添加按出版社名称精确查询方法public BeanPublisher loadPubByName(String name)throws BaseException 第二步:编写上述方法,要求当相应名字的出版社不存在时,返回null值;相关代码请参考提取所有出版社函数。 第三步:启动booklib主程序,在出版社管理中录入几个出版社 第四步:清空https://www.360docs.net/doc/e45734847.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 ,
数据库实验答案
实验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中建立四个表:
同济大学数据库实验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.360docs.net/doc/e45734847.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.360docs.net/doc/e45734847.html,um =https://www.360docs.net/doc/e45734847.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
数据库原理实验报告四(有答案)
南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:
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
数据库实验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')
数据库管理系统实验报告含答案
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 仓库表