实验(5):交互式SQL--数据更新
- 格式:doc
- 大小:25.00 KB
- 文档页数:1
实验5实验项目名称:SQL的数据更新(2课时,验证)实验主要内容及方法:sql数据的插入、修改和删除实验要求:(1) 掌握sql数据插入、修改和删除语句的一般格式。
;(2) 掌握sql数据插入、修改和删除使用方法。
实验目的:熟练掌握sql数据插入、修改和删除的使用。
实验设备:装有SQL SERVER2000的电脑实验步骤:(1) 启动SQL查询分析器;(2) 选择SQL SERVER后,按确认;(3) 选择数据库;(4) 验证如下例题:实验内容:一:程序1.建立History_Student t表create table History_Student( Sno CHAR(10) primary key,Sname CHAR(10) NOT NULL,Ssex CHAR(4),Sage INT,Sdept CHAR(10));二:执行1.INSERTINTO History_StudentSELECT *FROM S;原来History_Student表为空,执行后2.UPDATE SSET Sage=22WHERE Sno=’S03’;执行前:执行后3.UPDATE SSET Sage=1+Sage;执行前:执行后:4.UPDATE scSET Grade=0WHERE ‘数学’=(SELECT SdeptFROM SWHERE S.Sno=sc.Sno); 执行前:执行后:5.DELETEFROM scWHERE Sno=’S04’AND Cno=’C02’;执行前:执行后:结果不变,原因是因为学号为s04的同学没选课号为c02的课6.DELETEFROM scWHERE '数学'=(SELECT SdeptFROM SWHERE S.Sno=sc.Sno);执行前:执行后:7.DELETEFROM sc执行前:执行后实验心得:经过此次实验,我基本掌握掌握sql数据插入、修改和删除的使用。
实验5SQL语言——更新操作命令实验5 SQL 语言——更新操作命令1实验5 S Q L 语言——更新操作命令实验示例1、INSERT 命令1.插入单个元组的INSERT 语句的格式为:INSERT [INTO] <表名> [(<属性列1>[,<属性列2>...]) VALUES (<常量1> [,<常量2>]...)(1)按关系模式的属性顺序安排值[例1] 如插入学号、姓名、年龄、性别、系名分别为'98011'、'张静'、27、'女'、'CS'的新学生。
USE JXGL GOInsert Into Student Values('98011','张静',27,'女','CS'); GO执行结果如图5-1所示。
图5-1 在查询分析器中通过INSERT 命令插入一记录(2)按指定的属性顺序,也可以只添加部分属性(非Null 属性为必须明确指定值)。
[例2] 插入学号为'98012'、姓名为'李四'、年龄为16的学生信息。
数据库原理与应用实验指导2Insert Into Student(Sno,Sname, Sage) Values('98012', '李四',16); --新插入的记录在Ssex,Sdept 列上取空值。
执行结果如图5-2所示。
图5-2 在企业管理器中通过INSERT 命令插入一记录[注意](1)从篇幅考虑,其余更新命令的执行窗口与运行状况类似于上两图,将不再列出。
(2)在INSERT 语句中,VALUES 列表中的表达式的数量,必须与表中的列数匹配,表达式的数据类型必须可以和表格中的对应各列的数据类型兼容。
如果表格中存在定义为NOT NULL 的数据列,那么该列的值必须出现在VALUES 的列表中。
实验SQL数据更新语句一、实验目的本次实验了解SQL Server 2005的启动,熟悉如何使用SSMS和5@1.建立数据库和表,并加深对于完整性的理解。
一.二、背景知识在使用数据库的过程中,接触最多的就是数据库中的表。
表是数据存储的地方,是数据库中最重要的部分,管理好表也就管理好了数据库。
表是由行和列组成的。
创建表的过程主要就是定义表的列的过程。
表的列名在同一个表中具有唯一性,同一列的数据属于同一种数据类型。
除了用列名和数据类型来指定列的属性外,还可以定义其它属性:是否为空、默认值、标识符列、全局唯一标识符列等。
约束是SQL Server提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。
在SQL Server中有5种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)x 检查约束(Check Constraint)和默认约束(Default Constraint) 0...三、实验目的加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌握掌握单个元组及多个元组的插入、修改及删除操作的实现过程加深对更新操作时数据库中数据一致性问题的了解加深对约束条件在数据更新操作执行中的作用问题的了解。
实验报告要求1、写出与上述任务相对应的SQL更新语句(实验报告上写出3、5、10的SQL语句)2、并记录在实验过程中遇到的问题、解决办法及心得体会。
五、实验内容方法一:在SSMS中插入、删除及修改数据,方法二:在查询编辑器中写SQL插入、删除及修改数据设有一个SPJ数据库,包括S, P, J, SPJ四个关系模式:S (SNO, SNAME, STATUS, CITY)dlim-S dbo. F dbo. JP (PNO, PNAME, COLOR, WEIGHT)PNAM;vardnar(2D)08L8Cbi3l(4)0WEIGm-int H□J (JNO, JNAME, CITY)列名数据类型允许空供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表1由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
实验5 数据库的更新操作二、背景知识:(1)单个数据插入语句INSERTINTO 表名 [(属性列1,属性列2 … )]VALUES (常量1 ,常量2 … )(2)成批数据插入语句INSERTINTO 表名 [(属性列1,属性列2 … )]子查询(3)删除数据语句DELETEFROM 表名WHERE 删除限定条件(4)更新数据语句UPDATE 表名SET 属性列1=常量1,属性列2=常量2...WHERE 更新限定条件三、实验内容通过企业管理器或查询分析器,对XSGL数据库,利用增删改语句,对数据库进行数据维护。
四、实验步骤1.在企业管理器中向数据库XSGL的student表加入如表5-1所示的数据表 5-1 student表记录在企业管理器中,展开“XSGL”数据库,单击“表”目录,在右面的详细窗格中,右击表“student”,在快捷菜单中选择“打开表”,并在其及联菜单上,单击“返回所有行”,将鼠标移动到空白记录上,逐字段输入各记录值,输入完后,关闭表窗口。
2.建立一个新表‘成教表’chengjiao,结构与student表相同。
CREATE TABLE chengjiao(SNO char (8) not null unique,SNAME char(10),SEX char(2),DNO char(8),AGE smallint,BIRTHDAY datetime)3.将一个新学生(学号:‘20067027’,姓名:‘张三’,年龄:20,所在系编号:‘0002’ )插入到学生表中。
INSERT INTO student(SNO,SNAME,AGE,DNO)VALUES ('20067027','张三',20,'0002')4.按如下语句插入另外两个同学的信息到成教表中INSERT INTO chengjiao(SNO,SNAME,AGE,DNO) VALUES ('20067011','王二',23,'0003')INSERT INTO chengjiao(SNO,SNAME,AGE,DNO) VALUES ('20067021','张三',19,'0003')说明:插入的数据必须符合数据库的完整性约束5.将成教表chengjiao中的所有学生一次性添加到学生表student中。
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 中数据更新的操作方法,包括插入、更新和删除数据,以及验证这些操作对数据库的影响,并观察其在实际应用中的效果和可能出现的问题。
二、实验环境1、操作系统:Windows 102、数据库管理系统:MySQL 803、开发工具:Navicat Premium 12三、实验准备1、创建数据库和表创建名为“test_database”的数据库。
在该数据库中创建“students”表,包含“id”(整数,主键,自增)、“name”(字符串)、“age”(整数)、“grade”(整数)等字段。
2、插入初始数据通过 SQL 语句向“students”表中插入若干条初始数据,例如:```sqlINSERT INTO students (name, age, grade) VALUES ('张三', 18, 90),('李四', 19, 85),('王五', 20, 95);```四、实验内容与步骤1、插入数据使用`INSERT INTO` 语句向表中插入新的记录。
示例:```sqlINSERT INTO students (name, age, grade) VALUES ('赵六', 18, 88);```观察插入数据后表中的变化。
2、更新数据使用`UPDATE` 语句修改表中已有的数据。
例如,将“张三”的年龄修改为 20:```sqlUPDATE studentsSET age = 20WHERE name ='张三';```验证更新操作是否成功。
3、删除数据使用`DELETE FROM` 语句删除表中的记录。
比如,删除年龄小于 19 岁的学生记录:```sqlDELETE FROM studentsWHERE age < 19;```查看删除操作对表的影响。
五、实验结果与分析1、插入数据成功插入新的记录,表中的数据行数增加。
精品文档试验一交互式 SQL一实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过 SQL对数据库进行操作。
3.完成作业的上机练习。
二实验工具 SQL Server 2005利用 SQL Server 2005 及其交互式查询来熟悉SQL语句。
三实验内容和要求1.在 SQLServer 2005 中建立一个数据库,进行实验所要求的各种操作,所有的 SQL操作均在建立的新库里进行;2.根据以下要求认真填写实验报告,记录所有的实验用例的SQL语言;3.1 数据定义(1)熟悉基本表的创建、修改及删除。
(2)熟悉索引的创建和删除。
3.2 数据操作(1)完成各类查询操作(单表查询,连接查询,嵌套查询)等;(2)完成各类更新操作(插入数据,修改数据,删除数据);3.3 视图的操作视图的定义(创建和删除),查询,更新(注意更新的条件)。
3.4 具体操作内容在 MS SQL Server 中创建学生-课程数据库,要求有学生表(Student)、课程表 (Course)和选课表( SC),向三个表中分别插入相关数据,再用 SQL 语句完成一下要求的查询。
1.使用 SQL 语言创建下面的三个表。
表一:学生信息表( Student)列名说明数据类型约束Sno学号字符串,长度为 10非空Sname姓名字符串,长度为 20非空Ssex性别字符串,长度为 10非空Sage年龄字符串,长度为 10非空Sdept所在系字符串,长度为 10非空表二:课程信息表( Course)列名说明数据类型约束Cno课程号整形非空Cname课程名字符串,长度为 20非空Cpno先行课整型允许为空Ccredit学分整型非空表三:学生选课信息表(SC).精品文档列名说明数据类型约束Sno学号字符串,长度为 10主码,引用 Student 的外码Cno课程号整型主码,引用 Course 的外码Grade成绩字符串,长度为 10取值 0~1002.在以上的三个表中,分别插入下面的数据;表一:学生信息表( Student)Sno Sname Ssex Sage Sdept200215121李勇男20CS200215122刘晨女19CS200215123王敏女18MA200215125张立男19IS表二:课程信息表( Course)Cno Cname Cpno Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAl 语言64表三:学生选课信息表(SC)Sno Cno Grade2002151211922002151212852002151213882002151222902002151223803.根据上面的三种表,写出完成如下查询功能的SQL 语句:(1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名(2)查询选修了课程的学生学号(3)查询年龄在 20~23 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别、年龄(4)查询计算机科学系( CS)、数学系( MA )和信息系( IS)学生的姓名和性别(5)查询以“ DB_ ”开头,且倒数第 3 个字符为 i 的课程的详细情况(6)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列(7)查询选修 1号课程的学生最高分数、最低分数、平均分数(8)查询选修了 3 门课程的学生学号(9)查询每一门课的间接先修课(即先修课的先修课)(10) 查询选修 2 号课程且成绩大于等于90 分的所有学生(11)查询与‘刘晨’在同一个系学习的学生.(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄(13)将一个新学生元组(学号: 200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18 岁)插入到Student 表中(14)将学生 200215121 的年龄改为 22 岁(15)删除学号为 200215128 的学生记录(16)建立信息系学生的视图(17)在信息系学生的视图中找出年龄小于20 岁的学生(18)将信息系学生视图 is_Student中学号为200215122的学生姓名改为“刘辰”四实验报告4.1 实验环境:Windows XPMicrosoft SQL server Management Studio 20054.2 实验内容与完成情况:(1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名SELECT Sname NAME, 'Year of Birth:'BIRTH , 2004 - Sage BIRTHDAY , LOWER( Sdept ) DEPARTMENT FROM Student;(2)查询选修了课程的学生学号SELECT DISTINCT Sno FROM SC ;(3)查询年龄在20~23 岁(包括20 岁和 23 岁)之间的学生的姓名、系别、年龄SELECT Sname , Sdept , Sage FROM Student WHERE Sage BETWEEN 20 AND 23 ;(4)查询计算机科学系(CS)、数学系( MA )和信息系(IS)学生的姓名和性别SELECT Sname , Ssex FROM Student WHERE Sdept IN( 'CS' , 'MA' , 'IS' );(5)查询以“ DB_ ”开头,且倒数第 3 个字符为i 的课程的详细情况.SELECT * FROM Course WHERE Cname LIKE 'DB\_%__'ESCAPE'\' ;(6)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列SELECT * FROM Student ORDER BY Sdept , Sage DESC;(7)查询选修 1号课程的学生最高分数、最低分数、平均分数SELECT MAX( Grade ) MAX, MIN ( Grade ) MIN , AVG( Grade ) AVG FROM SC WHERECno = '1' ;(8)查询选修了 3 门课程的学生学号SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)> 3;(8))查询每个学生及其选修课程的情况SELECT Student. Sno , Sname , Ssex , Sage , Sdept , Cno , Grade FROM Student, SC WHERE Student. Sno = SC. Sno ;(9)①查询每一门课的间接先修课(即先修课的先修课)SELECT first. Cno , second . Cpno FROM Course first, Course secondWHERE first. Cpno =second . Cno ;②查询每一门课的间接先修课(即先修课的先修课)(消除有空的行)SELECT first. Cno , second . Cpno FROM Course first, Course secondWHERE first. Cpno =second . Cno and second . Cpno is not null;(10) 查询选修 2 号课程且成绩大于等于90 分的所有学生① select Student . Sno , Sname , Ssex , Sage , Sdept from Student, SC whereStudent . Sno =SC. Sno and Cno = '2'and Grade>= 90 ;② select Sno , Sname , Ssex , Sage , Sdept from Student where Sno =( select Snofrom Sc where Cno ='2'and grade>= '90' );.(11)查询与‘刘晨’在同一个系学习的学生①select Sno , Sname , Sdept from Student where Sdept in ( select Sdept fromStudent where Sname =' 刘晨 ' );②select S1 . Sno , S1 . Sname , S1 . sdept from Student S1, student S2whereS1 . Sdept=s2 . Sdept and S2. Sname = ' 刘晨 ' ;③select Sno , Sname , Sdept from Student where Sdept=( select Sdept from student where Sname =' 刘晨 ' );④select Sno , Sname , Sdept from Student S1 where exists( select* from StudentS2 where S2 . Sdept= S1 . Sdept and S2. Sname = ' 刘晨 ' );(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄①s electSname , Sage from Studentwhere Sage <all( select Sage from Student where Sdept = 'CS' )and Sdept <> 'CS' ;②s electSname , Sage from Studentwhere Sage <( select min ( Sage ) from Student where Sdept ='CS' )and Sdept <> 'CS' ;(13)将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18 岁)插入到 Student 表中insert into Student( Sno , Sname , Ssex , Sdept, Sage )values( '200215128',' 陈冬' ,'男' ,'IS' ,'18');select* from Student;(14)将学生 200215121 的年龄改为 22 岁update Student set Sage = '22'where Sno = '200215121';select* from Student;.(15)删除学号为 200215128 的学生记录delete from Student where Sno = '200215128';select* from Student;(16)建立信息系学生的视图create view is_Student as select Sno , Sname , Sage from Student whereSdept ='IS' ;(17)在信息系学生的视图中找出年龄小于20岁的学生select Sno , Sage from is_Student where Sage < 20 ;(18 )将信息系学生视图is_Student中学号为200215122的学生姓名改为“刘辰”update is_Student set Sname = ' 刘辰 ' where Sno ='200215122';select* from is_Student;(19 )删除信息系学生视图is_Student中学号为200215125的记录delete from is_Student where Sno = '200215125';select* from is_Student;4.3 出现的问题:在写第( 9)个查询功能的时候用select o,second.Cpno from Course first,Course second where first.Cpno=o;这句 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的课程的名称。
查询所有课程名称中含有“算法”的课程编号。
查询所有选课记录的课程号。
统计所有老师的平均工资。
SQL实验四_SQL的数据更新第一篇:SQL实验四_SQL的数据更新实验四、数据更新1、实验目的熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、更新、删除操作。
2、实验内容λ在本实验中,主要内容是如何用SQL语句对数据进行更新。
λ使用INSERT INTO语句插入数据,包括插入一个元组或将子查询的结果插入到数据库中两种方式。
λ使用UPDATE语句可以修改指定表中满足WHERE子句条件的元组,有三种修改的方式:修改某一个元组的值;修改多个元组的值;带子查询地修改语句。
λ使用DELETE语句删除数据:删除某一个元组的值;删除多个元组的值;带子查询地删除语句。
3、实验步骤在数据库University_Mis上按下列要求进行数据更新。
(1)使用SQL语句向Students表中插入元组(Sno:S78;Sname:李迪;Semail:***********.cn;Scredit:0;Ssex:男)。
(2)对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入。
(3)在Students表中使用SQL语句将姓名为李迪的学生的学号改为S70。
(4)在Teachers表中使用SQL语句将所有教师的工资加500元。
(5)将姓名为刘华的学生的课程“数据库原理及其应用”的成绩加上6分。
(6)在Students表中使用SQL语句删除姓名为李迪的学生信息。
(7)删除所有选修课程JAVA的选修课记录。
(8)对Courses表做删去学分<=4的元组操作,讨论该操作所受到的约束。
第二篇:实验四SQL语言实验四 SQL语言——数据更新操作2007-06-16 01:12:44|分类:课程作业 |标签:数据更新操作sql 语言|字号大中小订阅实验四 SQL语言——数据更新操作三、实验条件与环境1.通用PC机2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台 3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)4.最好有一台公用的SQL Server 2000 服务器四、实验目的1.通过上机实验进一步加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌握2.通过上机实验掌握单个元组插入操作的实现过程3.通过上机实验掌握多个元组插入操作的实现过程4.通过上机实验掌握单个元组修改操作的实现过程5.通过上机实验掌握多个元组修改操作的实现过程6.通过上机实验掌握单个元组删除操作的实现过程7.通过上机实验掌握多个元组删除操作的实现过程8.通过上机实验加深对更新操作时数据库中数据一致性问题的了解9.通过上机实验加深对约束条件在数据更新操作执行中的作用问题的了解五、实验要求1.本实验所有实验内容要求在规定时间(2课时)内完成2.实验内容中涉及到的各更新操作均通过SQL语言来实现3.本实验中各操作内容的执行均会更新当前数据库,为便于下一实验内容的顺利执行,请在每成功完成一个实验内容后重新导入初始状态下的实验数据库4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交六、实验内容:1.在S表中插入元组“s6,华誉,402.在J表中插入元组“j8,传感器厂”3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库4.将P表中PNO值为p6的元组的color属性值改为绿,weight 属性值改为605.将SPJ表中前4个元组的qty属性值统一修改为3006.将S表中city属性名含有“京”或“津”的相应status属性值增加1007.将供应商s2为“一汽”工程项目所供应的零件数量修改为20008.将全部红色零件的颜色修改为浅红色9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列上填上实验当时的日期和时间11.删除所在城市为“广州”的供应商记录12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数据信息七、实验总结:数据更新操作(插入操作[INSERT]、修改操作[UPDATE]、删除操作[DELETE])是关系数据库系统中一种极为重要、数据更新能力强、使用灵活的数据操纵方式,此数据操作的使用不是完全独立的,而是和数据定义操作、数据查询操作有着紧密联系的。
实验五SQL语言-数据更新操作报告SQL(结构化查询语言)是一种被广泛使用的关系型数据库管理系统查询和编程语言,可以用来操纵数据和其他数据库对象的结构和内容。
本实验采用SQL语言进行对关系型数据库表中的数据更新操作,经过实验室所做操作、实验结果、验证和总结,最终更新操作成功。
实验内容:1. 使用查询语句检查关系表: 首先使用“SELECT * FROM table_name”这样的语句检查表中的内容,确定需要更新的信息,以及数据的形式等。
这样可以确保编写更新语句时,能够正确地更新所需的信息。
2. 编写更新语句: 将检查的结果作为基础,用“UPDATE table_name setcolumn_name = value”这样的语句来修改表中数据项的值,确认这些修改后的值是符合要求的。
3. 在SQL Shell中运行更新语句: 将上述步骤得到的更新语句复制到SQL Shell中,运行,并检查结果。
4. 更新操作验证: 更新操作完成后,应在SQL Shell中通过“SELECT * FROMtable_name”这样的语句,对关系表中的数据项进行再次检查,以确认更新操作的正确性。
5. 总结实验: 通过上述步骤,在关系型数据库表中进行了更新操作,运用了SQL语言相关的操作,并能够准确高效的完成数据更新。
本次实验使用SQL语言进行对关系型数据库表中的数据更新操作,通过查询语句、编写更新语句、在SQL Shell中运行语句、更新操作验证和总结实验等步骤,最终成功地实现了数据更新操作。
这也体现出SQL语言在数据库操作中的强大功能,也让我们对关系型数据库的操作更加熟悉,更能巧妙的应用在各种场合里。
实验(五)、交互式SQL(4)—数据更新
一、实验目的和注意事项
实验目的:熟悉插入、修改和删除SQL 语句的用法
注意事项:对于INSERT 语句,要求理解默认值约束、非空约束在插入时所起的作用。
二、实验内容
(1) 使用INSERT 语句在数据库的表中插入记录。
(2) 使用UPDATE语句修改某个数据。
(3) 使用DELETE 语句删除某行记录。
三、实验步骤(在实验报告中记录每个查询的SQL语句)
①向表Students 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。
②向SC 表中添加一个学生的选课记录,学号为0601001,所选的课程号为C2。
SC表中有Sno、Cno、Grade 这3 个列。
这里只知道学号和课程号,不知道成绩值。
③向表Students 中插入(0601002,张修雨,default)记录,该记录的数据中default 表示默认值‘男’,其他数据为空值。
④用CREATE 语句建立表StudentBAK1,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向StudentBAK1 添加Students 表中的计算机系学生的学号、姓名、所在系的信息。
⑤用SELECT…INTO 语句实现把Students 表中1986 年后(包含1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2。
⑥将Students表中姓名为【赵林】的同学所在系改为【机电】,爱好改为【足球】。
⑦将选修了课程名为【数据库原理】并且有成绩的学生成绩加5 分。
⑧将StudentCourse 数据库的StudentBAK1 表中所有姓赵的同学删除。
⑨删除机电系课程成绩不及格或者没有登记成绩的学生选课记录。
⑩将StudentCourse 数据库的StudentBAK2 表中的所有行删除。