实验四-SQL语言及应用
实验四 SQL语言-参考答案
实验四SQL语言【实验目的】1.掌握SQL语言的使用方法2.利用SQL语句实现相关的操作3.能够独立写出一些较复杂的SQL语句【实验内容】1. 建立一个Student表,由Sno(学号)、Sname(姓名)、Ssex(性别)、Sage(年龄)、Sdept (所在系)五个属性组成。
其中学号不能为空,值是唯一的,并且姓名取值也唯一。
查询名为“创建Student”。
Create table student(sno char(6) not null unique,sname char(4) unique,ssex char(1),sage smallint,sdept char(20))2. 建立一个SC (学生选课)表,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。
),查询名为“创建SC”。
Create table sc(sno char(6),cno char(3),grade single,primary key (sno,cno))3. 查询所有姓刘的学生的学号与姓名及其出生年份,查询名为“查找姓刘的学生”。
Selelct 学号,姓名,year(出生日期) as 出生年份from 学生表where 姓名like “刘*”4. 查询选修了计算机基础的所有学生的学号、姓名、成绩,查询结果按分数降序排列,查询名为“选修了计算机基础的学生”。
Select 学生表.学号,学生.姓名,选课成绩表.成绩from 学生表,课程表,选课成绩表where 学生表.学号=选课成绩表.学号and 课程表.课程编号=选课成绩表.课程编号and 课程表.课程名称=”计算机基础” order by 选课成绩表.成绩6. 查询所有年龄在20岁及20岁以下的学生姓名、年龄,查询名为“20岁及以下的学生”。
Select 姓名,年龄from 学生表where year(date())-year(出生日期)<=207. 查询考试成绩有不及格的学生的学号和姓名。
数据库sql 实验报告
数据库sql 实验报告数据库SQL实验报告1. 引言数据库是现代信息系统中不可或缺的组成部分,它提供了有效地存储和管理数据的能力。
结构化查询语言(SQL)是一种用于管理和操作关系型数据库的标准化语言。
本实验报告旨在通过实际操作和实验结果的分析,探讨SQL在数据库中的应用和效果。
2. 实验目的本次实验的主要目的是熟悉和掌握SQL语言的基本操作,包括数据的查询、插入、更新和删除等。
通过实验,我们可以进一步了解SQL语言的特点和使用方法,加深对数据库管理系统的理解。
3. 实验环境本次实验使用的数据库管理系统为MySQL,它是一种开源的关系型数据库管理系统。
MySQL提供了强大的功能和灵活的配置选项,被广泛应用于各种规模的应用程序中。
4. 实验步骤4.1 数据库连接在实验开始之前,我们首先需要建立与数据库的连接。
通过使用MySQL提供的连接函数,我们可以指定数据库的主机地址、用户名和密码等信息,以便进行后续的操作。
4.2 数据库创建在连接成功后,我们可以使用SQL语句创建一个新的数据库。
通过指定数据库的名称和字符集等属性,我们可以灵活地创建适合自己需求的数据库。
4.3 数据表创建数据库中的数据以表的形式进行组织和存储。
在本次实验中,我们将创建一个名为"students"的数据表,用于存储学生的基本信息。
通过指定表的字段和属性,我们可以定义每个字段的数据类型和约束条件。
4.4 数据插入在数据表创建完成后,我们可以使用SQL语句向表中插入数据。
通过指定插入的字段和对应的值,我们可以将具体的数据添加到表中。
在插入数据时,我们还可以使用事务来确保数据的完整性和一致性。
4.5 数据查询数据查询是SQL语言的核心功能之一。
通过使用SELECT语句,我们可以从表中检索所需的数据。
SELECT语句可以使用不同的条件和运算符进行过滤和排序,以满足不同的查询需求。
4.6 数据更新和删除除了查询,SQL语言还提供了更新和删除数据的功能。
实验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实验报告实验四触发器实验(一)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 变化实验到此。
数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
SQL语言的应用
SQL语言的应用【实验目的】1、了解SQL语言的数据定义功能。
2、掌握SQL的数据操作功能。
3、掌握SQL的数据查询功能,重点掌握基本查询和条件查询。
【实验准备】1、数据定义语句:CREATE(创建表结构)、ALTER(修改表结构)、DROP(删除表)。
2、数据操作语句:INSERT(插入记录)、DELETE(删除记录)、UPDATE(修改记录)。
3、查询语句:SELECT(基本查询,条件查询,嵌套查询,多表查询,连接查询,分组查询)。
4、SQL语言对表的查询结果处理(排序输出,重定向输出,输出合并)。
【实验内容】1、创建表:创建一个学生表 xs.dbf,包括以下字段(学号,姓名,性别,出生日期,入学成绩,专业),请自行设计字段类型和宽度。
参考命令如下:2、修改表结构:把xs.dbf中的字段姓名宽度改为10;增加一个字段籍贯,字符型,宽度为10。
3、增加记录:向 xs.dbf 中输入三条记录,参考命令如下。
4、修改记录:将所有姓王的学生的籍贯修改为“山东”。
5、删除记录:删除姓王的学生的记录。
6、查询:以下题目针对图书管理数据库中的表进行操作。
实验素材下载:图书管理系统(已建好的项目、数据库和表文件)(1)简单查询:按读者的出生日期升序列出所有读者的记录。
(2)条件查询:从读者.dbf中查询出所有非湖北籍的读者记录。
(3)条件查询:从图书.dbf中查询出价格在20元以上25元以下的图书记录,并将查询结果存到表chaxun1.dbf中。
(4)条件查询:从图书.dbf中查询出所有“教育出版社”出版的书号、书名、出版社。
(5)连接查询:查询出2003年6月以后借书的读者的读者编号、姓名、借书日期。
(6)嵌套查询:找出所有男读者的借书记录。
(7)统计查询:计算出图书表中“清华大学出版社”的图书总数量。
(8)分组查询:分别统计读者表中男女读者的人数。
【实验作业】用SQL命令对学生成绩管理数据库中的表完成以下查询操作:1、从student表中查询出所有学生的情况,并按学号降序排列。
《数据库与信息系统》实验4指导解析_1-3
⚫ 格式 2:LIMIT 记录数 表示从第一条记录开始显示“记录数”的记录。如果“记录数”小于或者等于查询结果的记录
总数,那么将从第一条记录开始,显示指定条数的记录。如果“记录数”大于查询结果的记录总数, 数据库会直接显示查询出来的所有记录。
2
图 4.4 2009 年以后出版的少儿类图书(部分结果)
解析:Where 子句可以使用 year()函数从出版日期(PublishDate)字段中取得年份数据,其值为整型。 如果直接使用日期型的常量做比较,日期型常量要按照'年-月-日'完整结构来写,并且使用单引号括 起来,例如'2009-01-01 '。 参考语句:
要注意数据表名 Order 与关键字 Order 相同,在查询语句中可以使用完整的数据表名:
3
bookstore.`order`或者将数据库 bookstore 设置为当前数据库,然后在查询语句中使用单引号将 order 括起来。 参考语句: Select OrderCode, OrderTime, OrderStatus From bookstore.`orders` LIMIT 3; 或: USE bookstore; Select OrderCode, OrderTime, OrderStatus From `orders` LIMIT 3; (7)查询 TotalPrice 在 100~200 元之间的订单信息,部分结果如图 4.7 所示。
From Book;
(2)进行图书的价格汇总分析,分别显示图书的最高价、最低价、平均价、最高价与最低价的 差值,结果如图 4.11 所示。
图 4.11 图书的价格汇总分析
SQL语言的应用实验报告南京邮电大学
SQL语言的应用实验报告南京邮电大学实验报告2013 /2014 学年第二学期实验名称SQL语言的应用专业广播电视工程学生学号11003829学生姓名____林钢_____指导教师胥备SQL语言的应用实验报告实验名称:SQL语言的应用指导教师:胥备实验类型:验证实验学时:4*2实验时间:2014年3月18日一、实验目的和要求练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器;掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。
二、实验环境(实验设备)硬件:个人计算机;软件:MS SQL SERVER环境。
三、实验原理及内容1.用SQL SERVER的企业管理器创建数据库数据库名称:M11003829操作步骤:1、单击左侧的SQL Server组→右键→新建SQL Server注册→下一步→在左侧的“可用的服务器”栏选中或输入CC-PC→点击中间的添加将CC-PC添加到右侧的“添加的服务器”栏→下一步→选中“登录时使用Windows身份认证”→点击下一步→选中“在现有SQL Server组中添加SQL Server”→点击下一步→完成→关闭。
2、单击左侧的SQL Server组下面可用的已注册子组里面的数据库→右键→新建数据库→输入数据库名称M110038292.用查询分析器在上一步创建的数据库中完成以下功能1)进入查询分析器并选择操作的数据库操作步骤:1、开始→程序→MS SQL Server→查询分析器设置:确认SQL Server(s)为CC-PC选择Windows身份认证确定2、在工具栏的下拉链表种选择名为M11003829的数据库。
2)建立基本表:学生、课程和选课,写出DDL语句建立学生表、插入数据。
学生学号姓名年龄性别S1 WANG 20 MS2 LIU 19 FS3 CHEN 22 MS4 WU 19 MS5 LI 21 FCreate TABLE STUDENT(SNO VARCHAR(7) NOT NULL,SNAME VARCHAR(10)NOT NULL,AGE INT NOT NULL,SEX VARCHAR(7),Primary Key(SNO),);use M11003829;Insert Into STUDENT Values ('S1' ,'WANG', '20', 'M');Insert Into STUDENT Values ('S2', 'LIU','19',' F');Insert Into STUDENT Values ('S3', 'CHEN' ,'22', 'M');Insert Into STUDENT Values ('S4', 'WU', '19', 'M');Insert Into STUDENT Values ('S5', 'LI', '21', 'F');建立课程表、插入数据。
数据库实验sql语法实验报告
数据库实验sql语法实验报告数据库实验SQL语法实验报告本次数据库实验主要涉及SQL语法的学习和应用,通过对实验指导书中所给出的数据库进行操作,对SQL语法有了更加深入的理解和掌握。
以下是本次实验的具体内容和结果。
一、实验环境实验环境为Windows 10操作系统,使用MySQL Workbench 8.0作为数据库管理工具。
二、实验步骤1.创建数据库和表格首先需要创建一个新的数据库,使用以下命令:CREATE DATABASE experiment;然后,创建一个新的表格,使用以下命令:CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10));2.插入数据接下来,插入一些数据到students表格中,使用以下命令:INSERT INTO students (id, name, age, gender) VALUES (1, '张三', 18, '男'),(2, '李四', 19, '女'),(3, '王五', 20, '男'),(4, '赵六', 21, '女');3.查询数据现在,我们可以查询students表格中的数据,使用以下命令:SELECT * FROM students;这个命令将会返回students表格中的所有数据,包括id,name,age和gender。
4.更新数据如果需要更新students表格中的某一条数据,可以使用以下命令:UPDATE students SET age=22 WHERE id=4;这个命令将会将id为4的数据的age字段更新为22。
5.删除数据如果需要删除students表格中的某一条数据,可以使用以下命令:DELETE FROM students WHERE id=3;这个命令将会删除id为3的数据。
数据库原理中SQL语句实验指导书及答案
实验四:管理SQL Server表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Stuio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(部分题只需给出关键语句)。
五、实验内容及步骤以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)insert into student.dbo.sc values('20051501','1',75)insert into student.dbo.course values('1','数据库','5',4)insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname='李咏'where Sname='李勇'3.修改课程“数据处理”的学分为3学分;3.update courseset Ccredit=3where Cname ='数据处理'4.将选修课程“1”的同学成绩加5分;4.update scset Grade =Grade+5where Cno='1'5.将选修课程“大学英语”的同学成绩加5分;update scset Grade=Grade+5from course,scwhere o=o and ame='大学英语'6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage=20,Sdept='MA'where Sno='200515010'7.修改借书证号为2005001的学生记录重新设置:名字为王婧婧、专业为信息管理、借书量增加5本;(因为无些相关的数据表帮无法实现)8.删除数据表student中无专业的学生记录;deletefrom studentwhere Sdept is null9.删除数据表student中计算机系年龄大于25的男同学的记录;deletefrom studentwhere Ssex='男' and Sage>25 and Sdept='CS'10.删除数据表course中学分低于1学分的课程信息;deletefrom coursewhere Ccredit<1实验五:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
sql语句的实验报告
竭诚为您提供优质文档/双击可除sql语句的实验报告篇一:sQL语言实验报告《数据库原理及应用》实验报告sql语句部分班级:11-37-06学号:姓名:总成绩:实验一熟悉sqlserver,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用sql语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库6、在表s上增加“出生日期”属性列。
7、删除表s的“年龄”属性列。
8、删除s姓名列的唯一值约束。
9、修改sc表成绩属性列为精确数字型。
10、在表s上,按“sno”属性列的唯一值方式建立索引。
11、删除表sc,利用磁盘上保存的.sql文件重新创建表sc。
12、创建教材p74页习题5中spj数据库中的四个关系:s、p、j、spj。
三、实验结果:1.创建学生课程数据库createdatabasestudend;5.将以上创建表s、c、sc的sql命令以.sql文件的形式保存在磁盘上。
(snochar(9)primarykey,snamechar(20)unique,ssexchar(2 ),sagesmallint,sdeptchar(20),);3.创建课程关系表c:(cnochar(4)primarykey,cnamechar(40),cpnochar(4),ccre ditsmallint,);(snochar(9),cnochar(4),gradesmallint,);5.将以上创建表s、c、sc的sql命令以.sql文件的形式保存在磁盘上。
6、在表s上增加“出生日期”属性列。
altertablesaddsbirthdaydatetime;7、删除表s的“年龄”属性列。
altertablesdropcolumnsage;8、删除s姓名列的唯一值约束。
altertablesdropuq__s__7d78a4e7;9、修改sc表成绩属性列为精确数字型。
sql 数据库实验报告4
《最新数据库管理系统》课程实验报告一、实验目的1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。
2、牢固掌握SQL SERVER的功能操作和Transact-SQL语言。
3、紧密联系实际,学会分析,解决实际问题。
学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。
二、实验内容1. 练习使用Transact-SQL语句创建和使用主键、外键、DEFAULT、CHECK 约束。
2. 练习使用警报、作业和调度员。
3. 练习使用DBCC CHECKDB命令、sp_lock系统存储过程和SQL编辑查询器窗口监视系统性能。
三、执行情况1.练习使用Transact-SQL语句创建和使用主键、外键、DEFAULT、CHECK约束。
定义主键约束定义外键约束删除外键约束在同一个表中定义主键和外键约束;2.使用警报、作业和调度员新建一个数据库ElecTravelCom 。
在该数据库下新建表Books。
启动SQL Server代理服务。
单击右键,选择新建——>作业。
点击“新建”据保存地址,到errorInfo.txt 。
继续在SQL Server代理节点,单击右键,选择新建——>警报。
单击“响应”选项卡。
选择“执行作业”后面的浏览框。
单击“确定”。
输入代码,执行102错误。
3.使用DBCC CHECKDB命令、sp_lock系统存储过程和SQL编辑查询器窗口监视系统性能。
使用DBCC CHECKDB命令新建查询,查找系统表,输入然后点击“显示估计的执行计划”按钮,可查看其执行计划。
四、实验收获和建议通过这次实验,使我练习使用了Transact-SQL语句创建和使用主键、外键、DEFAULT、CHECK约束,警报、作业和调度员以及DBCC CHECKDB命令、sp_lock 系统存储过程和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语句练习实验报告
进行Sql语句练习实验报告实验报告课程名称:数据库技术实验题目:实验四Sql语句练习姓名:学号:班级:实验日期:成绩:一、实验目的进行Sql语句练习二、实验环境Microsoft sql server 2008和DBMS三、实验主要内容和主要操作步骤1.新建表Depts、Student、Courses、Reports如下:2.建立表关系如下:3.建立查询3.1 简单的选择与投影查询(1)无条件查询查询学生的姓名(Sname)、学号(Sno)、所在系号(Dno)查询全体学生的姓名(Sname)、出生年份及学号(Sno)查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
查询选修了课程的学生的学号(2)条件查询比较条件查询:查询系别编号D03的全体学生的学号(Sno)、姓名(Sname)谓词条件查询:查询20-22岁(包括18和22岁)学生的姓名(Sname)、年龄(Sage)(3)查询结果排序查询选修C03号课程学生的学号(Sno)和成绩(Grade),并按成绩降序排序(4)集函数的使用查询学生的总人数计算选修C01课程学生的平均成绩查询选修C01课程学生的最高成绩(5)查询结果分组查询各个课程号(Cno)及相应的选课人数3.2 连接查询(1)不同表之间的连接查询查询Sname=‘王建平’及其选课情况(2)自身连接查询没门课程的简介先修课3.3 嵌套查询(1)带谓词IN的嵌套查询查询选修了编号为“C02”的课程的学生的姓名(Sname)和所在的系别号(Dno)(2)带有比较运算符的嵌套查询查询与“刘华”在同一个系学习的学生学号(Sno)、姓名(Sname)和系别编号(3)带谓词AND或ALL的嵌套查询查询系别号不是D01的学生,且年龄不超过D01所有学生年龄的学生学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)和系别号(Dno)(4)带谓词EXISTS的嵌套查询查询所有选修了编号为“C01”课程的学生姓名(Snmae)和所在系别号(Dno)3.4 集合查询查询系别号D02的学生或年龄不大于20岁的学生信息四、实验结果及体会建立查询的过程中我得出了下面的一些感受:(1)初步熟悉各种比较简单的查询(2)对一些比较复杂的查询还需要多练习。
实验四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子句为结果排序等。
实验四用T-SQL语句操作数据表中的数据
实验四⽤T-SQL语句操作数据表中的数据实验四⽤T-SQL语句操作数据表中的数据⼀、实验⽬的掌握⽤T-SQL向表中插⼊、修改、删除数据的基本操作。
⼆、实验内容1.从FTP中把上次实验创建的数据库“Student”复制到本地磁盘。
2.在企业管理器中把数据库“附加”进来。
3.使⽤insert命令对表中的数据进⾏操作(具体要求见后⾯操作步骤)。
4.使⽤Update命令对表中的数据进⾏更新操作(具体要求见后⾯操作步骤)。
5.使⽤delete命令对表中的数据进⾏更新操作(具体要求见后⾯操作步骤)。
6.分离数据库“Student”并复制FTP上,以备在以后实训中使⽤。
三、仪器、设备、材料微机、SQLServer2005四、实验准备1.理论知识预习及要求①掌握数据库的结构;②掌握数据表的组成;③掌握T-SQL语句操作数据表的格式;2.实验指导书预习及要求上机前先复习第四章的内容,掌握⽤T-SQL语句操作数据表数据。
3.其他准备⽆五、实验原理或操作要点简介利⽤T-SQL语句对表中的数据进⾏操作。
六、注意事项要养成为结果⽂件取有意义名称的习惯。
要及时保存⽂件,避免死机或断电造成的⽂件丢失。
创建过程中,出现问题时,请保存,请⽼师解答。
创建过程中,若出现找不到相应的问题时,要看联机丛书,逐步学会⾃学。
七、实验过程与指导1.进⼊SQL Server2005的界⾯。
2.启动服务。
3.打开查询分析器,新建查询。
提⽰:每做完⼀题,就新建⼀个查询。
使⽤insert命令对表中的数据进⾏操作,具体要求:T-SQL命令insert语法如下:insert[into]<表名>[<列名列表>]values(数据列表)使⽤values关键字的insert命令⼀次仅能插⼊⼀条记录,所以每插⼊⼀⾏,都要使⽤insert关键字,并且必须提供表名及相关的列、数据等。
注意:(1)将数据添加到⼀⾏的所有列时,Insert语句中⽆需给出表中的列名,只要有Values关键字给出添加的数据即可。
SQL语言的应用
Access环境的SQL语言的应用一、实验目的1.掌握使用SQL语句进行简单查询。
2.掌握使用SQL语句进行条件查询。
3.掌握使用SQL语句进行多表查询;4.熟练掌握Select语句编写数据查询的语句代码;二、实验内容1.根据给定的表,用SQL的选择语句SELETE来创建查询。
2.根据已创建的多表,用SQL的选择查询语句来创建联合查询。
三、实验步骤1.在数据库窗口----选中左边列表框中的“查询”选项卡----单击工具栏上的“新建”按钮----打开“新建查询”对话框。
2.“新建查询”对话框中选择“设计视图”----单击“确定”按钮。
3.弹出“选择查询“和“显示表“对话框---在“显示表”对话框单击“关闭”按钮。
4.在“选择查询对话框区域----按鼠标右键打开快捷菜单----在快捷菜单中选择“SQL 特定查询”----“数据定义”(或“联合”)项----打开“数据定义查询”(或“联合查询”)编辑窗口。
7.在“数据定义查询”(或“联合查询”)编辑窗口中-----输入SQL中的SELETE语句代码。
注意:语句中的分隔符号和括号用英文符号:①在“学生”表中,使用SQL语句,编写查询每位学生的姓名及生日的代码。
SELECT 学号, 姓名, 出生日期FROM 学生;②在“学生”表中,使用SQL语句,查询男、女人数的代码。
SELECT count(学号) AS 人数, 性别FROM 学生GROUP BY 性别;③在(“学生”和“班级”)表中,使用SQL语句,编写查询每位学生所在班级的代码。
SELECT 学号, 姓名, 班级名称, 专业FROM 班级, 学生WHERE 班级.班级编号=学生.班级编号;④在(“学生”和“班级”)表中,使用SQL语句,编写查询“软件工程”专业的全体学生的代码。
SELECT 学号, 姓名, 性别, 专业, 出生日期, 籍贯FROM 学生WHERE 学生.班级编号IN(SELECT 班级编号from 班级WHERE 专业="软件工程");⑤在(“学院”、“系”、“班级”、学生)表中,使用SQL语句,编写查询每位学生所在学院、系和班级的代码。
实 验_SQL语言应用
实验二SQL语言应用一、实验目的:熟练掌握基本表的定义、删除与修改,为后继学习作准备。
二、实验属性(验证性)1、了解并掌握SQL查询分析器及企业管理器的使用;2、掌握基本表的定义、删除与修改。
三、实验仪器设备及器材1.安装有windows操作系统计算机。
2.安装有Oracle11g和SQL Server的计算机。
3.安装有Visual Studio .net和Java编译器(eclipse、Netbean等)的编译器。
4.计算机具备网络环境。
四、实验要求(预习、实验前、实验中、实验后等要求)1.预习教材第三章,熟悉SQL语句。
2.熟悉.net、Java、PowerBuilder和Delphi 开发环境。
3.能够熟练掌握.net、Java、PowerBuilder和Delphi环境下的数据库的编程。
4.掌握单表查询语句的一般格式。
;5.掌握单表无条件、有条件查询及查询结果排序与分组。
6.掌握多表连接、嵌套和集合查询语句的一般格式及各种使用方法。
五、实验原理SQL语言应用。
六、实验步骤:(1)启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2)对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。
如果选择SQL SERVER查询分析器,需要选择数据库;A、单表查询1 无条件查询例2.1查询全体学生的详细记录。
select *from students;例2.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。
select sname,sno,sdeptfrom students;例2.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
select sname,2011-sage 出生年份,snofrom students;例2.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
4-2实训SQL语言的使用
实训4-2 SQL语言的使用一、实验目的①掌握SQL的数据定义命令的使用②掌握SQL的数据修改命令的使用③熟练掌握SQL的数据查询命令的使用二、实验要求①要求学会用SQL语句建立表、查询②利用SQL语句进行简单的查询③学会使用联接查询和嵌套查询三、实验内容①用create table命令创建一个“成绩表”,成绩表的结构如下:②用modify structure命令显示由create table命令创建的成绩表结构。
③用ALTER TABLE命令更改成绩表的表结构,把其课程编号字段的宽度改为3,学号字段的宽度改为9。
增加一个字段“任课老师”:字符型、宽度为8、不是关键字、可以为NULL。
④再用modify structure命令显示由create table命令创建的成绩表结构。
⑤用INSERT命令在成绩表中依次输入以下记录:⑥使用BROWSE命令浏览表中记录⑦用create table命令创建一个“学生信息表”,学生信息表的结构如下:⑧利用DELETE命令删除平时成绩小于90分的记录⑨使用BROWSE命令查看结果,看是否有逻辑删除标记⑩利用UPDA TE命令将课程编号为“B01”并且学号为“200201018”的记录中的平时成绩加2分○11利用SQL语言进行简单查询,查找“成绩表”中成绩大于95分的学生的所有信息SELECT 字段名From 数据源表(多表之间建立联系)Where 条件Order by 排序字段名Group by 分组字段名○12利用SQL语言进行嵌套查询,查询所有女同学的成绩SELECT 学生信息表.学号,成绩From 成绩表inner join 学生信息表on成绩表.学号=学生信息表.学号Where 学号in (select 学号where 性别=”女”)CREATE QUERYcreat table 成绩表(课程编号C(8) not null,学号C(16) NOT NULL,成绩n(5,1) null ,平时成绩n(5,1) null)modify structureALTER TABLE 成绩表alter 课程编号c(3) alter 学号c(9)ALTER TABLE 成绩表add 任课老师c(8) nullmodify structureinsert into 成绩表(课程编号,学号,成绩,平时成绩) values ("A01","200201002",89.0,90.0)insert into 成绩表(课程编号,学号,成绩,平时成绩) values ("A01","200201018",76.0,98.0)BROWSE。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四SQL语言及其应用
实验报告
姓名:班级:学号:
一、实验目的
1)掌握数据查询的各种应用
2)掌握数据操纵的各种应用
3)掌握事务处理方法
4)了解常用SQL函数的应用
二、预习内容
1)根据SQL语言实现功能的不同,Oracle数据库中的SQL语言可以分为哪几类?
2)SQL语言的特点是什么?
3)Oracle中常用的数据查询方式有哪些?
4)什么是事务?事务处理的特性有哪些?有哪两种事务处理方式?
三、实验环境
32位Windows XP/32位或64位Win7/Windows Server2003 +Oracle10g环境
四、实验内容
根据Oracle数据库scott模式下的emp表和dept表,完成下列操作。
1)查询20号部门的所有员工信息。
2)查询所有工种为CLERK的员工的员工号、员工名和部门号。
3)查询奖金(COMM)高于工资(SAL)的员工信息。
4)查询奖金高于工资的20%的员工信息。
5)查询所有工种不是MANAGER和CLERK, 且工资大于或等于2000的员工的详细信息。
6)查询没有奖金或奖金低于100的员工信息。
7)查询工龄大于或等于10年的员工信息。
8)查询员工名正好为6个字符的员工的信息。
9)查询员工姓名的第2个字母为“M”的员工信息。
10)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若月份相同则按入职的年份排序。
11)查询工资比SMITH员工工资高的所有员工信息。
12)查询所有员工的姓名及其直接上级领导的姓名。
13)查询入职日期早于其直接上级领导的所有员工信息。
14)查询所有工种为CLERK的员工的姓名及其部门名称。
15)查询平均工资低于2000的部门及其员工信息。
16)查询最低工资大于2500的各种工作。
17)查询工资高于公司平均工资的所有员工信息。
18)查询工资高于30号部门中工作的所有员工工资的员工的姓名和工资。
19)查询每个部门中的员工数量、平均工资和平均工作年限。
20)统计各个部门中各工种的人数、平均工资和最高工资。
21)查询工资高于本部门平均工资的员工的信息及其部门的平均工资。
22)查询人数最多的部门信息。
23)查询所有员工中工资排序在5-10名之间的员工信息。
24)向emp表中插入一条记录,员工名为FAN,员工号为8000,其他信息与SMITH 员工的信息相同。
25)将各部门员工的工资修改为该员工所在部门平均工资加1000。
五、实验步骤
写出每一条实验内容对应的SQL语句。
六、实验总结
本此实验中有很多的不足,这次的作业量很大,输入的SQL语句命令很多,在这我出现了很多问题,但同时也让我学会了很多。