SQL-Server数据库上机实验报告.docx

上传人:scccc 文档编号:12393710 上传时间:2021-12-03 格式:DOCX 页数:24 大小:207.21KB
返回 下载 相关 举报
SQL-Server数据库上机实验报告.docx_第1页
第1页 / 共24页
SQL-Server数据库上机实验报告.docx_第2页
第2页 / 共24页
SQL-Server数据库上机实验报告.docx_第3页
第3页 / 共24页
SQL-Server数据库上机实验报告.docx_第4页
第4页 / 共24页
SQL-Server数据库上机实验报告.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SQL-Server数据库上机实验报告.docx》由会员分享,可在线阅读,更多相关《SQL-Server数据库上机实验报告.docx(24页珍藏版)》请在三一文库上搜索。

1、SQL-SerVer数据库上机实验报数据库系统原理上机实验报告学号:1120131743姓名:谈兆年 班级:07111301、实验目的与要求:熟练使用SQL语句掌握关系模型上的完整性约束机制二、实验内容1:利用SQL语句创建Employee数据库CREATE DATABASE Employee;结果:2:利用SQL语句在Employee数据库中创建人员表 PerSOn、月薪表SaIary及部 门表dept。做法:按表1、表2、表3中的字段说明创建表1 PerSOn表结构字段名数据 类型字段 长度允许空 否字段说明P_noChar6NotNUIl工号,主键P naVarCh10Not姓名mear

2、NullSeXChar2NotNull性别BirthdateDateti meNull出生日期PrOfVarCh ar10Null职称DePtnoChar4NotNull部门代码,外键(参照dept表)表2 Salary表结构字段 名数据类型字段长度允许空 否字段说明P_noChar6NotNull工号,主键,外键(参照PerSOn表)BaSeDeC5Null基本工资BonuSDeC5Null奖金,要求50FaCtDeC5Null实发工资=基本工 资+奖金Mo nt hInt2NotNull月份表3 dept表结构字段数据字段允许空字段说明名类型长度否DePtnoChar4NotNull部门代

3、码,主键,DnameVarCh ar10NotNull部门名称程序为:CREATE TABLE dept(dept no CHAR(4)PRIMAR Y KEY NoTNULL,dn ame VARCHAR(10) NOT NULL)CREATE TABLE Perso n(P_no CHAR(6) PRIMAR Y KEY Not Null,P_name VARCHAR(10) Not Null,SeX CHAR(2) Not Null,Birthdate Datetime Null,Prof VARCHAR(10) Null,DePt no CHAR(4) Not Null,FOREIGN

4、KEY (DePt no)REFERENCESdept(Dept no);CREATE TABLE SaIary(P_no Char(6) PRIMAR Y KEY Not Null,BaSe Dec(5),Bonus Dec(5) CHECK (Bo nus>50),FaCt as Base+B onus,Mon th Int Not Null,FOREIGN KEY (P_no) REFERENCES PerS on (P _no);HI #?SHttl U fl .*H0rM MJL ¾crf l!lL <r M llt*-31 (Wiflsii3w IMi)

5、9;',B 1H,.I mPlnw-3?酣KM >tt 工d Il 中 O 11雪E¾ t¾ I倉嚨 駅 軒E¾ (B R_i ej<gH曰 也J tft sl severs:O IlQ 07 U 7H-37 r4- NT)F ._1 w; m Ul Spbwj j 二 EJIl;-r W2朿丽户袒M «aiJ二!割乩Rj用临罠 C;甲尸罠柿卞 <<殳丈目氓 - (J BfltBJLHaI Ti C U Kh ! :J Jrtrd:i 以 M*1 LJ VfnBftIEJlrLf-.l屮胡 LwrI s;I c¾

6、Em-m-tTJl SVScpgrd 曰谿 PIbQf41JMPlNMP TffFI 訝 tysF: recri=Br-,TJl STfsF-Itfl ubzatlL EllIila i w*1 gjiffEV¾ljTanaher sE Y Ll lWi-IJrHfrgiImcyc nprtiMgratera"j SYSrT-lcZ-YSE-pe*Xu+<1t±o+fl加±clda+fl竝 4d»血卄卄 4±0+<i间 手 ¢- ¾.4i¾h.- .手 Vh .- B¾.ZOIM2-

7、13 1 啦 Ii 商 fOl 1 & l21l 33 2UKh6 .212IZJIIXI->l:2!f 1 c- l 23 12 Hly 0 2 7rm i h !2h is ?IIKh61212 SKO-3i.2? 1 2C0M 13 12 ZrIrofl e n© I 己 T2 13 2CD> 1:212 2)COMh212 JiTO 6 旅凸 12 OM-fi l,2i BUM-ll-21 121M6125 12 C0>9 纠 k3:利用SQL语句向表PerSOn、Salary和dept中插入数据。做法:按表4、表5、表6中的数据插入。表4表PerS

8、On中的数据P noP namSeXBirthDProfDePt neateo000001王云男1973-47中级0001000002谢志文男1975-214中级0001000003李浩然男1970-825高级0002000004廖小玲女1979-86初级0002000005梁玉琼女1970-825中级0003000006罗向东男1979-511初级0003000007肖家庆男1963-714高级0003表5表SaIary中的数据P_noBaSeBOnUSFaCtS_m ont h000001210030010000021800300100000328002801000004250025010

9、00005230027510000061750130100000724002101表6表dept中的数据DePt noDn ame0001人事咅IS0002财务咅IS0003市场咅IS程序为:INSERT INTO dept(Dept no,D name) ValUeS('0001','人事部');INSERT INTO dept(Dept no,D name) VaIUeSe0002','财务部');INSERT INTO dept(Dept no,D name)VaIUeS('0003','市场部');

10、OHZ- -LMmSN-£000一 喺B.coo)卜6lw 一 0.)s 山 mv>( OKQ0d(l)4epLnJmX sEeuldould) UOS d OHZ- FM山 SN-AOOo 一喺W.EOG0?。卜 6ISR一>000000.) S 山 mv>( OKQ0d(l)4epLnJmX sEeuldould) UOS d OHZ- FM山 SN-P000一喺 一寸 L09卜 6ISR一 NOOOOO.)S 山 mv>( OKQ0d(l)4epLnJmX sEeuldould) UOS d OHZ- FM山 SN-P000一 喺一卜寸6 卜 6ISR一

11、m田一LOOOOO )S 山 mv>( OKQ0d(l)4epLnJmX sEeuldould) UOS d OHZ- FM山 SN-PerS On(P_n o,P _n ame,Sex,Birthdate,Prof,Dept no)VALUESe000005','梁玉琼 T 女','1970-8-25','中 级','0003');INSERTINTOPerS on(P_n o,P _n ame,Sex,Birthdate,Prof,Dept no)VALUES('000006','罗 向东

12、','男','1979-5-11','初 级','0003');INSERTINTOPerS on(P_n o,P _n ame,Sex,Birthdate,Prof,Dept no)VALUES('000007','肖家庆','男','1963-7-14','高 级','0003');OOooOI王Z谢志文030000"摩小殓005梁玉琼罗向东00T肖磁*TU25SSSODODODODQ1Q1O2亚3 3O OO O

13、O O13-Ilh-融表WZ冲的数ISr置是5丽沖性 FH強生S H W FJJ 专I釘良* G=I ¾IP nvPrQfIDCPtnQBirthdae程序为:INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000001','2100','300','1');INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000002','1800','300','1'

14、;);INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000003','2800','280','1');INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000004','2500','250','1');INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000005','2300

15、9;,'275','1');INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000006','1750','130','1');INSERT INTO SaIary(P_no,Base,Bo nus,Mo nth)VALUES('000007','2400','210','1');FMPiY冲的数J lVmployeert4-. UZDH-3Sw±亟亘I爭I ! *d斛和歌

16、“ ¾F noBas Eaml5FaCtNOnth卜OnenlZloO3004001OMQo2LeOO30021001(Mttn32S030SO1POoOo4250025027501)0oo2300£752S751OooO(J6175013018801OOoQ(JT240021026104: (1)利用SQL语句修改表中的数据。做法:将SaIary表中工号为000006的员工工资增加为1800元,奖金增加为160元。修改的代码为:UPDATE SaIarySET BaSe=1800,Bo nus=160 WHERE P_no='000006'修改后的结果为:

17、±1F Q S÷>c BVEIU3 Fai?i XCnth1UOQoOI21(K30U34 OCI2OOOOO4130C30CClQO13DnDDID32 SD3D 30I打OoOOlO4EOQ26027601E0000522T525?SIEiOOOOlOSiEIeo196017OOOoOT2<cc210廿Lo1(2) 利用SQL语句删除表中的数据。要求:删除PerSOn表中工号为000007的员工数据。删除的代码为:DELETEFRoM PerSOn WHERE P_no='000007'修改后的结果为:冲突出错。不能够删除,是因为前面各表间都

18、建立了联系,定义了外键,所以 在此不能够删除,如果要删除,前面各表之间必须解除相互间的关系,把定义 的外键删除。(3) 利用SQL语句查询PerSOn表中的所有数据。查询语句为:SeIeCt *from PerS On查询结果为:逡登询已成功执行.此处也可以看出“删除PerSOn表中工号为000007的员工数据”这条命令没有成功,000007的信息还在。5:条件查询做法:(1) 查询PerSOn表中所有不重复的职称。查询代码为:SELECT DlSTINCT PrOfFRoM perso n;查询结果为: S2LECT DlST工討CT F工口三(2) 查询PerSOn表中职称为中级的所有员工

19、数据查询代码:SELECT *FRoM PerSOnWHERE prof='中级'查询结果为:口结果消息F*_noPjnameSeOtBirthdateProf1 IF1!lla SBlB T,!H B ID(XM)OI王云男197WM-O7 OOOOoOOoQ中级2000002谢志文1972-14 )0:00:00.000电级3梁玉琼197(H)Ia-25 OD OO oO OOD中级EJeptriDODolIXMI(3) 查询PerSOn表中具有高级职称的男员工信息查询代码:SELECT *FROM PerSOnWHERE prof='高级'AND Sex=

20、'男';查询结果为: SELECT ”FROH npersenjfi>V>VvXA> WSiRL urI=t T AiTU SuL 男';l I "J -*rjL" * VR4 ( IrlJ结果-J 5P-FkD P_name Sst MfthdatgPrf Deptra1 ;二二二;工蜡工里IST(HK-25 0(M:M)OOO宫级匸迂2 ','6Sia7 肖羸庆H196U7-14 0Q;OO oO QoD高袈(XN)3(4) 查询PerSOn表中姓名为王云、谢志文、罗向东的员工数据查询代码:SELECT*FRoM

21、 PerSOnWHERE P_name IN C王云','谢志文','罗向东');查询结果为:drj Hjjr4 I Jgff rw 曩 r3 SELECT-FROM JeeOnl-NHERE jgJG王云谢志文啰向东打h ITIIII m jy Fiq尸 JiBDeSeX BifthdProf DePtrKl I ItMr uh1 i OOOOOl :王云 S 197047DOlM W.OOO 申织 OMI IrmiiiiBiwiBiiaaiii BrJ2 fl00OT2 谢志文 S 197514 DO-SQ-OQ LQoD 中衆 OOTI3 Affl

22、XHJG 罗向东 男 197D511 DOLM .M.MD 初级 f36:使用ORDER BY 排序做法:利用SQL语句将工号在000003和000006之间的员工的月收入按 实发工资升序排序。代码:SELECT *FROM SaIaryWHERE P_no BETWEEN 000003 AND000006ORDER BY FaCt ASC查询的结果为: SttECT FWHERI: F nc 5ETKEM OOQOO3 AXD OClOOO6 .- .-ORrEP BY FdCt ASCrwr*w< LmJa结果FLnaBaseBanUaFdetMOnlh1Pl IIM !III Un

23、ilII-Iili OOooOG j19001601G012OTDOOSZWO2752&7513OOQO(M2500250275014Mm)32SW?BO017:利用SQL语句查询各部门的实发工资总数。代码:SELECT Dn ame, SUM (FaCt)FROM PerS On ,salary,deptWHEREdept.Dept no=PerS on .Dept noAND PerS on .P _no=Salary.P _noGROUP BY Dn ame查询结果为:3DrlaITleI rIJS : -.I人市, = £-¾«s&利用SQ

24、L语句查询人事部所有员工信息。查询代码:SELECT *FROM PerSO n,deptWHEREdept.Dept no=PerS on .Dept noAND Dname='人事部查询结果为:EJ3 SELEeT =JWHERT depr .eno=trson. DepEno AND Iane , 5HFIT3结果I L ¾P_noP_name Sea BirthdateFWDePftrlO如tn。dae1 DoMDl j 壬云里137MH4>7 00:00® M中级Kx)IOOTI人事剖2 CffiKXG 瞬志文S1970;00; OoDW中嘏DWlO

25、oQIA¥S9:表的内连接查询:做法:利用SQL语句查询PerSOn表中职称为中级的员工信息。查询代码:SELECT *FROM PerS on ,salary,deptWHERE person.P_no=Salary.P_no AND PerS on .Dept no=dept. DePt no AND prof='中 级'查询结果为:B SELEeT ”FkCSti &P JIQPjl 日 me1 DKHMI J 王云2 谢志文3 (XXM)O5梁玉琼结果丄消息-WHERE E5RU旷朝弱班J5l AllD 牖磁a恶Km=Ja磁1JB蔗刼a AND RSa

26、£=,级SrthCdtProfDp4rDPjKEaseBorUSFaCtMOnthdeotnodame1979444700:00:00000中级MMI0MM1210030024M1OoOl人事部ISTM2-T4 00:OoMMm中级OooI(X)OOa2TBOO30021(M1WOl人事部1970昭250QQOQaOOo中级OOO3230027525751OK)3Se畀更女10:表的外连接查询:做法:利用SQL语句查询每个员工1月份的工资和奖金查询代码:SeleCt SaIary.base,B OnuS from SaIary left outer jo in PerS On On

27、(Salary.P_ no = PerS on.P_no);查询结果为:P SeIeCc salaru-,base, 3c>ls-fr salary Ieft OUJCer i in person on (SaIary-P = per3i- P ;VV_ZiAA-1 VwV>mX*V>*AV>,(IOCal) (10.0 RTMJ Ryan-PQFrrr结果1 >BorKJa1ImrBHs-m - -jI 21OCJ3002"lBi"'30032fltM)2S042500260523002756IBOCIfiO72400210I琶诲已射

28、执缶11:子查询:做法:利用SQL语句查询比工号为000005的员工实发工资高的所有员工信息。查询代码为:SELECT DlSTlNCT PerSon. * ,Salary. *,dept.FRoM PerS on, SaIary,deptWHERE Fact>(SELECT DlSTINCT FaCtFROM SaIaryWHERE P_no='000005')ANDperso n.P_no=SaIary.p_noANDPerS On .Dept no=Dept.Dept no查询结果为:EISELECT DISTINCT- ”觀眉'<FROM ESESS

29、BWEERE FacoQEUE BISrlftCT FaLCtFROM salary-WHERE,0C0G05- ATJr 砂JSmS=翩3g聒;規曲G减lHJ3=I皿J馭喘卫ITFn烤果j PJrnP-H3TK:OCKBVlhcatcffDePinQP_noElaScBQrUSFadLIMalrthdcfbode1IinHIIBrHriiiarBi訂XKW:孚浩然197W25 00:00:OoDOO談.CWODCKMH2BM23001OOO2财爵部2Oon(XM1 畀9醐KOthtMOO OrOmWO?fKXMW2500麺27501OM)2游部3XXX»7科家庆畀15C34)714

30、QC KMQt-O0W3O(XXMJ7240Q21036W1t-o12:定义外键约束做法:(1) 创建表时将PerSOn表的dept no列定义为外键,并参考 dept表 的列 dept no。代码为:FOREIGN KEYDePt noREFERENCESdept(Deptno) /*在表级定义参照完整性*/(2) 将SaIary表中的P_no设为外键,并使其参照PerSOn表中的列P no。代码为:FOREIGNKEYP no REFERENCESPerSOn(P_no) /*在表级定义参照完整性*/其依赖关系为对象依锁英系-person 讦 eron的对舅电)0【严小J依輔B象¢

31、;) 依赖关索F "3 pr SQiiJI Selary3卿本丁 ISI帮助对象依顿关系-PerSOnO 依赖于person的idfe(fl) b*l 械ft) 依賴关系F - 1 pr ql=-2 Aept13:测试对主表进行插入、更新及删除操作时的影响。做法:(1)向表dept中插入一行数据( 0004''研发部),测试是否影响从 表。代码为:INSERT INTo dept (DePt no, Dn ame)VALUESc0004','研发部'); 测试结果:影响从表 原因:由于插入的元祖的DePtno属性的值在表PerSOn中找不到一个

32、元祖,其DePtno属性的值与之相等,破坏了被参照表PerSon的参照完整性。(2)将表dept中的部门号0003改为0006,测试是否影响从表。代码为:UPDATE deptSET DePt no='0003'WHERE DePt no='0006'测试结果: JtJiLZE 般瞬SET Dec: LHO =O 00«k NHXRE DFtnD0D3; ErlI鞭刖1叭狀态4盖LCC ?fUJlgTE 语旬与 EErZPKKreS 釣盲兀_J>oi_Crtp-C i I谨冲究宣生二剂据库Z=PlcyaaJ 表 Fba IarInF rli詢爭匸

33、;影响从表原因:修改了 dept表中的一个属性,使得在PerSOn表中找不到一个元祖,其DePtno属性的值与之相等。破坏了参照完整性(3) 删除表dept中部门号为0001的员工的数据,测试是否影响从表。DELETEFROM deptWHERE DePt no='0001'测试结果:(3 DELETEFRoM eepWHIRE DCPMC -IPOOOI1;,*,hr,hyww>为i消息劇乙燧J第茲行EEILErE 语可与=KFEeKCE 约束理_U“q吨_IifiTt"牝弧厂冲突 » IO究发生于',=Ej-Oy=L-J "o.E

34、=r SCrin, CoTu 语句出止。影响从表原因:删除了 dept表中的一个员工的数据,使 得在PerSOn表中定义的外键无法参照dept表, 破坏了参照完整性。14:测试对从表进行插入、更新及删除操作时的影响。做法:(1)向表PerSOn中插入一行数据( 000012''宋全礼,男、'1980-7-17' 初级,0005'),测试是否违背参照完整性。代码为:INSERTINTOPerS On(P_n o,P _n ame,Sex,Birthdate,Prof,Dept no )VALUESe000012','宋全礼 T 男'

35、,'1980-7-17','初级','0005');测试结果:违背了参照完整性原因:由于PerSOn表要参照dept表, 而在PerSOn表中插入这一行数据,是的这一行数据无法在dept表中有相应的参照,故违背了参照完整性。I-I lr5tRi IMlD Ee2 IE 3r j aai*e,3ei(,Bin:naa«j Prflf,DencnQ-VKECES (t D 00012 ,宋全常',tj, f t19SO-717,初级,I H OOOS(:TlP_J H消也级别4畑第讪行IMiiiXJ 恒勻与 h'CK

36、7;lLJN KiY 约東“抚 jyrsn_Dr*n._)utA"p冲i于魁腑J",w一口罪豊11 鼻 ,djE0-det"p CClLI 语句已终山-(2)删除表中工号为000005的员工数据,测试是否违背参照完整性。删除的代码为:DELETEFRoM PerSon WHERE P_no='000005'测试结果:不违背参照完整性 原因:由于对该员工的所有数据都进行了删除, 所以在PerSOn表中和dept表中都没有存在该员 工的数据,所以不影响参照完整性I 匚 DELErESBiJM txiS5n-H£R£ t n"

37、;1LVJGDi-< IJl*由涓总. 5*瓏I L即状态G If亠亠、亠丄亠” r "DElZTi 语句!与 aFR23CZ 约审利FK salary P c DAD2ACDSt 该冲旁安牛于尉祸点i1EpZLQ炉 J llskQ.-al=.r',F CoIiZn 诣巨E终止。总结与体会通过这次实验,我学到了很多东西,包括建表,导入数据,查询,插入。最 重要的是没接触的时候总是觉得它比较深奥或是不可接近的新型语言,但是通 过这次实验,我发现只要我们有心去做一件事,就有做成的一天。SQL SerVer数据库的实验学习使我对数据库的有了新的进步,以后再看到也就不至于什么 也不懂。数据库是一个存储数据的大仓库,它不但包括数据,还包括数据间的 各种关系,以及各种操作。从实验中让我更明白一些知识,表是数据最重要的 一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体 越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就 会越深刻。尽管学的还不精通,用 SQL尚不熟悉,但通过课程的理论学习和实 践相结合的方式,我对数据库产生了很高的兴趣。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1