第一篇:SQL实验报告
实验四触发器实验
(一)
after
触发器
(1 1)
在l l i neitem 表上定义一个 after 触发器, , 当修改列项目e e x tendedprice d i scount
x tax 时, , 要把 s orders 表得to o tal pri ce e 一起修改, , 以保证数据一致性
C RE ATE T RIGGER
trig _line ite m_ pr ice_ update on line it em fo r upda te
a as
begin i f(UPDATE(ex tend edprice)
o r UPDATE(tax)
or UPD AT E(di scou nt))begin
-— 声明游标变量指向 inserted 表
d eclare
cursor_inserted c urs or
rea d_only
o for select order key,linenu mber,exte nd edpr ice, dis coun t, tax
from
in ser ted
—-息信找查取获量变明声ﻩ 声明变量获取查找信息
de clare order key in t, @linenumb er
int,exte nd edprice
real,dis scount real,tax real
—-打开游标 epoﻩ en cursor_i ns ert ed
—-标游取读ﻩ 读取游标
fe tch
next
from cur sor _i ns erte d int o @o rderkey, @lin enumber,e ext ende dprice, @di scount,t ax
w whi le FETC H_S TATUS =0 nigebﻩ n
ﻩ —-声明一个变量保存重新计算得新价格 cedﻩﻩ ecl are @n ew_tota lpri ce
r eal
ﻩ select @n ew_t otal price= @ext en dedpr ice *(1 -@di scou nt)*(1 +@tax)
—-用新得总价格变量更新 orders 表得 t ot alprice puﻩﻩ update orde rs
se t tot alpri ce= new_totalprice where or derkey=orde rkey
en hctefﻩ ext f ro m cur sor_i nser ted int o @order ke y, @li nenum ber, @ex tende dp rice,discoun t, @tax
dneﻩllaedﻩ locate c ur sor_i nser te d e end end ﻩ(2)在 在 linei tem表上定义一个 aftr er 触发器, , 当增加一项订单明细时, ,自动修改 s orders 表得 total p rice, 以保证数据一致性
CREATE TR IGGER tri g_ lineit em_price_ in sert on l ine item f for inse rt
a s begin ——向指量变标游明声ﻩ 声明游标变量指向ins erted 表
de clare
c ursor_inse rted
cursor
read_ onl y
ﻩ for s ele ct orderkey,linenumbe r,ex te ndedp ric e,di scou nt,t ax
from ins serte d
--声明变量获取查找信息 edﻩ eclare @orde rk ey
int, @lin enumber int,e xten dedp rice
real, @discount
real, @ta x real -—ﻩ - 打开游标
open cursor_i ns erte d --ﻩ - 读取游标
fe tc h
nex t
f rom
cu rsor_ins erted
into
@o rd erkey,li nen umbe er r, ex ten ded pric e,dis count,tax ihwﻩ ile @@FE TCH_ STATU S=0 ebﻩ egin
-—格价新得算计新重存保量变个一明声ﻩﻩ 声明一个变量保存重新计算得新价格
cedﻩ clare @n ew_tot alprice real
celesﻩ ct new _to ta lprice= @extend edp rice *(1-d is count)*(1+tax)—-新更量变格价总得新用ﻩﻩ 用新得总价格变量更新orders 表得totalpri ce
ﻩ u pda te
or ders s et
t ota lpric e=total pric e+ @new_ tota lpr ice w wh he re o rderke y=orderkey
tefﻩ etch next from cursor_ ins erte d into o rder key, @l inen umber,e xtended dp ric e, @disc ou nt, @t ax
e end aedﻩ deall oca te cu rsor_in serted en d
(3)
在l in e ite m表上定义一个a ft er触发器, , 当删除一项订单明细记录时, ,自动修改 orders 表得 tot a lprice, 以保证数据一致性
CREATE TRI GG ER trig _line item_price_de let e
on line item fo r de let e
A AS begin
--声明游标变量指向delet ed 表
de clar e curso r_d eleted cursor
re ad _on ly
es
rofﻩﻩ ele ct ord erk ey,line numbe r,extende dp rice,discoun t, tax
from
del eted -ﻩ -- 声明变量获取查找信息
declare ord erkey int,linenum be r
int,extendedp ri ce r eal,discou nt real,ta x real -—ﻩ -
打开游标 epoﻩ en c urso r_ deleted
——标游取读ﻩ 读取游标 efﻩ etch next fr om cur sor_delete d in to
order ke y,l inenumb er,ext end dedprice, @di scoun t,tax
wh ile @FETCH_STATUS=0
begi n
-— 声明一个变量保存重新计算得新价格
ﻩ declare @ne w_ to talpric e real
ﻩ s selec t @new_t otalpr ice= @exte nde dpri ce*(1-@disco unt)*(1+ tax)
-ﻩ -— 用新得总价格变量更新orders 表得tot alp rice uﻩﻩ upd ate
orders set t otalpri ce=to talpr ice-@new _totalp rice wh er e order key= @ord erkey
fetch
n ext f rom cursor_inse rt ed in to orderkey, @line numbe r,extende ed dprice, @d iscou nt,t ax dneﻩ nd
d deal lo cat e cur sor_inse rted e end((4 4))验证 up d at e触发器
— -查瞧 号订单得 to ta a l pr i ce
selec t
*
fro o m
o o r ders where
orde r key=1 8 30;
— -查瞧明细表得相关信息
se l ect *
f ro m
lin ei i te e m
w here or de e r key=183 0
and l ine num m be e r =1;
—— 验证 e update 触发器
updat e
lineitem set t ax=tax+0、05
whe re orderkey=1830;
(二)
i i n stead
of
触发器
((1))
在 在 lineit em 表上定义一个ins tead o f upda te触 发器, 当修改明细表中得数量 量quan ti ty 时, 应先检查供应表par tsupp 得av ai lqty 就是否足够, 不足够则拒绝执行, 否则执行并修改相应数值以保证数据一致性 于 由于 in stead
of 触发器更新某个表会使得该表上其她不满足更新列不能更新,因 因用 此逆向思维使用 a fter 触发器实现相同效果 即先更新 qu antity, 再比较av ailq qt ty, 如果满足更新数量, 就修改partsupp 得 表得 a vailqty, 如果不满足, 则把lineitem得quantity 更新之后得数据重新修改回来 c create trigge r trig_lin eit em_quanti ty_ upda te
on
li neit em f or upda te
as begin if UPDATE(qu ant ity)b begin ——向指别分量变标游明声ﻩ 声明游标变量分别指向 i nserted 表与 d el eted 表 edﻩ declare c urso r_inser ted
cur sor
r ead_on ly
for
tcelesﻩﻩ t
orde rkey, partk ey,s uppkey,lin enum ber, quantit y fr om i nserted
decl are
cursor_de leted c urs or
rea d_ onl y
f or select quantity
fr om deleted
-—息信找查取获量变明声ﻩ 声明变量获取查找信息
decl are
@qu an tity _dif f_lineitem i nt,q uanti ty_pa rtsup p i nt cedﻩ clare suppkey int, @par tke y in t,o rd erkey i nt,unenilﻩﻩ um ber int ,qty _inserted in t , @qty_delete d int
-- 打开游标 ruc nepoﻩ rsor_in sert ed poﻩ open cur sor_d eleted
-—量变给赋值数标游取读ﻩ 读取游标数值赋给变量 fﻩ fet ch next from
cu rsor_ insert ed
ﻩ i into or de rk ey,pa rtkey, @suppk ey, @line nu mber, @qty _ins erte d
f et ch
next from
cursor _d eleted
int o q ty _de lete d
whi le fe tch_st atus=0 gebﻩ egin
--计算订单明细修改时, 订购数量得变化值 inserte d表项-d elet ed表项
s sel ect quantity_d if f_ li neit em= @q ty _in se rte d—@ @q ty_delete ed
ﻩ --从parts upp 表获取ava ilq ty值, 注意partsupp 表得主键为(partk ey,suppke ey)tcelesﻩﻩ t @quanti ty_p ar tsupp =av ailq ty fro m pa rtsu pp
wﻩﻩ wh er e suppkey= suppke y
and part key= @par tk ey
-—断判始开ﻩﻩ 开始判断
gebﻩ begi n
fiﻩ f quant ity _d iff_ lin eite m=0
ﻩ
ﻩ p rin t “ 更新得数量与原表中得值相同, 不需要更新”
e ls e if @quantit y_d iff_lin eitem 〈=q uantity_partsupp
ﻩ
be gin
ﻩ puﻩﻩ pd ate partsupp
s et avail qty= availqty-@qua ntit y_d iff_li ne item
ﻩ pus erehwﻩ ppkey=suppkey
and
p artkey= @par tke y
ﻩ
ﻩ p rint “ 两个表都更新成功’ ﻩ
ﻩﻩneﻩ nd
els e
igebﻩﻩ in
ﻩ uﻩﻩ update li nei tem
set
quantit y=quantity+ @quanti ty_diff_linei tem
whe re o rd erke y=@orde rke y and li nenu mber= @li ine number
ﻩ
p ri nt '更新失败”
ﻩﻩ end
ﻩ e nd efﻩﻩ etch ne xt
fr om c urso r_i nserted
i nto @ord erke y, @partkey,s upp key, @linenumb er, @qt y_ ins ert ed
f etch ne xt from curso r_de leted into @qt y_d elet ed dneﻩ nd
d eallocat e cur sor _i nserte d
dealloc at e cursor_de le ted e end e end(2)在 在 l ineite m表上定义一个 instea d of in sert 触发器, 当插入明细表中一条记录 时 时, 应先检查供应表par tsupp 得 得 ava il qt y就是否足够 qu anti ty 得数量 c rea te t rig ger tri g_lineitem_q ua nti ty_ insert
on
line item i instead of inser t as b begin
-— 声明游标变量指向 inserte d表
d eclar e cur sor_inserte d cur sor
rea d_ only f or
sﻩﻩ select or derk ey,pa rtkey,sup pk ey, lin en umber,q uantity
f rom ins er ted
-—
声明变量获取查找信息
dec lare quantity int, @av ailq ty i nt, @suppkey
in t, @partkey
in nt t, @o rderkey int, @linenu mber int
-—标游开打ﻩ 打开游标 c nepoﻩ curs or_ins erted -ﻩ -— 读取游标
f etc h next fro m cursor_insert ed int o @orde rkey,partkey,@ @s suppkey, @linenumber,qu antity
wh ile @@FETCH_S TATUS= 0 igebﻩ in
--为变量赋值
a tcelesﻩ availqty y
= =av ai lqt y fr om
partsupp
wﻩ whe re suppkey =@su ppk ey and part ke y= partke y
ﻩ if @quant ity 〈= @avail qt y
-— 如果可以更新
bﻩ begin /ﻩﻩﻩ /*将 将 insert ed 表中得记录插入到明细表*/
ﻩ sniﻩ sert
i nto l ineite m select *
from i nserted
ro=yekredro
erehwﻩﻩ rderk ey and
linenumb er = @linenumber */ﻩﻩ新更时同ﻩ *同时更新 part supp 表得数量*/
ﻩﻩ u upd ate pa rtsup p set a vailqty=availqty-@quanti ty
ﻩ
erehwﻩ e sup pke y= @sup pkey and partkey=part key
p pr int ’pa arts upp 表有足够得货物可以满足 lin eitem 得quan tity y, 插入成功’
end
else
begin
ﻩﻩ p rint t
' 'pa rt sup p表没有足够得货物可以满足 l ineitem 得 得 q uantity,插入失败’
dneﻩfﻩﻩ fetc h next from curso r_ins ert ed in to @ord erkey, partkey, suppkey, @li inenumbe r, qu antity eﻩ en d
deall ocat e cursor_ inserted end(3)在 在 line ite m表上定义一个 inste ad of del ete 触发器,当 当 删除 明细表中记录 时 时, 同时改变表 供应表 partsupp 得ava il qty y 数值 c re ate trigge r tri g_ lin eit em_quanti ty_ del ete o n line item inste ad of del ete as be gin
—-声明游标变量指向deleted 表
de cla re curs or_ del eted c ursor
read _only for
lesﻩﻩ elect or derke y, par tkey,sup pkey, linenumbe r,quan tity fr om deleted -ﻩ --声明变量
decl are s upp key i nt, par tke y
int, @orde rkey int,linen umb er
int, @qua ant it y int
—-标游开打ﻩ 打开游标
open
cursor_deleted
-—标游取读ﻩ 读取游标
f fetch next fr om
curs or _del et ed
in to @ord erkey , @partkey,s uppke ey, @lin en umber,q ua ntity
whi le
F FET CH_ STATUS=0 igebﻩ in
*/*除删ﻩ *删除*/
ﻩ de let e from
lineite m where linenu mber= line number and o rde rkey =ord der key
*/新更时同ﻩ 同时更新 pa rt supp 表得数量*/
u pdate
parts upp se t
availqt y=a vai lq ty+quant ity
ﻩ where s uppke y= @s uppkey a nd par tk ey= @p ar tkey
ﻩ p rin t
’ 删除成功, 并且已经把货物数量归还到 p ar tsup p里“ fﻩﻩ fetc h ne xt fr om
curso r_del eted
into @ord er ke y,p ar tkey,@ @suppkey, @lin enu mber,quanti ty neﻩ nd edﻩ ea lloc ate cursor_ delete d end(4)验证 update 触发器--查瞧li neit em 得quan tit y select *
fr om
lin eit em whe re or derk ey =1830
and li nenum ber=1;
—— 查询partsupp 表得ava ilqt y se lect * from part supp w here suppk ey =(select
supp key fr om
lin e
item w here ord erkey=18 30)
and partk ey
=(s elec t part key from lin eite m wh er e
order key =18 30 a nd linenu mber=1)
---更新数量过大
—— 更新得值与原值相同
---更新到+ + 2 00 数量, , 成功
update
li neitem set
quant ity
=q uanti ty+ 200
where order key=1830
and lin en umber = 1;
--更新 +2 00 成功后l ineite m得 quanti ty y 变化
—— 更新+200 成功后par ts upp 表得a va ilqty 变化
实验到此。所有创建得触发器结果
删除触发器
dr op trigger tri g_li nei tem_de lete;实验六存储过程实验
(1 1)
定义无参数 得存储过程并执行
更新所有订单总价
goﻩ
CREATE
PROCED URE Pro c_Ca lTotalP ri ce
AS BEGIN
up date
o rders set to talprice =
(sele ct sum(exte ndedprice*(1-discount)*(1+ tax))
ﻩ fr om li nei tem
o
erehwﻩ orders、orderkey= li neite m。o rderke y)END
go 执行此存储过程
exec P ro c_CalTotal Pric c e;;
(2 2)
定义有参数得存储 过程并执行
更新给定订单号得总价
g go create pro cedu re P ro_Cal TotalP rice 4Ord er @id_ order
intege r a as be gin
u up date e
o orders set total price=(lesﻩ lect SU M(ext en ded price*(1 -di sc ount)*(1 +tax))
ﻩ fr om li neit em
ﻩ whe re
orde rs。or derke y=lin eite m。orderkey)end g o 执行此存储过程 exe c P ro_ CalTota lPr ice 4Order @id_ order=2;((3))
定义有局部变量得存储过程 更新某一个顾客所有订单得总价 g o cr eate
procedure Proc_Ca lTot alPr ice4Custo me r n ame _cus to mer varc har(50)as
dec lare cus tk ey _c usto mer i nt b egin tcelesﻩ t
cus tke y_cu stomer=cu st key
from
cu sto mer
where name _customer =RTRI M(n ame)
u pdate order s set to talp ri ce=(tcelesﻩﻩ t S UM(exte nde dp rice *(1 -dis count)*(1+tax))rfﻩﻩ rom li neite m
wﻩ wher e orders、order key=lineitem。or derke y
ﻩ and
o rde rs、cust key= @c ustkey _cust omer)ﻩe nd go 执行此存储过程
e xec Pro c_CalT ot alPr ic e4C ustome r name_custom er=” 艾锦亮’;查瞧结果 u pdate
linei te m set
ex tende dpric e=1 00 , ta x=0.25 where orderkey=“1 830’;s elect * from
l ineite m
w here order key ='183 0’;
s elect * fr om or ders wh ere custke y=(sele ct cus tk ey from custo mer whe re name=’ 艾锦亮’);
(4)
定义一个带输出参数得存储过程 更新某个顾客得所有得订单总价, 并输出总价 go crea te proc edure Proc_C alT otalP ri ce4Custo me r2
na me_ cu st ome r va rch ar(50), totalpr ice_ord er real out put
as —— 声明一个变量存储 name 对应得顾客编号 d eclar e @c us tkey _cus tomer integer
—— 为该变量赋值
se lec t c ustke y_cu sto mer =cu stkey
from cus tome r w here n ame_ customer=R TRIM(n ame)begi n -ﻩ -- 更改订单总价
up date
o rd ers
set t otalp rice=(se lec t SUM(ext endedprice*(1-dis count)*(1+tax))
fﻩ fr om l in eitem rehwﻩﻩ ere
orders。o rderk ey=li neit em.ord erk ey、sredro dnaﻩ、c ustkey =@custkey_ custome r)
-— 为返回变量赋值
select
totalprice_order=total pri ce fro m orders
ﻩ w here custk ey= @c ustkey_c ustom er
ﻩ
e nd go —-执行带有输出参数得存储过程要声明输出参数变量 declare t otalp rice re al;exe c Proc_ Cal Tota lPrice4C ustomer2
” 艾锦亮 ', @to talpri ce
output;--在屏幕上输出返回值结果
selec t t otalpri ce;
实验到此, , 所有结果显示
(5 5)
修改存储过程名
exec sp_renam e ’Pr o_Cal TotalPrice4Ord er",’C alTotalPr ice4 Or der';
(6)编译存储过程
exe c sp_ re compile ’CalTotalPric ce 4Order’;
(7)删除存储过程
d drop
proc edure CalT otalPric e4Orde r;e exe c sp_h elptext CalT ot alPrice4 Order;
第二篇:sql上机实验报告
实验一(2.20)
实验内容:熟悉sql server 2005
实验目的:掌握sql服务器的启动和停止方法、熟悉management studio 的操作界面和新建查询。
重点:使用数据库引擎启动数据库服务器、停止数据库服务;服务器的认识以及如何启动查询分析器
难点:无
实验操作:
1.使用数据库引擎启动数据库服务器:
开始->程序->microsoft sql server 2005->
sql server management studio->数据库引擎->服务器名称(选择)->连接。
2.分别打开数据库,安全性和管理文件夹查看文件内容。
3.点击新建查询建立一个查询窗口。
4.打开model数据库,查看其中的文件。
实验二(2.27)
实验内容:使用manegement studio和查询分析器创建数据表
实验目的:掌握创建数据表的方法
重点:学会使用查询分析器创建数据表
难点:字段数据类型的选择以及数据长度的定义
实验操作:
在basetest数据库中创建学生表,学生(sno,sname,ssex,sage,sdept)。其中sno,sname,ssex,sdept字
段数据类型设为char,长度为10;sage字段数据类型设为int!create table 学生
实验三(3.5)
实验内容:添加表的约束
实验目的:掌握使用alter table 语句修改表的时候添加表的约束
重点:为表添加主键外键约束
难点:为列设置列级完整性约束;使用sql语句为表设置外键。
实验操作:
1:为学生表添加主键约束pk约束,设置sno为主键
alter table 学生
add constraint pk约束
primary key(sno)
实验四(3.12)
查询
(一)实验目的:掌握Select语句的使用方法
实验重点:Select语句的语法结构
实验难点:连接查询
实验步骤:1.练习查找指定列的查询
2.练习查找经过计算的列
3.练习为查找字段设置字段别名
4.Where子句的使用
5.多表连接查询
实验五(3.19)
查询
(二)实验目的:掌握SQL语句的使用方法
实验重点:统计查询和嵌套查询和联合查询
实验难点:子查询的方法
实验步骤:1.1.Compute与Compute By的区别
2.子查询 In与Exsits的区别
3.比较运算的子查询
4.联合查询
5.OrderBy子句的使用
6.统计函数的使用
7.Group By 与Having的使用
实验六(3.36)
查询
(三)实验目的:掌握SQL语句的使用方法
实验重点:简单查询和统计查询和嵌套查询
实验难点:嵌套查询的方法
实验步骤:1.在student表中查询CS系学生信息,并产生一个总人数行
2.查询学生信息,统计总人数并对每个系产生一个学生总人数行
3.按系分组,并在每组下显示本系中年龄最大学生年龄
4.按系和性别分组并统计最大年龄和最小年龄
实验七(4.2)
实验内容:创建索引
实验目的:掌握创建索引的方法
重点:掌握索引的基本功能
难点:使用sql语句创建索引
实验操作:
1:使用manegement studio 创建索引
2:创建一表myfriend,所包含的属性列为(名字char(10),性别(10),地址(100)),并在该表上基于名字创建一个唯一聚集索引wj索引,索引的填充为100。
实验八(4.9)
实验内容:创建视图
实验目的:掌握创建视图的方法
重点:掌握视图的基本功能
难点:使用sql语句创建视图
1、在basetest数据库中创建一个MA系的学生信息视图
2、创建IS系女生选课信息,指定字段中文名
3、使用WITH CHECK OPTION子句创建男生信息视图
4、在CS系学生信息视图中查询女生的信息
5、修改cs系学生05008的年龄为21岁
实验九(4.16)
实验内容:流程控制语句与用户自定义函数的使用
实验目的:掌握流程控制语句与用户自定义函数的使用
重点:掌握自定义函数的创建
难点:表值用户自定义函数的创建
实验操作:
1:计算1+2+3+...+100的和
2:计算n!(n=10)
3: 查询是否有选修成绩高于90分的学生,有则输出该生信息,没有就输出“不存在选修成绩高于90分的学生。”
实验十(4.23)
实验内容:存储过程、事务及游标
实验目的:掌握存储过程、事务及游标的使用
重点:掌握存储过程的创建、事务创建及游标的使用方法
难点:带参数的存储过程的创建、游标的使用
实验操作:
1:创建存储过程ppa,能根据给定的‘系别’返回该系对应的学生的sno,sname,ssex 2:创建存储过程ppb,能根据给定的‘系别’统计该系的人数,并将人数输出显示!
第三篇:SQL实验报告总结
《数据库系统概论(第四版)》
体
会
学号: 姓名: 班级: 教师:
学
期实 验 总 结 与 心 得
【实验名称】 数据库的创建 【实验内容】
1、新建sql注册表。
2、新建数据库。主数据文件:逻辑文件名为student_data,物理文件名为student.mdf,初始大小为10mb,最大尺寸为无限大,增长速度为10%;
数据库的日志文件:逻辑名称为student_log,物理文件名为student.ldf,初始大小为1mb,最大尺寸为5mb,增长速度为 1mb
3、修改已注册的sql server属性为使用sql server身份验证。
【实验名称】 数据库的附加、分离、导入导出及分离 【实验内容】 1.数据库文件的附加与分离(转载于:sql实验报告总结)2.数据库文件的导入和导出 3..数据库的删除 4.修改数据库
【实验名称】 数据库的创建(书中作业)【实验内容】 1.在数据库student中创建一个学生基本信息表 1.用企业管理其创建表 2.用查询分析器创建表 2.sql server 2005的系统数据类型分为哪几类?常用的数据类型有哪些?
答:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间。常用的数据类型有:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间
3.在数据库student中创建一个名为t_couse(课程信息表)1.用企业管理其创建t_course表 2.用查询分析器创建t_course 4.在数据库student中创建一个名为t_score(学生成绩)的表 5.sql server 2005 中有多少种约束?其作用分别是什么
答:非空约束,作用指定某一列不允许空值有助于维护数据的完整性,因为这样可以确保行中的列永远保护数据。
主键约束,作用可以保证实体的完整性,是最重要的一种约束。唯一约束,作用指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。
检查约束,作用对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
默认约束,作用指定在插入操作中如果没有提供输入值。怎系统自动指定值。外键约束,作用主要用来维护两个表之间数据的一致性。6.分别为t_course表和t_score表创建唯一性约束、检查约束、默认约束。篇二:sql server综合实验报告
华北科技学院计算机系综合性实验
实 验 报 告 课程名称 数据库系统 实验学期 2010 至 2011 学年 第 二 学期
学生所在系部 计算机系 年级 二年级 专业班级
网络工程b093班
学生姓名
沈亚强
学号
200907024313
任课教师
郭红 实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(a4纸)。页面空间不够,可以顺延。
2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验
中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一
刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。《
数据库系统
》课程综合性实验报告 篇三:数据库上机实验报告+总结
数据库集中上机报告
学 生: 马志鹏 学 号: 0221090118 班 级: 02210901 专
业:计算机应用技术 重庆邮电大学移通学院 2011年6月
第一天:access数据库基本操作 1 实验目的
1、熟悉的掌握access数据库结构与创建
2、了解创建、修改、删除、查询、保存等操作
3、输入数据创建、设计器创建、向导创建。2 实验内容 3 实验结果
1.2.2 2 access数据表的编辑
第二天 数据表基本操作 1 表关系与编辑数据 1 实验目的:
1、实现一对一,一对多,多对多的实体关系
2、对“学生基本信息”表中的记录进行排序,按出生日期降序排列
3、从“学生基本信息”表中筛选出所有计算机系男生的记录
4、从“学生基本信息”表中筛选出回族和蒙古族的所有学生记录 3 2 实验内容
1.select 学生基本信息表.学生姓名, 成绩档案表.* from 成绩档案表 inner join 学生基本信息表 on 成绩档案表.学生学号 = 学生基本信息表.学生学号
where(((学生基本信息表.学生姓名)=张冰冰));2 select 学生基本信息表.* from 学生基本信息表 where(((学生基本信息表.性别)=男)and((学生基本信息表.班级名称)=计算机系));3 select 成绩档案表.c语言, 课程表.* from 成绩档案表, 课程表;4 select 学生基本信息表.*, 学生基本信息表.性别, 学生基本信息表.班级名称 from 学生基本信息表 where(((学生基本信息表.性别)<>男)and((学生基本信息表.班级名称)<>计算机系));5 select 学生基本信息表.*, 学生基本信息表.出生日期 from 学生基本信息表 where(((month([出生日期]))=9)and((day([出生日
期]))=1));6 select 学生基本信息表.* from 学生基本信息表 where(((学生基本信息表.学生姓名)like 李*));3 实验结果 4 第3天 sql查询设计 1 sql语言查询 1 实验目的:
熟悉了解sql语句 5 篇四:sqlserver实验报告—数据库和表的创建
数据库实验报告
课程名称信息系统数据库技术 实验名称 数据表的管理 专业班级
姓 名
学 号 实验日期
实验地点 2012—2013学 第 一 学期 篇五:数据库上机实验报告sql server 2000 课程代码:1010000450 数据库 database 学分:3 总学时:48 实验学时:16 面向专业:信息与计算科学,数学与应用数学
一、实验教学目标
数据库是计算机科学与技术专业的专业必修课程。课程内容主要包括:数据模型、关系代数、关系数据库标准语言sql、关系系统、关系数据理论、数据库设计方法。学习本课程的过程中,只有通过上机实验,才能使学生真正深层次了解数据库系统的体系结构,掌握数据库系统的基础理论、技术和方法,掌握主流数据库管理系统sql server 2000的应用技术及数据库应用系统的设计、开发能力。
二、实验教学基本要求
认真阅读教材中与实验相关的章节内容,提前做好实验准备,做到在每个实验前明确实验目的、掌握实验的基本内容及操作方法;在实验中正确使用实验设备,认真观察、分析实验结果;实验后要根据要求做好总结,写出实验报告。
三、实验教材或实验指导书
《数据库系统概论》,萨师煊 王珊主编,高等教育出版社
四、考核方式与评分办法 实验成绩评定分两部分:上机实验操作占50%,实验报告占50%。
五、实验项目设置
六、实验内容与实验方式
实验一
安装sql server 2000
(一)实验内容 1.安装microsoft的数据库服务软件sql server 2000。以sql server2000企业版为例安装教程
第一步:打开安装文件中的“autorun”文件,安装程序会自动运行出现版本选择界面,我们以选择企业版为例。
第二步:在接下来的界面中选择“安装数据库服务器”选项。
第三步:这时出现安装向导,出现“计算机名”窗口。“本地计算机”是默认选项,其名称就显示在上面,我们按其默认点“下一步”。
第四步:接下来,在“安装选择”对话窗口中,同样按其默认项“创建新的sql server实例,或安装客户端工具”点下一步。
第五步:在 用户信息 窗口,输入用户信息,并接受软件许可证协议。
第六步:在 安装定义窗口,选择 服务器和客户端工具 选项进行安装。我们需要将服务器和客户端同时安装,这样在同一台机器上,我们可以完成相关的所有操作,对于我们学习sql server很有用处。如果你已经在其它机器上安装了sql server,则可以只安装客户端工具,用于对其它机器上sql server的存取。
第七步:在 实例名 窗口,选择 默认 的实例名称。这时本sql server的名称将和windows 2000服务器的名称相同。第八步:在 安装类型 窗口,选择 典型 安装选项,并指定 目的文件夹。
第九步:在 服务账号 窗口,请选择 对每个服务使用统一账户...的选项。在 服务设置 处,选择 使用本地系统账户。如果需要 使用域用户账户 的话,请将该用户添加至windows server的本机管理员组中。
第十步:在 身份验证模式 窗口,请选择 混合模式...选项,并设置管理员sa账号的密码。如果需要更高的安全性,则可以选择 windows身份验证模式,这时就只有windows server的本地用户和域用户才能使用sql server了。
第十一步:在 选择许可模式 窗口,根据您购买的类型和数量输入(0表示没有数量限制)。每客户表示同一时间最多允许的连接数,处理器许可证表示该服务器最多能安装多少个cpu。笔者这里选择了 每客户 并输入了100作为示例。
第十二步:约10多分钟的安装时间,然后打开开始菜单下的sql子目录下的企业管理器。2.熟悉软件的使用以及各个组成部分。
第一:打开企业管理器,可以对本地的数据进行管理,也可以登录服务器端,即可以远程操作自己的数据库 ;
第二:登录查询分析器,可以通过sql管理语句,对数据库进行管理。
(二)实验方式与分组要求
老师先讲解十分钟,学生上机操作数据库sql server2000,最后老师检查操作结果。每次86组,每组1人。
实验二
启动sql server2000和建库、表
(一)实验内容 1.启动数据库服务软件sql server 2000。第一步:打开企业管理器,可以登录服务器端,即可以远程操作自己的数据库,登录步骤如下; 第二步:左侧方框中控制台根目录的子目录的sql server组上,右击,并新建sql server注册„; 第三步:在“服务器”一栏里输入想要登录的服务器ip地址,选择使用sql server身份验证,写入登录名和密码,就可以登录了。
第四步:登录查询分析器,可以通过sql管理语句,对数据库进行管理。2.在sql server 2000中建立数据库。
第一步:通过企业管理器进入服务器端以后,可以在数据库文件里“新建数据库”。第二步:输入数据库名称。
第三步:通过相关需求对数据库的相关属性进行设置,然后完成。3.在数据库上建立表。第一步:登录企业管理器
第二步:进入自己的database,并打开“表”选项;
第三步:在表选项右侧空白处,点击右键,选择“新建表„”;
第四步:在弹出的窗口中,分别填写列名,数据类型,长度和是否允许空值,然后关闭窗口。第五步:关闭窗口会弹出是否保存表,选择是,接下来弹出的窗口中填写表名即可。
(二)实验方式与分组要求
老师先讲解十分钟,学生上机操作数据库sql server2000,最后老师检查操作结果。每次86组,每组1人。
实验三
sql server2000查询分析器
(一)实验内容 1.启动数据库服务软件sql server 2000的查询分析器。第一步:在登录企业管理器的前提下,登录查询分析器。
第二步:登录查询分析器与登录企业管理器类似,需要输入ip地址或者如果是本地数据库,直接用windows身份验证即可。2.在查询分析器中建立表。
第一步:在查询分析器命令栏里输入以下语句: 定义一个学生-课程模式s-t create schema “s-t” authorization wang /*为用户wang定义了一个模式s-t*/ 然后点击“分析查询”和“执行查询”。第二步:在查询分析器命令栏里输入以下语句:
建立“学生”表student,学号是主码,姓名取值唯一 create table student(sno
char(9)primary key, /* 列级完整性约束条件*/ sname char(20)unique, /* sname取唯一值*/ ssex char(2), sage smallint, sdept char(20));然后点击“分析查询”和“执行查询”。
(二)实验方式与分组要求
老师先讲解十分钟,学生上机操作数据库sql server2000,最后老师检查操作结果。每次86组,每组1人。
实验四
sql语言的ddl
(一)实验内容 1.用如下语句对表进行操作:create table 建表;drop table 删除表;alter table 更改表。
create table student(sno char(4)primary key)drop table student /*当student表与其他数据有级联关系或者其他关系时,不能删除。*/ alter table student add s_entrance date null/*向student表增加“入学时间”列,其数据类型为日期型*/ alter table student drop column sno /*删除student表中的sno这一列,含有以下关系的列不能被删除: ? 被复制列。
? 用在索引中的列。
? 用在 check、foreign key、unique 或 primary key 约束中的列。? 有相关联的默认值(由 default 关键字定义)的列,或绑定到默认对象的列。? 绑定到规则的列。*/ 2.用如下语句对视图进行操作:create view 建视图;drop view 删除视图。/*创建一个is_student视图,视图中返回来自于表student中sdept=’is’的所有学生的sno,sname,sage列*/ create view is_student
as
select sno,sname,sage
from student where sdept=is /*删除is_student视图*/ drop view is_student 3.如下语句对索引进行操作:create index 建立索引;drop index 删除索引。/*创建一个stusname索引,在student 表中以sname列升序排列*/ create clustered index stusname on student(sname)/*删除student表中的stusname索引*/ drop index student.stusname
(二)实验方式与分组要求
老师先讲解十分钟,学生上机操作数据库sql server2000,最后老师检查操作结果。每次86组,每组1人。
实验五 sql语言的dml
(一)实验内容 1.启动数据库服务软件sql server 2000的查询分析器,用insert语句对表进行插入操作。/*将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:is;年龄:18岁)插入到student表中*/ insert into student(sno,sname,ssex,sdept,sage)values(200215128,陈冬,男,is,18)/*学生张成民的信息插入到student表中*/ insert into student values(200215126,张成民,18,cs,男)/*对表student中每一个系,求学生的平均年龄,并把结果存入表dept_age表中。*/ 第一步:create table dept_age(sdept char(15), /* 系名*/ avg_age smallint)/*学生平均年龄*/ 第二步:insert into dept_age(sdept,avg_age)
select sdept,avg(sage)from student group by sdept 2.用update语句对表中已有的记录进行修改。/*将学生200215121的年龄改为22岁*/ update student set sage=22 where sno=200215121 /*将所有学生的年龄增加1岁*/ update student set sage= sage+1 /*将cs系全体学生的成绩置零*/ update sc set grade=0 where cs=(select sdept from student where student.sno = sc.sno)3.用delete语句对表中已有的记录进行删除。
第四篇:SQL数据库系统_实验报告4
实验四
实验时间:2014年4月29日
实验名称:T-SQL、存储过程、触发器
实验目的:
1、掌握T-SQL常量、变量、运算符、表达式、函数的使用方法
2、掌握T-SQL流程控制语句使用方法
3、掌握存储过程创建及使用方法
4、理解触发器的创建及使用方法
实验原理:
T-SQL,即Transact SQL,是微软对SQL标准的一种实现。存储过程可以预编译T-SQL并保存在数据库系统中,与直接发送SQL相比,加快了数据处理速度。触发器可以在数据修改时自动运行,保证更有效地实施数据完整性。
仪器与材料:
装有Windows操作系统、SQL Server数据库系统的PC机一台
实验步骤:
1、加载示例数据库
2、定义一个字符串变量和一个整型变量,赋值后再输出查看运行结果
3、使用全局变量查看SQL Server版本信息
4、定义字符串变量保存身份证号,使用函数取出其表示的年月日信息并逐个输出
5、创建函数计算全体学生某门课程平均成绩
6、求1+2+„„+100的和
7、创建存储过程使用“学生基本信息表”查询学生数量
8、创建触发器,实现功能:当“学生基本信息表”中数据被删除时提示“不允许修改学生基本信息”
实验记录:
„„
讨论及问题回答:
查找资料,讨论索引优缺点。
第五篇:SQL数据库系统_实验报告2
实验时间:2014年4月1日
实验名称:数据库表的管理与查询语句
实验目的:
1、熟练掌握数据表的创建、修改和删除方法
2、熟练掌握表中数据的插入、修改、删除和查询方法
3、熟练掌握SQL语句的使用方法
4、理解数据表的约束及其使用
实验原理:
数据库是保存数据的集合。表是数据的集合,由行列构成,行又被称为记录,列被称为字段。SQL全称是Structured Query Language,其主要有功能有:创建数据库并定义表的结构、查询需要的数据、更新或者删除指定的数据、管理数据库。
仪器与材料:
装有Windows操作系统的PC机一台,SQL Server安装包ISO镜像
实验步骤:
1、加载示例数据库,查看示例数据库及内部的数据库表结构
2、向“学生基本信息表”中添加“出生日期”字段
3、删除“学生基本信息表”中“年龄”字段
4、删除表“教师基本信息表”
5、向“学生基本信息表”中添加5条记录
6、修改“学生基本信息表”中学号为3的学生的姓名为“张三”
7、删除“学生基本信息表”中姓名为“李四”的学生信息
8、查询“学生基本信息表”中所有学生的所有信息
9、查询“学生基本信息表”中所有男生信息
10、查询“学生基本信息表”中所有19岁以上学生信息
11、查询“学生基本信息表”中所有姓“张”的学生信息
12、查询“学生基本信息表”中所有选修103号课程的学生信息
实验记录:
1、加载示例数据库,查看示例数据库及内部的数据库表结构
2、向“学生基本信息表”中添加“出生日期”字段
„„
3、删除“学生基本信息表”中“年龄”字段
„„
4、删除表“教师基本信息表”
„„
(以下略)
讨论及问题回答:
尝试查询所有选修了“SQL数据库系统”并且成绩优秀的学生信息。