SQL查询—— 简单查询实验报告书
数据库实验三报告_简单查询和连接查询实验

实验三、简单查询和连接查询实验简单查询和连接查询实验是数据库的基本查询操作,简单查询是只涉及到一个表(基本表或视图)的查询,连接查询是涉及两个表以上的数据连接查询。
1.实验内容和实验要求1.1实验目的了解SQL Server查询分析器的使用方法,加深对SQL 和Transaction-SQL语言的查询语句的理解;掌握表的数据简单查询、数据排序和数据连接查询的SQL表达和查询分析操作方法。
1.2实验内容(1)简单查询实验用SQL表达简单查询操作,包括投影、选择条件表达、数据排序和使用临时表等,通过SQL Server 查询分析器输入,并显示正确结果。
(2)连接查询实验用SQL表达连接查询操作,包括等值连接、自然连接、一般连接等,通过SQL Server 查询分析器输入,并显示正确结果。
1.3实验要求(1)简单查询实验在学生-课程库中,用Transaction-SQL语句表示下列操作,并通过查询分析器实现其查询操作:①求数学系学生的学号和姓名;select 学号,姓名from 学生where 所在系='数学系'S7 吴非S8 丁玉S9 赵名②求选修了课程的学生学号;select distinct 学号from 选课S1③求选修了C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同,则按学号的升序排列;select 学号,成绩from 选课where 课程号='C1'order by 成绩desc,学号asc;S2 93S4 89S1 60S3 NULL④求选修了课程C1且成绩在80-90分之间的学生学号和成绩,将成绩乘以系数0.8输出;select 学号,成绩*0.8from 选课where 课程号='C1' and 成绩between 80 and 90;S4 71.2⑤求数学系或计算机系姓张的学生的信息;select *from 学生where 所在系in('数学系','计算机系') and 姓名like '张%';S2 张小红21 男计算机系S4 张三21 男计算机系⑥求缺少了成绩的学生的学号和课程号。
实验三简单查询(2)

SELECTemployeeNo,employeeName,department,orderNo,customerName,orderDate
FROMEmployee a,OrderMaster b,Customer c
WHEREemployeeNo=salerNoANDb.customerNo=c.customerNoANDyear(birthday)=1973
convert(char(10),orderDate,120)orderDate,quantity,金额=quantity*price
FROMEmployee a,Product b,OrctName='52倍速光驱'ANDb.ProductNo=c.ProductNoANDc.orderNo=d.orderNoAND
SQL语句:
SELECTemployeeNo,employeeName,address,orderNo,customerNo,orderDate
FROMEmployee a,OrderMaster b
WHEREaddressLIKE'%上海%'ANDa.employeeNo=b.salerNO
ORDERBYcustomerNo
查询结果:
2.查找订购了“32M DRAM”的商品的客户编号、客户名称、订单编号、订货数量和订货金额,并按客户编号排序输出。
SQL语句:
SELECTa.customerNo,customerName,b.orderNo,quantity,定货金额=price*quantity
FROMCustomer a,OrderDetail b,OrderMaster c,Product d
SQL语句:
实验三简单查询

简单查询(1)实验报告3. 查询全体职工的姓名、年龄、所属部门,并且用汉语显示表头信息。
SQL语句:SELECT employeeNo 姓名,year(getdate())-year(birthday)年龄,department 所属部门FROM Employee查询结果:4.查询1973年出生且为职工的员工信息。
SQL语句:SELECT*FROM EmployeeWHERE year(birthday)=1973 AND headShip='职员'查询结果:7.查询薪水在3000 ~ 4000的职工姓名和薪水。
SQL语句:SELECT employeeName,salaryFROM EmployeeWHERE salary>=3000 AND salary<=4000查询结果:8.查询薪水不在3000 ~ 4000的职工姓名和薪水。
SQL语句:10.查询姓张且全名为三个汉字的职工姓名。
SQL语句:SELECT employeeNameFROM EmployeeWHERE employeeName LIKE'张__'查询结果:11.查询既不在业务科也不在财务科的职工姓名、性别和所在部门。
SQL语句:SELECT employeeName,sex,departmentFROM EmployeeWHERE department NOT IN('业务科','财务科')查询结果:14.查询职工工资最高的前8个职工编号、职工姓名和工资。
SQL语句:SELECT top 8 employeeNo,employeeName,salaryFROM EmployeeORDER BY salary DESC查询结果:15.查询职工工资按高低排序的前10%的职工编号、职工姓名和工资。
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查询语句的一般格式2.掌握简单数据查询操作。
3.熟练掌握各种查询条件的表示。
4.掌握排序和分组操作在SQL语句中的实现。
5.掌握集函数的使用。
实验内容;1.创建学生表tudent、课程表coure和选课表SC,并输入数据(注意数据的完整性。
);(可以使用实验一中已经建立的表和数据)2.对各表中的数据进行不同条件的查询;1)查询全体学生的学号和姓名2)3)4)5)6)7)8)9)查询全体学生的详细记录查询所有选修过课程的学生学号查询考试有不及格的学生学号查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别查询选修了4号课的学生学号和成绩,结果按成绩降序排列查询每个课程号和相应的选课人数查询计算机系(CS)的学生姓名、年龄、系别查询年龄18-20岁的学生学号、姓名、系别、年龄;10)查询姓刘的学生情况11)查询既选修1号课程,又选修2号课程的学生学号12)查询学生的姓名和出生年份(今年2003年)13)查询没有成绩的学生学号和课程号14)查询总成绩大于200分的学生学号15)查询每门课程不及格学生人数16)查询不及格课程超过3门的学生学号17)查询年龄在10到19岁之间的学生信息18)查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列19)查询选了1号课程的学生平均成绩20)查询选了3号课程的学生的最高分21)查询每个同学的总成绩实验步骤与过程:1.创建学生表tudent、课程表coure和选课表SC,使用实验一中已经建立的表和数据。
2.并输入数据,设置主键。
3.建立索引及三表之间关系。
4.按照SQL语句格式及题目要求输入语句进行以下查询:1、查询全体学生的学号和姓名;2、查询全体学生的详细记录;3、查询所有选修过课程的学生学号;4、查询考试有不及格的学生学号;5、查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别;6、查询选修了4号课的学生学号和成绩,结果按成绩降序排列;7、查询每个课程号和相应的选课人数;8、查询计算机系(CS)的学生姓名、年龄、系别;9、查询年龄18-20岁的学生学号、姓名、系别、年龄;10、查询姓刘的学生情况;11、查询既选修1号课程,又选修2号课程的学生学号;12、查询学生的姓名和出生年份(今年2003年);13、查询没有成绩的学生学号和课程号;14、查询总成绩大于200分的学生学号;15、查询每门课程不及格学生人数;16、查询不及格课程超过3门的学生学号;17、查询年龄在10到19岁之间的学生信息;18、查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列;19、查询选了1号课程的学生平均成绩;20、查询选了3号课程的学生的最高分;21、查询每个同学的总成绩实验结果:利用实验一中所建立的表设置主键,建立索引及三表之间关系。
sql实训报告

sql实训报告SQL实训报告1. 介绍•目的:本报告旨在总结和分析SQL实训的过程和成果。
•简介:SQL实训是为了提升学习者的SQL数据库操作能力和实践经验而进行的一系列任务和练习。
2. 实训内容•数据库搭建:–使用MySQL数据库,版本为xxxx。
–数据库结构设计:包括表的设计、字段的定义、关系的建立等。
•SQL操作练习:–数据表操作:创建、删除、修改、管理等。
–数据查询:基本查询、条件查询、排序查询、多表联合查询等。
–数据更新:插入、修改和删除操作。
•实训任务:–针对具体需求,完成一系列SQL查询和操作任务。
–涉及不同类型的查询和操作,包括但不限于统计查询、子查询、数据更新等。
3. 实训过程•实训环境搭建:–安装MySQL数据库软件,并进行相关配置。
–创建数据库和数据表,并导入相应的数据。
•实训任务完成:–按照要求,使用SQL语句对数据库进行查询和操作。
–调试和优化SQL语句,确保查询和操作的准确性和效率。
•实训经验总结:–理解数据库的结构和原理,对于设计数据库和编写SQL语句有一定的指导作用。
–熟练掌握SQL的基本语法和常用函数,能够快速写出正确的SQL语句。
–通过实践,对于各类查询和操作的使用场景有了更深刻的理解和掌握。
4. 实训成果•数据库设计:–描述数据库结构和关系的ER图。
–列出数据库中的数据表及其字段定义。
•SQL查询和操作:–列出各个任务的要求和实现情况。
–给出相应的SQL语句和结果展示。
•总结和反思:–分析实训过程中遇到的问题和解决方法。
–总结实训的收获和不足。
5. 改进计划•针对已完成的实训,提出改进和扩展的思考和计划。
•进一步提高SQL操作技能的探索和实践。
以上为本次SQL实训的报告内容概要,详细的内容请参考实训报告正文部分。
1. 介绍•目的:本报告旨在总结和分析SQL实训的过程和成果。
•简介:SQL实训是为了提升学习者的SQL数据库操作能力和实践经验而进行的一系列任务和练习。
数据库实验报告一SQL查询

(1) 查询员工的姓名、职务和薪水。
select employeename,employeeno,salaryfrom Employee(2) 查询名字中含有“有限”的客户名称和所在地。
select customerno,addressfrom customerwhere customername like'%有限%'(3) 查询出姓“张”并且姓名的最后一个字为“梅”的员工。
select*from employeewhere employeename like'张_梅'(4) 查询住址中含有“上海”或“南昌”的女员工,并显示其姓名、所属部门、职称、住址、出生日期和性别,其中如果出生日期为空,显示“不详”,否则按格式“yyyy-mm-dd”显示,性别用“男”和“女”显示。
select employeename,department,headship,address,birthday=case birthday when null then'不详'end,sex=case sex when'M'then'男'when'F'then'女'endfrom employeewhere address like'%上海%'or address like'%南昌%'(5) 查询出职务为“职员”或职务为“科长”的女员工的信息。
select*from employeewhere headship like'职员'or headship like'科长'(6) 选取编号不在C20050001~C20050004之间的客户编号、客户名称、客户地址。
select customerno,customername,addressfrom customerwhere customerno not between'C20050001'and'C20050004'(7) 在表OrderMaster中挑出销售金额大于等于5000元的订单。
数据库实验报告-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 查询选修了“数据结构”的学生学号和姓名五、实验总结列名写错:修改列名:心得体会:通过实验,了解了一些基本的查询操作,会一些的基本操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目: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.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。
【实验结果】
SELECT DISTINCT Sno FROM Student_course
SELECT*FROM Student WHERE Dno ='计算机'
SELECT Sno,Sname FROM Student WHERE Dno ='计算机'
SELECT*FROM Student
WHERE Sex ='男'AND Dno IN('计算机','信息')
SELECT Sno,0.75*Score AS成绩FROM Student_course WHERE Tcid =1 AND Score BETWEEN 80 AND 90
SELECT Sno,Score FROM Student WHERE(Tcid=1 OR Tcid=4)ORDER BY Score DESC,Sno
SELECT*FROM Student WHERE birthday>='1995-1-1'ORDER BY sname ASC
SELECT*FROM Student WHERE sname like'[李刘]%'
SELECT sno,sname,sex FROM Student WHERE sname like'[^张王李刘]%'
SELECT COUNT(DISTINCT sno)AS选课人数FROM Student_course
SELECT MAX(Score)AS最高分FROM Student_course WHERE Tcid=1
SELECT Sno,AVG(Score)AS平均分FROM Student_course GROUP BY Sno
SELECT Sno,COUNT(DISTINCT Tcid)AS选课门数FROM Student_course GROUP BY Sno HAVING COUNT(Tcid)>2
SELECT Sno,SUM(score)AS总成绩FROM Student_course GROUP BY Sno HAVING SUM(score)>=200 ORDER BY总成绩DESC
【实验体会】
利用SELECT语句可以实现对已有表中数据的查询的。
通过实验让我对SELECT语句的应用有了更深的理解,当输出表中的几列数据时只需要将输出地列列出即可,如需要将表中的数据按列的显示顺序依次输出则可以简单地在<目标列名序列>中写“*”,DISTINCT关键字可以去掉查询结果中重复行。
DISTINCT关键字放在SELECT词的后面、目标列名序列的前边。
用WHERE语句查询满足条件的元组,ORDER
BY语句进行排序,GROUP BY语句进行分组,用BETWEEN下限值 AND 上限值确定范围,用IN确定某一属性是否在某一集和范围,用 LIKE进行字符串匹配,此外还可以用各种聚合函数进行数据的汇总,在实验中加强了我对这些语句用法的记忆和掌握。
实验者:。