实验五 SQL语句应用
数据库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语言还提供了更新和删除数据的功能。
SQL数据库完整实验报告
学生学号实验课成绩学生实验报告书实验课程名称企业数据库应用开课学院管理学院指导教师姓名学生姓名XXX学生专业班级人力ZY09012010 — 2011 学年第2 学期实验报告填写规范1、实验是培养学生动手能力、分析解决问题能力的重要环节;实验报告是反映实验教学水平与质量的重要依据。
为加强实验过程管理,改革实验成绩考核方法,改善实验教学效果,提高学生质量,特制定本实验报告书写规范。
2、本规范适用于管理学院实验课程。
3、每门实验课程一般会包括许多实验项目,除非常简单的验证演示性实验项目可以不写实验报告外,其他实验项目均应按本格式完成实验报告。
在课程全部实验项目完成后,应按学生姓名将各实验项目实验报告装订成册,构成该实验课程总报告,并给出实验课程成绩。
4、学生必须依据实验指导书或老师的指导,提前预习实验目的、实验基本原理及方法,了解实验内容及方法,在完成以上实验预习的前提下进行实验。
教师将在实验过程中抽查学生预习情况。
5、学生应在做完实验后三天内完成实验报告,交指导教师评阅。
6、教师应及时评阅学生的实验报告并给出各实验项目成绩,同时要认真完整保存实验报告。
在完成所有实验项目后,教师应将批改好的各项目实验报告汇总、装订,交课程承担单位(实验中心或实验室)保管存档。
附表:实验成绩考核建议观测点考核目标成绩组成实验预习1.对验证型实验,考察对实验原理与方法的预习情况2.对于综合型、设计型实验,着重考查设计方案的科学性、可行性和创新性对实验目的和基本原理的认识程度,对实验方案的设计能力20%实验过程1.是否按时参加实验2.对实验过程的熟悉程度3.对基本操作的规范程度4.对突发事件的应急处理能力5.实验原始记录的完整程度6.同学之间的团结协作精神着重考查学生的实验态度、基本操作技能;严谨的治学态度、团结协作精神30%结果分析1.所分析结果是否用原始记录数据2.计算结果是否正确3.实验结果分析是否合理4.对于综合实验,各项内容之间是否有分析、比较与判断等考查学生对实验数据处理和现象分析的能力;对专业知识的综合应用能力;事实求实的精神50%实验项目名称SQL Server的安装及操作实验者xxx 专业班级人力ZY0901同组者无实验日期2011年3月11日一、实验目的、意义1、写出SQL Server的功能与特点,使用方法,应用状况的报告。
SQL语句应用举例
SQL语句应用举例一、SELECT语句语法格式:SELECT [ALL|DISTINCT] 目标列FROM 表(或查询)[WHERE 条件表达式][GROUP BY 列名1 HA VING 过滤表达式][ORDER BY 列名2 [ASC|DESC]]功能:根据WHERE子句中的表达式,从FROM子句指定的基本表或视图中找出满足条件的记录,再按SELECT子句中的目标列显示数据。
如果有GROUP 子句,则按列名1的植进行分组,列名1值相等的记录分在一组,每一组产生一条记录。
如果GROUP子句带有HA VING短语,则只有满足过滤表达试的组才予以输出。
如果有ORDER BY子句,则查询结果按列名2的值进行排序。
1、基本部分SELECT [ALL|DISTINCT] 目标列FROM 表(或查询)说明:目标列的格式是:列名1[AS 别名1],列名2 [AS 别名2],......,列名n[AS 别名n]FROM 子句指明了想从何处查询想要的数据,可以是多个表或视图。
对SELECT语句来说,FROM是必须的,不能默认。
ALL表示查询的结果中可以包含重复的记录,是默认值;DISTINCT 表示查询结果中不能出现重复的记录,如果有相同的记录,只保留一条。
一般情况下,目标列中的列名是FROM子句中基本表或视图中的字段名。
如果FROM子句中指定了多个基本表或视图,并且列名有相同时,则列名之前应加前缀,格式为:“表明.列名”。
AS子句中用来以新的名称命名输出列。
目标列是*号表示输出所有的字段。
目标列中的列名可以是一个使用SQL库函数的表达式,常用的函数见有:例1列出表中姓名、性别、助学金情况。
SELECT 姓名,性别,助学金FROM STUDENT例2列出表中所有学生的基本的情况。
SELECT * FROM STUDENT例3查询学生人数、最低助学金、最高助学金、平均助学金。
SELECT COUNT(*) AS 人数MIN(助学金)AS 最低助学金,MAX(助学金)AS 最高助学金,A VG(助学金)AS 平均助学金FROM STUDENTS2.WHERE子句WHERE子句有双重作用:一是选择记录,输出满足条件的记录;二是建立多个表或查询之间的链接。
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语句操作数据实验时间:2013.4.16学生姓名:班级:软件学号:一、实验目的1、熟悉SQL Server 2005的基本环境2、使用对象资源管理器管理数据库、基本表、视图、索引等对象3、锻炼学生对SQL Server 2005基本操作能力二、实验内容1、使用对象资源管理器创建SPJ数据库(1)更改主数据库文件的增长模式,改为按5MB自动增长;(2)更改事务日志文件的增长模式,改为按1MB自动增长。
2、在数据库中创建S, P, J, SPJ四个关系模式:S ( SNO, SNAME, STATUS, CITY )P(PNO, PNAME, COLOR, WEIGHT)J(JNO, JNAME, CITY)SPJ(SNO, PNO, JNO, QTY)【说明:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(SNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成。
】3、建立数据库关系图。
将建好的数据库和表转化为SQL语句,以sql脚本方式保存。
4、使用对象资源管理器向表中插入下列数据。
SP表5、使用SQL语言完成如下操作:1)求供应工程J1零件的供应商号码SNO。
2)求供应工程J1零件P1的供应商号码SNO。
3)求供应工程J1零件为红色的供应商号码SNO。
4)求没有使用天津供应商生产的红色零件的工程号JNO。
5)求至少用了供应商S1所供应的全部零件的工程号JNO。
6)找出所有供应商的姓名和所在城市。
7)找出所有零件的名称、颜色、重量。
1-实验-常用SQL语句的使用
实验 常用SQL语句的使用【实验目的】1.熟悉掌握在Access中创建数据库和数据表的方法;2.熟悉掌握select语句、delete语句、insert语句、update语句的使用方法。
【实验内容】1.在Access中创建数据库开始→所有程序→Microsoft Office→Microsoft Office Access 2003,启动Access。
在右边“新建文件”窗格中,单击“空数据库”标签,打开“文件新建数据库”窗口,文件保存到“D:\学生学号”文件夹中,数据库文件名:address.mdb。
2.在address.mdb数据库中创建表tbAddress在表对象中,双击“使用设计器创建表”,打开表设计视图,创建表tbAddress结构如下图所示。
3.在表tbAddress中录入数据在表对象中,双击“tbAddress”表,打开表视图,录入tbAddress表数据如下图所示。
14.对表tbAddress完成以下SQL常用语句的操作在查询对象中,双击“在设计器视图中创建查询”,在打开的“显示表”对话框中,直接单击“关闭”按钮,在主窗口中,视图→SQL视图,打开“SQL视图”窗口,在其中输入以下SQL语句,单击“运行”按钮牛,即可查看运行结果。
①select语句的使用②insert语句的使用在tbAddress表中增加一条完整的记录(记录内容如下)Insert Into tbAddress(strName, strSex,intAge,strTel,strEmail,strIntro,dtmSubmit) Values("萌萌","女",21,"6112211"," mm@","金融系同学",#2008-8-8#)在tbAddress表中增加一条关于本人的完整的记录③delete语句使用删除自动编号字段ID等于1的用户Delete From tbAddress Where ID=1删除strName为"胡鹏"的用户Delete From tbAddress Where strName="胡鹏"④update语句使用更新strName为“萌萌”的用户的电话为"8282999",年龄为22。
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');建立课程表、插入数据。
实验5 sql语句练习——图书馆数据库答案
实验5sql语句练习——图书馆数据库实验5 sql语句练习——图书馆数据库实验目的(1)了解SQL Server数据库的逻辑结构和物理结构;(2)了解表的结构特点;(3)了解SQL Server的基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库和表;(6)学会使用T-SQL语句创建数据库和表。
(7)学会使用T-SQL语句更新数据。
(7)学会使用T-SQL语句创建多种查询。
实验准备首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。
然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。
此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。
实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。
三个表的结构如图:列名说明数据类型约束说明书号图书唯一的编号定长字符串,长度为10 主键书名图书的名称定长字符串,长度为50 空值作者图书的编著者名定长字符串,长度为30 空值出版社图书的出版社定长字符串,长度为30 空值单价出版社确定的图书的单价浮点型,Float 空值读者表结构假设有10位读者列名说明数据类型约束说明读者号读者唯一的编号定长字符串,长度为10 主键姓名读者姓名定长字符串,长度为8 非空值性别读者性别定长字符串,长度为2 非空值办公电话读者办公电话定长字符串,长度为8 空值部门读者所在部门定长字符串,长度为30 空值列名说明数据类型约束说明读者号读者的唯一编号定长字符串,长度为10 外码,引用读者表的主键书号图书的唯一编号定长字符串,长度为20 外码,引用图书表的主键借出日期借出图书的日期定长字符串,长度为8 非空值归还日期归还图书的日期定长字符串,长度为8 空值主键为:(读者号,图书号)(1)用Sql语句创建图书馆数据库Create database Lab05(2)用Sql语句创建上述3个表create table book(bookId char(10)primary key,bookName varchar(50),bookWriter varchar(30),bookPublish varchar(30),bookPrice float)create table reader(readerId char(10) primary key,readerName varchar(8)not null,readerSex char(2)not null,readerOfficeTel char(8),readerDepartment varchar(30))create table 借阅表(readerId char(10),bookId char(10),checkOutTime char(8),checkInTime char(8),primary key(readerId,bookId),foreign key (readerId) references reader(readerId),foreign key (bookId) references book(bookId),)(3)基于图书馆数据库的3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949’ALTER TABLE book ADD CONSTRAINT ISBNDEF DEFAULT ('7111085949') FOR ISBN 3)删除图书表中ISBN列增加的缺省值约束alter table book drop ISBNDEF4)删除图书表中新增的ISBN列ALTER TABLE book DROP COLUMN ISBN5)查询全体图书的图书号、书名、作者、出版社和单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书的信息,其中单价打8折,并设置该列的别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0.8) as打折价from book7)显示所有借阅者的读者号,并去掉重复行select distinct readerIdfrom 借阅表8)查询所有单价在20—30元之间的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20 and 309)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish in('机械工业出版社' , '科学出版社','人民邮电出版社') 10)查询既不是机械工业出版社、人民邮电出版社、也不是科学出版社出版的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in('机械工业出版社' , '科学出版社','人民邮电出版社') 11)查询姓名的第二个字符是’建’,并且只有2个字的读者的读者号及姓名select readerId,readerNamefrom readerwhere readerName like '_建'12)查询姓名不是以‘王’、‘张’或‘李’开头的所有读者的读者号及姓名【方式一】查询出来的结果有问题!select readerId,readerNamefrom readerwhere readerName not in ('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(select readerNamefrom readerwhere readerName like'王%'or readerName like'张%'or readerName like'李%' )13)查询无归还日期的借阅信息select book.bookId,book.bookName,reader.readerId,reader.readerName,借阅表.checkOutTime as 借书时间,借阅表.checkInTime as 还书时间from 借阅表,book,readerwhere 借阅表.bookId = book.bookIdand 借阅表.readerId = reader.readerIdand 借阅表.checkInTime is null14)查询机械工业出版社图书的平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice) as 最高价,min(bookPrice) as 最低价from bookwhere bookPublish = '机械工业出版社图书'15)查询读者的基本信息及借阅情况select reader.readerId,reader.readerName ,借阅表.bookId,book.bookName,book.bookPublishfrom reader , 借阅表,bookwhere reader.readerId = 借阅表.readerIdand book.bookId = 借阅表.bookIdand 借阅表.readerId ='1000000007'16)查询至少借阅过1本机械工业出版社出版的图书的读者的读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列select r.Rno,Rname,count(borrow.Bno) 借阅册数from borrow,b,rwhere b.bno=borrow.bno and press='机械工业出版社' and borrow.rno=r.rnogroup by r.rno,Rnameorder by count(borrow.Bno) desc17)查询与‘王小平’的办公电话相同的读者的姓名/* 使用“自连接方式”求解*/select b.readerName,b.readerId,a.readerOfficeTelfrom reader a, reader bwhere a.readerName like '王小平'and a.readerOfficeTel = b.readerOfficeTel/*18)查询所有单价小于平均单价的图书的书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select avg(bookPrice) as averagePricefrom book)19)查询‘科学出版社’的图书单价比‘机械工业出版社’最高单价还高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like '科学出版社' and bookPrice >(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')20)查询‘科学出版社’的图书中单价比‘机械工业出版社’最低单价高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')and bookPublish like '科学出版社'21)创建机械工业出版社图书的视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish = '机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者的读者号和总借阅本数CREATE VIEW CountViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2的读者号和总借阅本数CREATE VIEW 借阅统计视图ViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerIdHA VING COUNT(*) >2。
数据库 实验五
数据库实验五在学习数据库的过程中,实验是巩固理论知识、提高实践能力的重要环节。
本次实验五主要围绕数据库的某些关键操作和应用展开,通过实际动手操作,让我们对数据库的理解更加深入和全面。
本次实验的环境是常见的数据库管理系统,如 MySQL 或 SQL Server 等。
实验的目的是让我们熟练掌握数据库的查询、更新、插入和删除等基本操作,同时能够运用这些操作解决一些实际的问题。
实验的第一个任务是进行数据的查询操作。
查询是从数据库中获取所需信息的重要手段。
我们需要根据给定的条件,从数据表中筛选出符合要求的数据。
这就涉及到了使用 WHERE 子句来设定条件,以及各种运算符如等于(=)、大于(>)、小于(<)、不等于(<>)等的运用。
同时,还需要掌握连接(JOIN)操作,将多个相关的数据表连接起来,以获取更全面和准确的信息。
例如,在一个学生成绩管理系统中,要查询某个班级中数学成绩大于 80 分的学生名单,就需要先从学生表中获取班级信息,再从成绩表中筛选出数学成绩符合条件的记录,最后通过学生学号将两个表连接起来,得到最终的结果。
接下来是数据的更新操作。
这包括对已有数据的修改和删除。
在进行更新操作时,必须格外小心,因为一旦操作失误,可能会导致数据的丢失或错误。
在修改数据时,同样要使用 WHERE 子句来指定要修改的记录。
例如,要将某个学生的数学成绩从 80 分修改为 90 分,就需要明确指定该学生的学号或其他唯一标识。
而删除数据则需要更加谨慎,通常建议先进行查询,确认要删除的记录准确无误后,再执行删除操作。
数据的插入操作也是实验的重要部分。
插入新的数据可以增加数据库的信息量。
在插入数据时,需要注意数据的类型和格式要与数据表的定义相匹配。
比如,一个学生信息表中,学号是整数类型,姓名是字符串类型,出生日期是日期类型,如果插入的数据类型不正确,就会导致插入失败。
在实验过程中,我也遇到了一些问题和挑战。
比如,在进行复杂的查询操作时,由于条件设置不当,导致查询结果不准确。
数据库原理中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语句及数据
实验一:更新表数据:1.利用Insert 语句将习题中给出的示例记录插入各表。
2.利用Update更新表中的记录:①将p表中的所有红色零件的重量增加5。
update pset weight=weight+5where color=’红’②将spj表中所有天津供应商的QTY属性值减少10。
用子查询。
update spjset qty=qty-10where sno in (select sno from s where city=’天津’)3.利用Delete语句删除p表中的所有红色零件的记录。
delete from pwhere color=’红’实验二:1、完成下面的简单查询:①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
2、完成下面的连接查询a、等值连接:求s表和j表的相同城市的等值连接。
select s.*,j.*from s,jwhere s.city=j.cityb自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
select sname,jname,pnamefrom s,p,j,spjwhere s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jnoorder by s.sno,j.jno,p.pnoc、笛卡尔积:求s和p表的笛卡尔积select s.*,p.*from s,pd 、 左连接:求j 表和spj 表的左连接。
select j.*,sno,pno,qtyfrom j left outer join spj on j.jno=spj.jnoe 、 右连接:求spj 表和j 表的右连接。
select j.*,sno,pno,qty from spj right outer join j on spj.jno=j.jno注意:SQL SERVER 中的左右连接查询可用outer 也可将out 去掉,与标准SQL 不同。
实验5 SQL语言的应用
实验5 SQL语言的应用【实验目的】1.掌握SQL的基本语句的使用。
2.掌握SELECT命令的基本用法。
3. 掌握对查询的结果进行处理的方法。
【实验内容与操作步骤】设置VFP的默认工作目录为D:\EX7,并完成以下各操作,将操作结果存入D:\EX5文件夹中。
对如下各题目,写出SQL命令并运行,检查运行结果是否正确。
1、使用SQL语句实现下列功能:(1)使用CREATE TABLE命令建立如实验表5-1所示的表结构,表名为:学生成绩。
(2)使用ALTER TABLE命令,增加一个字段:性别C(2),并将“学号”的字段长度改为8。
(3)使用INSERT INTO命令,添加如下的记录。
(4)使用DELETE 删除“王庆”的记录,写出SQL命令并运行。
(5)使用UPDATE命令将所有人的“入学成绩”置为0。
2、使用SQL语句中的SELECT命令来实现下列查询:(1)查询“学生.dbf”表中全部记录,输出“学号”、“姓名”、“性别”、“出生日期”和“入学成绩”这5个字段的内容;(2)查询“学生.dbf”表中的性别为男的所有内容,并按“学号”的降序排列;(3)查询“学生.dbf”表中的全部学生中的入学最高分;(4)查询“学生.dbf”表中的数学专业和英语专业的学生的学号,姓名和专业;(5)查询“学生.dbf”表中的入学成绩在550到650之间的学生的学号,姓名和入学成绩,并按“入学成绩”的降序排序;(6)利用学生表中的数据创建一个查询,其结果包含学号、姓名、性别、出生日期、专业和入学成绩6个字段,查询结果按入学成绩由高分到低分排序,并将查询结果保存到一个“学生情况表.DBF”文件中;【思考题】请参考教材6.4.3 嵌套查询、6.4.4 多表联接查询、6.4.5查询结果输出处理做如下练习。
写出相应的SQL命令并上机运行。
(1)查询“学生.dbf”和“学生其它情况.dbf”表中的所有姓“李”的学生的学号、姓名和身份证;(2)查询“成绩.dbf”和“课程.dbf”表中的选修“计算机基础”的所有学生的学号和成绩,按“学号”的升序进行排序,并输出到TEST文件中;(3)查询“学生.dbf”、“成绩.dbf”和“课程.dbf”表中的选修“电脑文秘应用”的所有学生的学号,姓名,课名和总评(总评=(平时+期中+期末)/3);2。
数据库SQL语句实验报告
《数据库原理及应用》实验报告SQL语句部分总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。
三、实验结果:1.创建学生课程数据库create database Studend;create table S(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C :课程号课程名先行课学分Cno Cname Cpno ccreditcreate table C(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);学号课程号成绩Sno Cno grade create table SC(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。
8实验五SQL语言的数据定义与操纵功能
3.增加命令:CREATE TABLE SC(学号C(10),课程号C(2))
然后做实验教材P26开始的实验内容与步骤中的12~16。
4.增加命令:CREATE TABLE dep(系别代号C(2) ,系别名称C(。
5.关闭VFP,重新进入,设置默认目录为学号文件夹下的“p30表”子文件夹,再做照实验教材P30实验内容与步骤1~6。
6.做理论书P144“三、上机题”中的2-3题,其中的表结构自己设计。(这次实验没时间的话9实验做完再做)
最后要求将此实验报告和学号文件夹一起压缩打包交上来。
三、实验步骤及结果:
四、实验心得:
教师评语:
实验五SQL语言的数据定义与操纵功能
2010年月日
姓名:
学号:
班级:
成绩:
一、实验目的与要求:
1.熟练掌握SQL语言的数据定义功能:表的定义、删除、表结构修改。
2.熟练掌握SQL语言的数据操纵功能:数据的插入、更新、删除。
3.熟练掌握SQL语言的简单查询功能。
二、实验内容:
1.解压资料到学号文件夹,设置默认目录为学号文件夹,此时该文件夹下没有表文件,接着按顺序操作以下内容。
实习5 SQL语言的应用
实习5 SQL语句的应用一、实习目的熟练掌握用SQL对数据进行操作的方法,熟练掌握用SQL创建各种查询的方法,利用已有的数据资源,使用SQL语句进行数据定义、数据更新及各种查询操作。
二、实习要求1.使用SQL语句完成数据定义的操作2.使用SQL语句完成单表查询的操作3.使用SQL语句完成分组查询的操作4.使用SQL语句完成连接查询的操作5.使用SQL语句完成嵌套查询的操作三、实习内容实习5-1 使用SQL语句创建表“班级”。
操作步骤如下:1.在“命令”窗口中,依次输入如下命令并执行:Set default to e:\myvfpModify project 河南工程学院.pjxOpen database 河南工程学院数据库create table 班级(班级编号C(7) primary key, 班级名称C(6) not null,专业名称C(10),系编号C(3))2.在“命令”窗口中,输入如下命令可查看创建的表“班级”:use e:\myvfp\班级.dbf exclusivebrowse last实习5-2 根据已知的“学生表”,查询每位学生的姓名及出生年月。
操作步骤如下:1.打开数据库“河南工程学院数据库”,在命令窗口输入如下命令:Use e:\myvfp\学生表.dbf exclusive2.在命令窗口中,输入并执行如下命令:Select 学号,姓名,出生年月from 学生表结果如下:实习5-3 根据“学生表”查询男女学生的人数。
操作步骤如下:1.打开数据库“河南工程学院数据库”2.在命令窗口输入并执行如下命令:Select count(学号) as 人数,性别from 学生表group by 性别实习5-4 根据“学生表”和“班级表”,查询每位学生所在班级。
操作步骤如下:1.打开数据库“河南工程学院数据库”2.在命令窗口输入并执行如下命令:Select 学号,姓名,班级名称,专业名称from 学生表join 班级表on 学生表.班级编号=班级表.班级编号实习5-5 根据“学生表”和“班级表”,查询“软件工程”专业的全体学生。
实 验_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查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
SQL语句大全及实验内容
1、查询全体学生的学号和姓名。
select SNO,SN from S2、查询全体学生的所有基本信息(仅针对Student表)。
select*from S3、对SC表查询全体学生的选课记录,在显示结果中为“Grade”列增加分。
select SNO,CNO,SCORE+5 as SCORE from sc4、查询全体学生的学号和姓名,将原来的英文列名设置中文别名。
SELECT SNO as学号,SN as姓名,SEX as性别,AGE as年龄,DEPT as系别from S5、显示所有选课学生的学号,去掉重复结果。
select distinct sno from sc6、查询成绩在分以上的学生选课记录。
select*from sc where score>807、查询计算机系所有学生的学号和姓名。
select SNO,SN from s where DEPT='计算机'8、查询成绩在~分的学生选课记录。
select*from sc where score between 80 and 909、查询年龄不在~的学生记录。
select*from S where age not between 20 and 30 10、查询所有姓“李”的学生记录。
select*from S where sn like'李%'11、查询无考试成绩(成绩为空值)的学号、课程号。
select distinct sno from sc where score is null 12、查询考试成绩非空值的学号、课程号。
select sno,cno from sc where score is not null13、查询自动化系年龄小于岁的学生记录。
select*from s where dept='自动化'and age<2014、查询选修了“C1”或“C2”课程的选课记录。
计算机SQL 表的应用
实验5 表的应用一实验目的1、使用SQL语句创建表2、使用SQL语句修改表3、使用SQL语句更新表二实验内容1、创建城市银行数据库:CITYBANK,使用默认位置和大小即可。
2、创建如下银行业务表3、写出如下业务的SQL语句:(银行业务需要进行事务处理)三实验步骤1、创建城市银行数据库-----CITYBANK2、创建如下银行业务表(1)账户表Bank_Account字段名类型约束说明AccountIDPASSWORDANAMEcardidOpenDateBalanceAccountStatusATYPEChar(6)Varchar(10)Varchar(20)Varchar(18)DatetimeDecimal(20,2)Char(4)Char(4)PKNOT NULLNOT NULLUNIQUE默认值:0默认值:’激活’默认值:’普通’账户ID账户密码姓名身份证号码开户日期帐户余额账户状态账户类型字段名类型约束说明NoteNoAccountIDAmountNoteDateIntChar(6)Decimal(10,2)datetimePKFK->Account.PK存款单序号帐户ID存款金额存款日期(NoteNo Int Primary key,AccountID char(6),foreign key (AccountID) references Bank_Account(AccountID),Amount Decimal(10,2),NoteDate datetime)(NoteNo Int Primary key,AccountNo char(6),foreign key (AccountNo) references Bank_Account(AccountID), Amount Decimal(10,2),NoteDate datetime)(4)转账单表Bank_TransferNote(NoteNo Int Primary key,FROMAccountID char(6),foreign key (FROMAccountID) references Bank_Account(AccountID), TOAccountID char(6),foreign key (TOAccountID) references Bank_Account(AccountID), Amount Decimal(10,2),NoteDate datetime)(NoteNo Int Primary key,AccountID char(6),foreign key (AccountID) references Bank_Account(AccountID), NoteDate datetime,NoteComment varchar(500))3、写出如下业务的SQL语句:(银行业务需要进行事务处理)insert into Bank_Accountvalues (001001,001,'李铭',’210201222222221’,’2010-01-20,10.00’,'激活','金卡') insert into Bank_Accountvalues (001002,002,'张林',’210201222222222’,’2009-03-01’,200.00,'激活','银') insert into Bank_Accountvalues (001003,003,'刘鑫',’210201222222223’,’2008-10-10’,300.00,'激活','普') (2)存款业务:<1>李铭2010-02-20 存入2000元。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 SQL语句应用1 实验目的(1)掌握数据的插入、修改和删除操作。
(2)掌握不同类型的数据查询操作。
2 实验要求(1)利用SQL语句对图书销售系统表进行插入、修改、删除和查询操作。
3 实验步骤(1)以bs用户登录BOOKSALES数据库,将表1至表6中的数据插入到数据库的相应表中。
表1CUSTOMERS表2PUBLISHERS表3BOOKS表4ORDERSORDERITEM表5表6PROMOTION(2)将ISBN为978-7-121-18619-8的图书的零售价格(retail)修改为30。
Update books set retail=30 where isbn=’978-7-121-18619-8’;(3)将订单号为1000的订单的发货日期修改为“2013-2-2”。
Update orders set shipdate=to_date('2013-02-02','yyyy-mm-dd') where order_id=1000;(4)已知当前有一个图书表OLDPUBLISHERS,其表中数据如下:publisher_id name contact phone1 电子工业出版社李明02 机械工业出版社孙浩3 人民邮电出版社张春4 传智播客吴瑞997990请将表中的数据与PUBLISHERS中的数据进行合并。
创建表:CREATE TABLE OLDPUBLISHERS (2 publisher_id CHAR(10) PRIMARY KEY,3 name VARCHAR2(25),4 contact V ARCHAR2(25),5 phone CHAR(25))6 TABLESPACE USERS;插入数据:INSERT INTO OLDPUBLISHERS V ALUES (2,'机械工业出版社','孙浩',);INSERT INTO OLDPUBLISHERS V ALUES (3,'人民邮电出版社','张春',3449876);INSERT INTO OLDPUBLISHERS V ALUES (4,'传智播客','吴瑞',997990);合并:MERGE INTO PUBLISHERS P USING OLDPUBLISHERS O ON (P.publisher_id=O.publisher_id)WHEN MATCHED THEN UPDA TE SET=,P.contact=O.contact,P.phone=O.phoneWHEN NOT MATCHED THEN INSERTVALUES(O.publisher_id,,O.contact,O.phone);(6)列出BOOKS表中每本书的书名和出版日期,对pubdate字段使用Publication Date 列标题。
(7)列出CUSTOMERS表中每一个客户的客户号及他们所在的地址。
(8)创建一个包含各个出版社的名称、联系人及出版社电话号码的列表。
其中,联系人的列在显示的结果中重命名为Contact PersonCREATE table qwer as select name,contact "Contact Person",phone from publisher;或CREATE table qwer as select name,contact as Contact Person,phone from publisher;(9)查询下达了订单的每一个客户的客户号。
(10)查询2013年3月1日之后发货的订单。
(11)查询居住在北京或大连的客户,将结果按姓名的升序排列。
(12)列出姓“王”的作者编写的所有图书信息,并将结果按姓名降序排序。
Select * from BOOKS WHERE author LIKE ‘王%’order by title desc;(13)查询“儿童”类和“烹饪”类的所有图书。
(14)查询书名的第二个字母是“A”、第四个字母是“N”的图书SELECT * FROM BOOKS WHERE TITLE LIKE '_A%'AND TITLE LIKE '___N%';(15)查询电子工业出版社在2012年出版的所有“计算机”类图书的名称。
方法1:错误:SELECT * FROM BOOKS,PUBLISHERS WHERE PUBLISHERS.publisher_id=BOOKS.publisher_id and ='电子工业出版社'and BOOKS.pubdate=to_date(like '2012-__-__','yyyy-mm-dd') and books.category='计算机';正确:SELECT * FROM BOOKS,PUBLISHERS WHERE PUBLISHERS.publisher_id=BOOKS.publisher_id and ='电子工业出版社'and to_char(books.pubdate,'yyyy-mm-dd') like '2012%' and books.category='计算机';方法2:(16)查询图书名称、出版社名称、出版社联系人的名称和电话号码。
(17)查询当前还没有发货的订单信息及下达订单的用户名,查询结果按下达订单日期排序。
select ORDERS.order_id,,ORDERS.orderdate from ORDERS,CUSTOMERS WHERE ORDERS.customer_id=CUSTOMERS.customer_id and ORDERS.shipdate<=select to_char(sysdate,'yyyy-mm-dd')from dual order by orderdate;(18)查询已经购买了“计算机”类图书的所有人的客户号和姓名。
select CUSTOMERS.customer_id, from BOOKS,CUSTOMERS,ORDERS,ORDERITEM WHERE BOOKS.ISBN=ORDERITEM.ISBN AND ORDERITEM.ORDER_ID=ORDERS.ORDER_ID AND ORDERS.CUSTOMER_ID=CUSTOMERS.CUSTOMER_ID AND BOOKS.CATEGORY='计算机';(19)查询“王牧”购买的图书的ISBN以及书名。
SQL> SELECT BOOKS.ISBN,BOOKS.TITLE FROM BOOKS,CUSTOMERS,ORDERS,ORDERITEM WHERE CUSTOMERS.CUSTOMER_ID=ORDERS.CUSTOMER_ID AND ORDERS.ORDER_ID=ORDERITEM.ORDER_ID AND ORDERITEM.ISBN=BOOKS.ISBN AND ='王牧';(20)查询订购图书“Oracle数据库基础”的客户将收到什么样的礼品。
Select customer_id,name fromPromotion join(select customer_id,sum(quantity*retail) totalFrom order join orderitem on order.order_id=orderitem.order_idJoin book on orderitem.isbn=book.isbnWhere customer_id in(select customer_id from orders where order_id in(select order_id from orderitem where isbn=’Oracle数据库基础’))Group by customer_id)detailOn total between minretail and maxretail;(21)确定客户“张扬”订购的图书的作者。
(22)查询CUSTOMERS表中的每一个客户所下达的订单数量。
selectCUSTOMERS.customer_id,,BOOKS.TITLE,ORDERITEM.QUANTITY FROM CUSTOMERS,ORDERS,BOOKS,ORDERITEM WHERE CUSTOMERS.CUSTOMER_ID=ORDERS.CUSTOMER_ID AND ORDERS.ORDER_ID=ORDERITEM.ORDER_ID AND ORDERITEM.ISBN=BOOKS.ISBN;(23)查询价格低于同一种类图书平均价格的图书的信息。
(24)查询每个出版社出版图书的平均价格、最高价格、最低价格。
(25)统计每个客户购买图书的数量及总价钱。
(26)查询比1号订单中图书数量多的其他订单信息。
(27)查询所有客户及其订购图书的信息。
(28)查询没有订购任何图书的客户信息。
(29)查询订购金额最高的客户信息。
(30)查询名为“赵敏”的客户订购图书的订单信息、订单明细。
五、总结本次实验与大二学习的数据库知识相关,因此比较轻松,但还是遇到了不少问题,比如时间格式的“to_date”和“to_char”混淆不清,还有穿插聚集运算的夺标查询比较吃力,至今未能有效解决。