实验四:SQL数据查询

合集下载

数据库实验报告-SQL语句查询

数据库实验报告-SQL语句查询

《数据库原理》实验报告(实验名称:SQL查询语句)一、实验目的数据查询语句是SQL语句的重要组成部分,是编程人员与数据库管理人员必不可少的工具,通过实验达到以下目的:(1)掌握SELECT 语句的基本语法,加深学生对查询语句基本概念的理解。

(2)掌握简单的单表查询。

(3)掌握连接查询。

二、实验内容:实验数据:实验二所建的数据库及表,实验三录入表中的数据。

1、简单查询(1)若干列或行的选择(2)*、distinc、between…and… 、 in、 like等运算符的使用(3)计算列、常量或空值的查询(4)查询结果排序和分组2、连接查询(1)内连接和自身连接(2)外连接(3)复合条件连接(4)多表连接(5)对表和列使用别名三、实验环境SQL server 2000,pc机一台四、程序源码与运行结果1.查询所有学生的全部信息2. 查询全体学生的学号与姓名3 查询年龄在20岁以下的学生姓名及其出生年份,并为出生年份加上标题4 查询选修了课程的学生学号,并消除重复行5 查询年龄在20~23岁的学生信息(用between… and…表示查询条件)6 查询全体学生情况,查询结果按班级编号升序排列,同一班的学生按年龄降序排列7 查询所有姓赵学生的姓名、学号和性别8 查询名字中第2个字为“小”字的学生姓名9 查询电气信息工程学院(dx) 和计算机学院(jsj)的学生(要求:使用IN关键字表示查询条件10 查询没有考试成绩的学生学号和课程号11 查询有2门以上课程是90分以上的学生的学号及(90分以上的)课程数(先用group by 分组,再用Having限定分组条件)12 查询学生总人数13 查询学号为‘’学生的平均成绩和总成绩,并为总成绩和平均成绩取别名。

14 查询c01号课程的最高分数和最低分15 查询没有考试成绩的学生学号和课程号16 查询全体学生的姓名、选修的课程名及成绩17 查询每个学生及其选修课程情况的所有信息(用*表示字段18 查询某门课程考试成绩相同的学生学号和课程名,并为各个表取别名19 查询与“张三”在一个系学习的学生(IN)20 查询选修了“数据结构”的学生学号和姓名五、实验总结列名写错:修改列名:心得体会:通过实验,了解了一些基本的查询操作,会一些的基本操作。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

SQL实验报告(优秀范文5篇)

SQL实验报告(优秀范文5篇)

SQL实验报告(优秀范文5篇)第一篇:SQL实验报告实验四触发器实验(一)after触发器(1 1)在l l i neitem 表上定义一个 after 触发器, , 当修改列项目e e xtendedprice d i scountx tax 时, , 要把 s orders 表得to o tal pri ce e 一起修改, , 以保证数据一致性C RE ATE T RIGGERtrig _line ite m_ pr ice_ update on line it em fo rupda teaasbegin i f(UPDATE(ex tend edprice)o r UPDATE(tax)or UPD AT E(di scou nt))begin-—声明游标变量指向 inserted 表d eclarecursor_inserted c urs orrea d_onlyofor select order key,linenu mber,exte nd edpr ice, dis coun t, taxfromin ser ted—-息信找查取获量变明声ﻩ声明变量获取查找信息de clare order key in t, @linenumb erint,exte nd edpricereal,disscount real,tax real—-打开游标epoﻩen cursor_i ns ert ed—-标游取读ﻩ读取游标fe tchnextfrom cur sor _i ns erte dint o@o rderkey, @lin enumber,eext ende dprice, @di scount,t axwwhi le FETC H_S TATUS =0 nigebﻩnﻩ—-声明一个变量保存重新计算得新价格cedﻩﻩecl are @n ew_tota lpri cer ealﻩ select @n ew_t otal price= @ext en dedpr ice *(1 -@di scou nt)*(1 +@tax)—-用新得总价格变量更新 orders 表得 t ot alprice puﻩﻩupdate orde rsse t tot alpri ce= new_totalprice where or derkey=orde rkeyen hctefﻩext f ro m cur sor_i nser ted int o@order ke y, @li nenum ber, @ex tende dp rice,discoun t, @taxdneﻩllaedﻩlocate c ur sor_i nser te deend 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 ffor inse rta sbegin ——向指量变标游明声ﻩ声明游标变量指向ins erted 表de clarec ursor_inse rtedcursorread_ onl yﻩ for s ele ct orderkey,linenumbe r,ex te ndedp ric e,di scou nt,t axfrom insserte d--声明变量获取查找信息edﻩeclare @orde rk eyint, @lin enumber int,e xten dedp ricereal, @discountreal, @ta xreal -—ﻩ-打开游标open cursor_i ns erte d--ﻩ-读取游标fe tc hnex tf romcu rsor_ins ertedinto@o rd erkey,li nen umbeerr, ex ten ded pric e,dis count,tax ihwﻩile @@FE TCH_ STATU S=0 ebﻩegin-—格价新得算计新重存保量变个一明声ﻩﻩ声明一个变量保存重新计算得新价格cedﻩclare @n ew_tot alprice realcelesﻩct new _to ta lprice= @extend edp rice *(1-d is count)*(1+tax)—-新更量变格价总得新用ﻩﻩ用新得总价格变量更新orders 表得totalpri ceﻩ u pda teor ders s ett ota lpric e=total pric e+ @new_ tota lpr ice wwhhe re o rderke y=orderkeytefﻩetch next from cursor_ ins erte dinto o rder key, @l inen umber,e xtendeddp ric e, @disc ou nt, @t axeend 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 eon line item fo r de let eAAS begin--声明游标变量指向delet ed 表de clar e curso r_d eleted cursorre ad _on lyesrofﻩﻩele ctord erk ey,line numbe r,extende dp rice,discoun t, taxfromdel eted-ﻩ--声明变量获取查找信息declare ord erkey int,linenum be rint,extendedp ri ce r eal,discou nt real,ta xreal -—ﻩ-打开游标epoﻩen c urso r_ deleted——标游取读ﻩ读取游标efﻩetch next fr om cur sor_delete d in toorder ke y,l inenumb er,ext enddedprice, @di scoun t,taxwh ile@FETCH_STATUS=0begi n-—声明一个变量保存重新计算得新价格ﻩ declare @ne w_ to talpric erealﻩsselec t@new_t otalpr ice= @exte nde dpri ce*(1-@disco unt)*(1+ tax)-ﻩ-—用新得总价格变量更新orders 表得tot alp rice uﻩﻩupd ateorders set t otalpri ce=to talpr ice-@new _totalp rice wh er e order key= @ord erkeyfetchn ext f rom cursor_inse rt ed in to orderkey, @line numbe r,extendeeddprice, @d iscou nt,t ax dneﻩndddeal lo cat e cur sor_inse rted eend((4 4))验证 up d at e触发器—-查瞧号订单得 to ta a l pr i ceselec t*fro o mo o r ders whereorde r key=1 8 30;—-查瞧明细表得相关信息se l ect *f ro mlin ei i te e mw here or de e r key=183 0and l ine num m be e r =1;——验证 e update 触发器updat elineitem set t ax=tax+0、05whe re orderkey=1830;(二)i i n steadof触发器((1))在在 lineit em 表上定义一个ins tead o fupda te触发器, 当修改明细表中得数量量quan ti ty 时, 应先检查供应表par tsupp 得av ai lqty 就是否足够, 不足够则拒绝执行, 否则执行并修改相应数值以保证数据一致性于由于 in steadof 触发器更新某个表会使得该表上其她不满足更新列不能更新,因因用此逆向思维使用 a fter 触发器实现相同效果即先更新 qu antity, 再比较av ailqqtty, 如果满足更新数量, 就修改partsupp 得表得 a vailqty, 如果不满足, 则把lineitem得quantity 更新之后得数据重新修改回来ccreate trigge r trig_lin eit em_quanti ty_ upda teonli neit em f or upda teas begin if UPDATE(qu ant ity)bbegin ——向指别分量变标游明声ﻩ声明游标变量分别指向 i nserted 表与 d el eted 表edﻩdeclare c urso r_inser tedcur sorr ead_on lyfortcelesﻩﻩtorde rkey, partk ey,s uppkey,lin enum ber, quantit yfr om i nserteddecl arecursor_de leted c urs orrea d_ onl yf or select quantityfr 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_deleted int--打开游标ruc nepoﻩrsor_in sert ed poﻩopen cur sor_d eleted-—量变给赋值数标游取读ﻩ读取游标数值赋给变量fﻩfet chnext fromcu rsor_ insert edﻩiinto or de rk ey,pa rtkey, @suppk ey, @line nu mber, @qty _ins erte df et chnext fromcursor _d eletedint o q ty _de lete dwhi le fe tch_st atus=0 gebﻩegin--计算订单明细修改时, 订购数量得变化值inserte d表项-d elet ed表项ssel ect quantity_d if f_ li neit em= @q ty _in se rte d—@@q ty_deleteedﻩ--从parts upp 表获取ava ilq ty值, 注意partsupp 表得主键为(partk ey,suppkeey)tcelesﻩﻩt@quanti ty_p ar tsupp =av ailq ty fro m pa rtsu ppwﻩﻩwh er e suppkey= suppke yand part key= @par tk ey-—断判始开ﻩﻩ开始判断gebﻩbegi nfiﻩf quant ity _d iff_ lin eite m=0ﻩﻩ p rin t“ 更新得数量与原表中得值相同, 不需要更新”e ls eif @quantit y_d iff_lin eitem 〈=q uantity_partsuppﻩbe ginﻩpuﻩﻩpd ate partsupps et avail qty= availqty-@qua ntit y_d iff_li ne item ﻩpus erehwﻩppkey=suppkeyandp artkey= @par tke yﻩﻩ p rint “ 两个表都更新成功’ ﻩﻩﻩneﻩndels eigebﻩﻩinﻩuﻩﻩupdate li nei temsetquantit y=quantity+ @quanti ty_diff_linei temwhe re o rd erke y=@orde rke y and li nenu mber= @liine numberﻩp ri nt '更新失败”ﻩﻩendﻩ e nd efﻩﻩetch ne xtfr om c urso r_i nsertedi nto @ord erke y, @partkey,s upp key, @linenumb er, @qt y_ ins ert edf etch ne xt from curso r_de leted into @qt y_d elet ed dneﻩndd eallocat e cur sor _i nserte ddealloc at e cursor_de le ted eend eend(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_ insertonline item iinstead of inser t as bbegin-—声明游标变量指向 inserte d表d eclar e cur sor_inserte dcur sorrea d_ only f orsﻩﻩselect or derk ey,pa rtkey,sup pk ey, lin en umber,q uantityf rom ins er ted-—声明变量获取查找信息dec lare quantity int, @av ailq ty i nt, @suppkeyin t, @partkeyinntt, @o rderkey int, @linenu mber int-—标游开打ﻩ打开游标c nepoﻩcurs or_ins erted -ﻩ-—读取游标f etc hnext fro mcursor_insert edint o@orde rkey,partkey,@@ssuppkey, @linenumber,qu antity wh ile @@FETCH_S TATUS= 0igebﻩin--为变量赋值a tcelesﻩavailqtyy==av ai lqt y fr ompartsuppwﻩwhe re suppkey =@su ppk ey and part ke y= partke yﻩ if @quant ity 〈= @avail qt y-—如果可以更新bﻩbegin /ﻩﻩﻩ/*将将 insert ed 表中得记录插入到明细表*/ ﻩsniﻩserti nto l ineite m select *from i nsertedro=yekredroerehwﻩﻩrderk ey andlinenumb er = @linenumber */ﻩﻩ新更时同ﻩ*同时更新 part supp 表得数量*/ﻩﻩuupd ate pa rtsup pset a vailqty=availqty-@quanti tyﻩerehwﻩe sup pke y= @sup pkey and partkey=part key ppr int ’paarts upp 表有足够得货物可以满足 lin eitem 得quan tityy, 插入成功’endelsebeginﻩﻩ p rintt''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, @liinenumbe r, qu antity eﻩen ddeall ocat ecursor_ inserted end(3)在在 line ite m表上定义一个 inste ad of del ete 触发器,当当删除明细表中记录时时, 同时改变表供应表 partsupp 得ava il qtyy数值 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 ursorread _only forlesﻩﻩelect or derke y, par tkey,sup pkey, linenumbe r,quan tity fr om deleted -ﻩ--声明变量decl are s upp key i nt, par tke yint, @orde rkey int,linen umb erint, @quaant it y int—-标游开打ﻩ打开游标opencursor_deleted-—标游取读ﻩ读取游标ffetch next fr omcurs or _del et edin to @ord erkey , @partkey,s uppkeey, @lin en umber,q ua ntitywhi leFFET CH_ STATUS=0 igebﻩin*/*除删ﻩ*删除*/ﻩ de let e fromlineite m where linenu mber= line number and o rde rkey =ordder key*/新更时同ﻩ同时更新 pa rt supp 表得数量*/u pdateparts uppse tavailqt 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 omcurso r_del etedinto @ord er ke y,p ar tkey,@@suppkey, @lin enu mber,quanti ty neﻩnd edﻩea lloc ate cursor_ delete dend(4)验证 update 触发器--查瞧li neit em 得quan tit y select*fr omlin eit em whe re or derk ey =1830and li nenum ber=1;——查询partsupp 表得ava ilqt y se lect * from part supp w here suppk ey =(selectsupp key fr omlin eitem w here ord erkey=18 30)and partk ey=(s elec t part key from lin eite mwh er eorder key =18 30 a nd linenu mber=1)---更新数量过大——更新得值与原值相同---更新到+ + 2 00 数量, , 成功updateli neitem setquant ity=q uanti ty+ 200where order key=1830and lin en umber =1;--更新 +2 00成功后l ineite m得 quanti ty y 变化——更新+200 成功后par ts upp 表得a va ilqty 变化实验到此。

SQL数据的查询和更新实验报告报告

SQL数据的查询和更新实验报告报告

SQL数据的查询和更新实验报告报告实验三、SQL的数据查询1、实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。

2、实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:单表查询查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。

使用DISTINCT保留字消除重复行。

对查询结果排序和分组。

集合分组使用集函数进行各项统计。

连接查询笛卡儿连接和等值连接。

自连接。

外连接复合条件连接。

多表连接。

嵌套查询通过实验验证对子查询的两个限制条件。

体会相关子查询和不相关子查询的不同。

考察四类谓词的用法,包括:第一类,IN、NOT IN;第二类,带有比较运算符的子查询;第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;第四类,带有EXISTS谓词的子查询,实现“所有”等情况集合运算使用保留字UNION进行集合或运算。

采用逻辑运算符AND或OR来实现集合交和减运算。

3、实验步骤以University_Mis数据库为例,该数据库中有四张如实验一,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。

在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。

在表Reports中保存学生的选课记录和考试成绩。

1请先输入如下元组,再对数据库进行有关的查询操作:图、Students表图、Teachers表图、Courses表图、Reports表2查询性别为“男”的所有学生的名称并按学号升序排列。

查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。

积分的计算公式为:[1+(考试成绩-60)*]*Ccredit。

考试成绩>=60。

查询学分是3或4的课程的名称。

查询所有课程名称中含有“算法”的课程编号。

查询所有选课记录的课程号。

统计所有老师的平均工资。

数据库实验4 数据查询

数据库实验4 数据查询

实验4:数据查询1.实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。

2.实验要求:熟练掌握SQL SELECT语句,完成各个实验的内容,能够举一反三,灵活运用,能够通过本章介绍的一些基本语句,构造各种各样的查询。

3.实验环境与实验器材:实验环境:计算机,网络环境,投影设备。

实验相关软件:Window XP、SQL Server 2000。

4. 实验内容与步骤本实验通过使用Transact-SQL语句,对已经建立的数据库进行查询操作。

4.1 查询指定字段编写select语句,显示“学生档案表”中的学号、姓名、籍贯、专业以及班级字段。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,籍贯,专业,班级from 学生档案表如图:第二步:单击“SQL查询分析器”界面上部的绿色三角形“执行查询”按钮,查询对话框下半部分显示查询结果,如图:4.2 通配符“*”的使用编写select语句,显示“学生选课表”中的所有字段。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select * from 学生选课表如图:查询对话框下半部分显示查询结果,如图:4.3 基于字段的表达式在学生档案表中,按“XXXX年XX月XX日”的格式显示出生日期。

使用year 函数从“出生日期”字段中取得年份数据,再使用str函数将数值型的年份数据转换成字符型,最后使用“+”将字符串拼接起来。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,性别,str(year(出生日期),4)+'年'+str(month(出生日期),2)+'月'+str(day(出生日期),2)+'日' as 出生日期from 学生档案表如图:查询对话框下半部分显示查询结果,如图:4.4 用WHERE子句过滤记录在学生档案表中查询所有出生日期在“1983-01-01”至“1984-12-31”之间的所有学生的信息。

SQL查询实验报告

SQL查询实验报告

SQL查询实验报告实验题目:sql查询——简单查询【实验目的与要求】一、实验目的1. 熟练掌握单表查询的select语法结构;2. 通过观察查询结果, 体会select语句的实际应用。

二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作。

2.能认真独立完成实验内容。

3.实验后做好实验总结,根据实验情况完成实验报告。

【实验环境】pc机、windows xp系统+sql server 2005 【实验内容】基于实验一建立的educ 数据库,用transact-sql 语句实现如下查询:1.选修了课程的学生学号;2.计算机系的学生;3.计算机系学生的学号和姓名;4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序)5.选修上课编号为1且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75输出;(提示:新输出项要命名列标题)6.没有成绩的学生的学号和上课编号;7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项)8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注:默认排序规则通常是chinese_prc_ci_as,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。

)9.姓李和刘的学生的信息;10.不姓张王李刘的学生的学号、姓名和性别;11.选修课程的学生人数;12.选修上课编号为1的学生的最高分;13.每位学生所修课程的平均分;14.选修两门以上课程的学生;15.总成绩大于200 分的学生的学号和总成绩。

(提示:group by分组统计)【实验方法和步骤】1.新建查询,在查询编辑器中依次按照如上实验内容编写select 语句完成查询。

2.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。

sql查询实验报告

sql查询实验报告

sql查询实验报告SQL查询实验报告一、引言SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

在数据库管理系统中,SQL查询是一项重要的操作,通过使用SQL查询语句可以从数据库中检索所需的数据。

本实验旨在通过实际操作,掌握SQL查询的基本语法和常用技巧。

二、实验目的1. 熟悉SQL查询语句的基本结构和语法;2. 掌握SQL查询中的条件筛选、排序和聚合等操作;3. 学会使用SQL查询语句从数据库中检索所需的数据。

三、实验环境本次实验使用MySQL数据库管理系统,通过MySQL Workbench进行操作。

四、实验步骤1. 连接数据库:打开MySQL Workbench,点击“新建连接”,输入数据库连接信息,成功连接到目标数据库。

2. 创建测试表:创建一个名为“students”的表,包含字段“id”(学生编号)、“name”(学生姓名)、“gender”(学生性别)、“age”(学生年龄)和“score”(学生成绩)。

3. 插入测试数据:向“students”表中插入若干测试数据,包括学生的编号、姓名、性别、年龄和成绩。

4. 执行SQL查询语句:使用SQL查询语句从“students”表中检索所需的数据。

五、实验结果与分析1. 查询所有学生的信息:SELECT * FROM students;通过执行以上查询语句,可以获取到“students”表中所有学生的信息,包括学生的编号、姓名、性别、年龄和成绩。

2. 查询成绩大于80分的学生信息:SELECT * FROM students WHERE score > 80;以上查询语句中的WHERE子句用于筛选成绩大于80分的学生信息,通过执行该语句,可以获取到符合条件的学生的信息。

3. 查询男生的平均成绩:SELECT AVG(score) FROM students WHERE gender = '男';以上查询语句中的AVG函数用于计算符合条件的学生的平均成绩,通过执行该语句,可以获取到男生的平均成绩。

数据库实验四:sql数据查询

数据库实验四:sql数据查询

数据库实验四:SQL数据查询一、实验目的与要求:1.实验目的熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。

实验内容:在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化:1、一般简单查询(1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。

(2)查询某个表中的所有记录。

(3)使用单个条件的简单查询。

(4)使用多个条件(AND关系)的查询。

(5)使用多个条件(OR关系)的查询。

(6)使用多个条件(混合AND和OR关系)的查询。

(7)使用带NOT运算的查询。

···AND···的查询。

(8)使用BETWEEN(9)使用NOT···BETWEEN···AND···的查询。

(10)使用LIKE运算符的字符串匹配查询。

(11)使用LIKE运算符的模板匹配查询。

(12)查询空值和非空值的查询(13)结果要求排序的查询(14)查询结果按多列排序,并分别要求升序和降序的查询。

(15)使用TOP显示前若干记录的查询。

(16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。

2、连接查询(17)两个关系的连接查询。

(18)带其他查询条件的两个关系的连接查询。

(19)多个关系(三个以上)的连接查询。

(20)两个关系的广义笛卡尔积运算结果。

(21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。

(22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。

(23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不是任何课程责任教师的教师信息)。

(24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教师的课程信息。

sql实验4数据查询

sql实验4数据查询

实验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*FROMstudent_info(2)查询学号为0002的学生的姓名和家庭住址。

实验4-使用SQL查询分析器完成简单查询

实验4-使用SQL查询分析器完成简单查询

实验4 使用SQL查询分析器完成简单查询一、实验目的1、通过对Select的使用,掌握Select语句的结构及其应用。

二、实验要求1、掌握在SQL Server 2000环境下,利用企业管理器和查询分析器进行SQL数据查询。

学习使用Select 语句进行数据库的检索,掌握在Select语句中使用where子句、order by子句、group by子句以及between、like关键字。

三、实验设备、环境设备:奔腾III或奔腾III以上计算机环境:WINDOWS XP或WINDOWS NT、SQL SERVER 2000中文版四、实验原理、方法上机操作五、实验步骤及内容(一)实验步骤1、学生实际操作(二)实验内容1、使用SQL查询分析器,对Pubs数据库完成如下简单查询操作(2)查询所有作者的姓名和作者号信息,并在每个作者的作者号前面显示字符串“身份证号:”表明显示信息是身份证信息;(authors表)(3)改变显示列名。

显示所有作者的姓名信息和作者号信息,要求用“名”和“姓”来区别fname 和lname,“作者编号”来区分作者号;(authors表)(4)查询所有书在价格提高10%后的价格和书名信息;(titles表)(5)查询所有书的书号和税后价格。

(titles表,royalty列表示税率);(6)查询所有作者的姓和“名的第一个字符”以及作者号;(authors表; SUBSTRING函数; au_fname 表示名,au_lname表示姓; substring(au_fname,1,1), 第二个参数表示位置, 第三个参数表示取子串长度)(7)查询邮政编码大于9000的作者姓名和电话信息;(authors表)(8)查询在CA州的作者姓名和城市;(authors表)(9)查询出版日期在1/1/1991到12/31/1991之间的书名(书名限制为38个字符)和出版日期;(titles表,SUBSTRING函数)(10)查询书的类型是mod_cook或trad_cook的书名和它的类型;(titles表)(11)查询店名中包含Book的店的信息;(stores表);(12)查询所有无价格的图书;(titles表)(13)查询书名以T开头或者出版号为0877,且价格大于16美元的书的信息;(titles表)(14)查询所有作者的所在城市和州名,要求没有重复信息;(authors表)(15)按照类型的升序和价格的降序显示书的信息;(titles表)六、实验报告要求及记录、格式按长沙理工大学《实验报告》格式填写七、实验注意事项1、实验过程中注意爱护计算机,实验完毕要按政党操作关闭计算机;2、不要随意更改sa的登录密码;3、注意自己创建的数据库主文件及日志文件的保存文件名及位置。

SQL实验四-数据库的查询和视图

SQL实验四-数据库的查询和视图

学校代码:10128学号:************《数据库原理及应用》实验报告题目:数据库的查询和视图****:**学院:理学院系别:数学系专业:信息与计算科学班级:信计12-2****:**二〇一五年四月一、练习目的1、数据库的查询(1)掌握SELECT语句的基本语法;(2)掌握子查询的表示;(3)掌握连接查询的表示;(4)掌握SELECT语句的GROUP BY子句的作用与使用方法;(5)掌握SELECT语句的ORDER BY子句的作用与使用方法;2、视图的使用(1)熟悉视图的概念和作用;(2)熟悉视图的创建方法;(3)熟悉如何查询和修改视图。

二、练习准备1、数据库的查询(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY子句的作用与使用方法;(6)了解SELECT语句的ORDER BY子句的作用;2、视图的使用(1)了解视图的概念;(2)了解创建视图的方法;(3)了解并掌握对视图的操作。

三、实验程序实验4.1 数据库的查询1、(1)对于实验2给出的数据库结构,查询每个雇员的所有数据. USE YGGLGOSELECT*FROM Employees(2)用SELECT语句查询Employees表中每个雇员的地址和电话. SELECT Address,PhoneNumberFROM Employees(3)查询EmployeeID为000001的雇员的地址和电话.SELECT Address,PhoneNumberFROM EmployeesWHERE EmployeeID='000001'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话. SELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE Sex=0(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”. SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'END AS性别FROM Employees(6)计算每个员工的实际收入.SELECT EmployeeID,实际收入=InCome-OutComeFROM Salary(7)获得员工总数.SELECT COUNT(*)FROM Employees(8)找出所有姓王的雇员的部门号.SELECT DepartmentIDFROM EmployeesWHERE Name LIKE'王%'(9)找出所有收入在2000~3000之间的员工号码.SELECT EmployeeIDFROM SalaryWHERE InCome BETWEEN 2000 AND 3000(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入. SELECT EmployeeID as编号,InCome as收入INTO收入在以上的员工FROM SalaryWHERE InCome>15002、子查询的使用.(1)查询在财务部工作的雇员的情况.SELECT*FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.SELECT NameFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')ANDBirthday!>ALL(SELECT BirthdayFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='研发部' ))(3)查找比所有财务部的雇员收入都高的雇员的姓名. SELECT NameFROM EmployeesWHERE EmployeeID IN(SELECT EmployeeIDFROM SalaryWHERE InCome>ALL(SELECT InComeFROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT EmployeeIDFROM DepartmentsWHERE DepartmentName='财务部')))))3、连接查询的使用(1)查询每个雇员的情况及其薪水的情况SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeID(2)使用内连接的方法查询名字为“王林”的员工所在的部门SELECT DepartmentNameFROM Departments JOIN EmployeesON Departments.DepartmentID=Employees.DepartmentID WHERE ='王林'(3)查询财务部收入在2000以上的雇员姓名及其薪水详情. SELECT Name,InCome,OutComeFROM Employees,Salary,DepartmentsWHERE Employees.EmployeeID=Salary.EmployeeIDAND Employees.DepartmentID=Departments.DepartmentID AND DepartmentName='财务部'AND InCome>20004、聚合函数的使用.(1)求财务部雇员的平均收入.SELECT AVG(InCome)AS'财务部平均收入'FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(2)财务部雇员的平均实际收入.SELECT AVG(InCome-OutCome)AS'财务部平均实际收入' FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(3)求财务部雇员的总人数SELECT COUNT(EmployeeID)FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')5、GROUP BY\ORDER BY子句的使用.(1)Emyees表中的男性和女性的人数SELECT Sex,COUNT(Sex)FROM EmployeesGROUP BY Sex;(2)查找员工数超过2人的部门名称和员工数量.SELECT(Employees.DepartmentID),COUNT(*)AS人数FROM Employees,DepartmentsWHERE Employees.DepartmentID=Department.DepartmentID GROUP BY Employees.DepartmentIDHAVING COUNT(*)>2(3)将各雇员的情况按收入由低到高排列.SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDORDER BY InCome实验4.2 视图的使用1、创建视图①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

SQL数据库实验四_复杂查询(1)解答

SQL数据库实验四_复杂查询(1)解答

实验四复杂查询(1)解答实验结果1. 查询没有订购商品的且在北京地区的客户编号、客户名称和邮政编码,并按邮政编码降序排序。

SQL语句:SELECT customerNo,customerName,zipFROM CustomerWHERE address LIKE'%北京%'and customerNo NOT IN(SELECT customerNoFROM OrderMaster)ORDER BY zip DESC查询结果:问题:SELECT customerNo,customerName,zipFROM CustomerWHERE address='北京市'AND customerNo not in(select customerNo from OrderMaster)ORDer by zip DESC2.查询订购了“32M DRAM”商品的订单编号、订货数量和订货单价。

SQL语句:SELECT orderNo,quantity,priceFROM OrderDetailWHERE productNo IN(SELECT productNoFROM ProductWHERE productName='32M DRAM')查询结果:3.查询与员工编号E2008005在同一个部门的员工编号、姓名、性别、所属部门。

SQL语句:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')查询结果:不包括员工‘E2008005’:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')AND employeeNo!='E2008005'4.查询既订购了P2*******商品,又订购了P2*******的商品的客户编号、订单编号和订单总额。

实验四SQL语言——SELECT查询操作

实验四SQL语言——SELECT查询操作
实验内容
1、在SQL Server Management Studio的查询子窗口中创建数据库jxgl;
2、选择jxgl数据库,在SQL操作窗口中,创建Student、SC、Course、Teacher四表及表记录;
3、基于数据库jxgl,使用SQL的查询语句完成查询要求。
1.实验结果
完成查询要求
2.疑难与需解决的问题
怎么检索全部学生都选修的课程号
3.实验体会
多表查询比较复杂
教师评语及成绩
实验预备知识sql是一种被称为结构化查询语言的通用数据库数据操作语言tsql是唯一可以和sqlserver的数据库管理系统进行交互的语言
数据库*实验报告
实验项目名称:SQL语言——SELECT查询操作
成绩:
信息技术学院软件技术与数据库教研室
实验概述:对数据库进行查询操作
1.实验目的
了解查询的概念和方法;掌握SQL Server集成管理器查询子窗口中执行SELECT操作的方法;掌握SELECT语句在单表查询中得应用;掌握SELECT语句在多表查询中得应用;掌握SELECT语句基于数据库jxgl,使用SQL的查询语句。
3.实验预备知识
SQL是一种被称为结构化查询语言的通用数据库数据操作语言,T-SQL是唯一可以和SQL Server的数据库管理系统进行交互的语言。SELECT语句是DML中也是T-SQL中最重要的一条命令,是从数据库中获取信息的一个基本的语句。简单查询包括:1、SELECT语句的使用形式;2、WHERE子句的用法;3、GROUP BY与HAVING的使用;4、用ORDER子句为结果排序等。

SQL数据库_实验四_复杂查询(2)解答

SQL数据库_实验四_复杂查询(2)解答
11.查找销售金额最大的客户号、客户名称和总货贷额。
12.查找销售总额少于5000元的销售员编号、姓名和销售额。
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
14.查找同时订购了商品编号为“P20070001”和商品编号为“P20070002”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出。
导入实验三中保存的订单数据库OrderDB.mdf。完成之后,进行以下的实验。写出相对应的SQL语句,并给出查询结果。
1.统计订单主表的订单金额。(用订单明细表中的订单汇总金额更新订单主表相应的订单金额属性)
2.查询订单金额最高的订单编号、客户姓名、销售员名称和相应的订单金额。
3.统计客户号为“C20050001”的客户的客户名、订单数、订货总额和平均订货金额。(表头用中文显示)
WHEREa.employeeNo=b.salerNo
GROUPBYorderSum,salerNo,employeeName
HAVINGorderSum<5000
查询结果:
13.查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额,并按客户编号排序输出。
SQL语句:
SELECTb.customerNo,customerName,d.productNo,productName,quantity,金额=quantity*price
ANDc.customerNo='C20050001'
GROUPBYcustomerName,orderSum
查询结果:
4.统计每个客户的客户号、客户名、订单数、订货总额和平均订货金额。(表头用中文显示)

实验四 SQL语言之数据查询基础

实验四 SQL语言之数据查询基础

实验四数据查询基础姓名:学号:专业:班级:同组人:实验日期:2009.09.27【实验目的与要求】1、熟练掌握SELECT 语句的基本语法格式;2、熟练掌握使用SQL语句进行单表查询,掌握GROUP BY子句、HA VING 子句和集函数;3、熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。

【实验准备】1.准备好测试数据2.了解用SQL查询基本语法。

【实验内容】4.0实验准备1、启动企业管理器,创建产品销售数据库CPXS:数据文件初始大小为5MB,最大大小50MB,增长方式按10%比例增长;日志文件初始为2MB,最大可增长到10MB,按2MB增长;其余参数取默认值。

2、在CPXS数据库中创建如下三个表:CP(产品编号,产品名称,价格,库存量);XSS(客户编号,客户名称,地区,负责人,电话);CPXSB(产品编号,客户编号,销售日期,数量,销售额);表结构如图4.1~图4.3所示,请写出创建以上三个表的T-SQL语句:use cpxscreate table cp(产品编号char(6) not null,产品名称char(3)not null,价格float(8),库存量int)create table xss(客户编号char(6) not null,客户名称char(30) not null,地区char(18),负责人char(18),电话char(12))create table cpxsb(产品编号char(6) not null,客户编号char(6) not null,销售日期datetime not null,数量int not null,销售额float(8) not null)并在查询分析器中运行。

图4.1 CP表结构图4.2 XSS表结构图4.3 CPXSB表结构4、在企业管理器中输入如图4.4~图4.6的CP表、XSS表和CPXSB表的样本数据。

图4.4 CP表的样本数据图4.5 XSS表的样本数据图4.6 CPXSB表的样本数据4.1 单表查询1、简单查询查询各种产品的产品编号、产品名称和价格。

实验四 SQL Server 数据查询操作 实验报告

实验四 SQL Server 数据查询操作 实验报告

实验四SQL Server 数据查询操作实验内容1.列出不及格记录的学生名单select sname from student,scwhere student.snum=sc.snum and score<602.列出选修了计算机系课程的学生姓名和年龄select distinct sname as 姓名,datediff(year,birthday,getdate()) as 年龄from student,sc,section,coursewhere student.snum=sc.snum and sc.secnum=section.secnum and um=um and course.dept='计算机系'3.检索选修了数据库技术课程的学生姓名和系别select distinct sname as 姓名,student.dept as 系别from student,sc,course,sectionwhere student.snum=sc.snum and sc.secnum=section.secnum and um=um and ame='数据库技术'4.列出选修了所有课程的学生名单select distinct sname as 姓名from student,sc,sectionwhere student.snum=sc.snum and sc.secnum=section.secnumgroup by snamehaving count(um)=(select count(*) from course)5.检索每门课程成绩都在80分以上的学生名单select sname as 姓名from student,scwhere student.snum=sc.snumgroup by snamehaving min(score)>=806.检索获奖学金的学生名单(每门课程在80分以上,平均成绩在90分以上)select sname as 姓名from student,scwhere student.snum=sc.snumgroup by snamehaving min(score)>=80 and avg(score)>=907.检索选修了大学英语的学生名单和成绩,并按成绩从高到低排列select sname as 姓名,score as 成绩from student,sc,section,coursewhere student.snum=sc.snum and sc.secnum=section.secnum and um=um and cname='大学英语'order by sc.score desc8.统计每门课程的选修人数,输出列名为课程号、人数select cnum as 课程号,count(snum) as 人数from sc,sectionwhere sc.secnum=section.secnumgroup by cnum9.查询选修了数据库技术、没有选修高等数学的学生姓名和系别select sname as姓名,student.dept as系别from student,sc,section,course where student.snum=sc.snum and sc.secnum=section.secnum andum=um and cname='数据库技术'and sname not in(select sname from student,sc,section,course where student.snum=sc.snum and sc.secnum=section.secnum and um=um and cname='高等数学')10.检索使用高等教育出版社出版的教材的课程名select cname from coursewhere textbook like'%高等教育出版社'11.统计所有课程的最高成绩、最低成绩和平均成绩select cname,max(score)as最高成绩,min(score)as最低成绩,avg(score)as 平均成绩from student,sc,section,coursewhere student.snum=sc.snum and sc.secnum=section.secnum andum=umgroup by cname12.统计每门课程的选课人数及不及格人数select cname as课程,count(sname)as选课人数,sum(case when score<60 then 1 else 0 end)as不及格人数from student,sc,section,coursewhere student.snum=sc.snum and sc.secnum=section.secnum andum=umgroup by cname。

SQL数据库实验报告数据查询

SQL数据库实验报告数据查询

SQL数据库实验报告数据查询南京信息工程大学实验(实习)报告实验(实习)名称数据查询实验(实习)日期11.25 得分指导教师系计算机系专业网络工程年级班次姓名学号一.实验目的1. 观察查询结果, 体会S ELECT 语句实际应用;2. 要求学生能够在查询分析器中使用S ELECT 语句进行简单查询。

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

二.实验内容1. 简单查询操作2. 连接查询操作三.实验步骤原始数据图学生表:课程表:选课表① 求计算机系的学生学号和姓名;② 求选修了课程的学生学号;③ 求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列④ 求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;⑤求计算机系和数学系的姓张的学生的信息;⑥求缺少了成绩的学生的学号和课程号。

查询每个学生的情况以及他(她)所选修的课程;求生的学号、姓名、选修的课程名及成绩选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;查询每一门课的间接先行课。

内容二一.实验目的1.掌握子查询的表示。

2.进一步掌握S QL Server 查询分析器的使用方法,加深对S QL 语言的嵌套查询语句的理解二.实验内容1)求选修了高等数学的学生学号和姓名;2)求C1 课程的成绩高于张三的学生学号和成绩3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生))求其他系中比计算机系学生年龄都小的学生信5)求选修了C2 课程的学生姓名;6)求没有选修C2 课程的学生姓名;7)查询选修了全部课程的学生的姓名)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。

2.提高操作实验1) 求供应项目j4 红色零件的供应商号及名称2) 求没有上海供应商生成的零件的项目号3)至少使用了供应商S5 所供应全部零件的项目号内容三:一.实验目的1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

实验四 在SQL Server中进行数据查询

实验四 在SQL Server中进行数据查询

实验四在SQL Server中进行数据查询一、实验目的1.掌握SELECT语句的基本语法。

2.掌握子查询的应用。

3.掌握连接查询的应用。

4.掌握SELECT语句的统计函数的作用和使用方法。

5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。

二、实验要求1.了解SELECT语句的基本语法格式。

2.了解SELECT语句的执行方法。

3.了解子查询的表示方法。

4.了解SELECT语句的统计函数的作用。

5.了解SELECT语句的GROUP BY和ORDER BY子句的作用。

三、实验内容:使用的数据库实验二、实验三、实验四录入数据的学生情况表Student 课程名称表Course教师授课表Teach 成绩表Score等四张基本表。

(一)基本查询:1.(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

2.(不选择重复行) 求选修了课程的学生学号。

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

(二)条件查询:4.(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

5.(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

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

7.(匹配查询) 求选修课程001或002或003,成绩在70至85之间,学号为04xxx 的学生的学号、课程号和成绩。

8.(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。

(三)聚合函数查询:9.(组函数) 求学生总人数。

10.(组函数) 求选修了课程的学生人数。

11.(组函数) 求选修了课程001的最高、最低与平均成绩。

12.(分组查询) 求各系、各班级的人数和平均年龄。

四、实验编程结果或过程(用截图方式或SQL语句表示,语句用蓝色字体标出)(一)基本查询:1.(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

Select SNO,SNAME,SSEX,SAGEFrom student2.(不选择重复行) 求选修了课程的学生学号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、实验内容
规程在上次实验所建立的数据库及表的基础上完成 以下的操作 1、单表查询: 、单表查询: 设计查询语句、 设计查询语句、完成对 *、distinct、like(%和 、 、 和 _)、in 、not in 、between and、order 、 、 by 、group by等的应用。 等的应用。 等的应用 2、连接查询 、 设计查询语句,分别用两种方式(where+连接 设计查询语句,分别用两种方式( 连接 条件和join…on)表示连接条件实现连接查询 条件和 )
实验四:SQL数据查是SQL语句的重要组成部分,合理 语句的重要组成部分, 数据查询语句是 语句的重要组成部分 使用数据查询语句,可以极大的简化应用程序编制、 使用数据查询语句,可以极大的简化应用程序编制、 快速的定位分析数据库系统的故障, 快速的定位分析数据库系统的故障,查询语句是编 程人员与数据库管理人员必不可少的工具, 程人员与数据库管理人员必不可少的工具,通过实 验达到以下目的: 验达到以下目的:
3、嵌套查询
16.查询选修了课程的学生人数 查询选修了课程的学生人数 17.计算选修了课程编号为 计算选修了课程编号为Cn01的课程的学生平 计算选修了课程编号为 的课程的学生平 均成绩 18.查询选修课程编号为 查询选修课程编号为Cn01的课程的学生最高 查询选修课程编号为 的课程的学生最高 分数 19.求各个课程号及相应的选课人数 求各个课程号及相应的选课人数 20.查询选修了 门以上课程的学生学号(提示用 查询选修了3门以上课程的学生学号 查询选修了 门以上课程的学生学号( Having字句) 字句) 字句
(1)加深学生对查询语句基本概念的理解与掌握 最终 )加深学生对查询语句基本概念的理解与掌握,最终 达到灵活应用。 达到灵活应用。 语句的基本语法。 (2)掌握 )掌握SELECT 语句的基本语法。 (3)掌握简单单表查询、连接查询、嵌套查询 )掌握简单单表查询、连接查询、 (4)学会使用聚函数和进行分组查询 )
三、实验步骤
1)恢复数据库 ) 2)根据所给出的实验任务设计查询语句 ) 3)在查询分析器中输入所设计的查询语句, )在查询分析器中输入所设计的查询语句, 并运行,观察运行结果。 并运行,观察运行结果。
四、实验报告要求
五、思考与练习
1. Where与Having语句有何差别? 语句有何差别? 与 语句有何差别 2. Count(*)与Count(字段名)有何差别? ( ) (字段名)有何差别? 3. LIKE '[^s][^y][^s]%'与NOT LIKE 'sys%' 与 有无区别? 有无区别?请加以验证 4. IN与Exists语句有何区别? 语句有何区别? 与 语句有何区别 5. 全连接、左连接、右连接有什么不同? 全连接、左连接、右连接有什么不同? 6. UNION与UNION ALL有何差别,谁的性能高? 有何差别, 与 有何差别 谁的性能高? 7. 不相关子查询、相关子查询有何区别? 不相关子查询、相关子查询有何区别?
3、嵌套查询
31.查询与“张兰”在一个系学习的学生(IN) 查询与“张兰”在一个系学习的学生( ) 查询与 32.查询选修了课程名为“数据库原理”的学生学号和 查询选修了课程名为“ 查询选修了课程名为 数据库原理” 姓名 33.查询与“张兰”在同一个系学习的学生(EXISTS) 查询与“ 查询与 张兰”在同一个系学习的学生( ) 34.查询选修了课程 或者选修了课程 的学生(要求 查询选修了课程1或者选修了课程 的学生( 查询选修了课程 或者选修了课程2的学生 消除重复组UNION) 消除重复组 ) 35.查询选修了课程 或者选修了课程 的学生(要求 查询选修了课程1或者选修了课程 的学生( 查询选修了课程 或者选修了课程2的学生 不消除重复组UNION ALL) 不消除重复组 )
3、嵌套查询
26.查询每个学生的选修课程包括没有选修课程的学生(外 查询每个学生的选修课程包括没有选修课程的学生( 查询每个学生的选修课程包括没有选修课程的学生 连接) 连接) 27.查询每个学生的选修课程包括没有被学生选修的课程 查询每个学生的选修课程包括没有被学生选修的课程 外连接) (外连接) 28.查询每个学生的选修课程即包括没有选修课程的学生又 查询每个学生的选修课程即包括没有选修课程的学生又 包括没有被学生选修的课程(全连接) 包括没有被学生选修的课程(全连接) 29.查询选修 号课程且成绩在 分以上的所有学生的学号、 查询选修2号课程且成绩在 分以上的所有学生的学号、 查询选修 号课程且成绩在90分以上的所有学生的学号 姓名 30.查询每个学生的学号、姓名、选修的课程名及成绩 查询每个学生的学号、 查询每个学生的学号 姓名、
3、嵌套查询
具体要完成的任务如下: 具体要完成的任务如下:
1. 查询全体学生的学号与姓名 2. 查询全体学生的全部信息,并为学生表命名别 查询全体学生的全部信息, 名 3. 查全体学生的出生年份,并为年份加上标题 查全体学生的出生年份, 4. 查询选修了课程的学生学号,要求消除重复行 查询选修了课程的学生学号, 5. 查询所有年龄在 岁以下的学生姓名及其年龄 查询所有年龄在20岁以下的学生姓名及其年龄
3、嵌套查询
6. 查询年龄在 查询年龄在20~23岁的学生信息(要求至少 岁的学生信息( 岁的学生信息 使用两种方式完成查询) 使用两种方式完成查询) 7. 使用 关键字查询电信系(dx)、数学系 使用IN关键字查询电信系 关键字查询电信系( )、 )、数学系 (ma)和计算机学院(jsj)的学生 )和计算机学院( ) 8. 查询既不是电信系、数学系,也不是计算机学 查询既不是电信系、数学系, 院的学生的姓名和性别。 院的学生的姓名和性别。 9. 查询所有姓赵学生的姓名、学号和性别 查询所有姓赵学生的姓名、 10.查询名字中第 个字为 强"字的学生的姓名和 查询名字中第2个字为 查询名字中第 个字为"强 字的学生的姓名和 学号
3、嵌套查询
21.查询选修了所有课程的学生信息。 查询选修了所有课程的学生信息。 查询选修了所有课程的学生信息 22.查询全体学生与选课表的笛卡尔积 查询全体学生与选课表的笛卡尔积 23.查询每个学生及其选修课程的情况 查询每个学生及其选修课程的情况 24.查询每个学生及其选修课程的情况(去掉重复 查询每个学生及其选修课程的情况( 查询每个学生及其选修课程的情况 属性) 属性) 25.查询某门课程考试成绩相同的学生学号和课程 查询某门课程考试成绩相同的学生学号和课程 信息
3、嵌套查询
11.查询 查询DB_Design课程的课程号和学分(先在 课程的课程号和学分( 查询 课程的课程号和学分 Course表中插入“DB_Design”课程信息) 表中插入“ 课程信息) 表中插入 课程信息 12.查询没有考试成绩的学生学号和课程号 查询没有考试成绩的学生学号和课程号 13.查询计算机系年龄在 岁以下的学生姓名 查询计算机系年龄在20岁以下的学生姓名 查询计算机系年龄在 14.查询全体学生情况,查询结果按所在系的系号 查询全体学生情况, 查询全体学生情况 升序排列, 升序排列,同一系中的学生按年龄降序排列 15.查询学生总人数 查询学生总人数
相关文档
最新文档