SQL实验报告

合集下载

sql数据库实验报告

sql数据库实验报告

sql数据库实验报告目录1. 实验概述 (2)1.1 实验目的 (2)1.2 实验背景 (3)1.3 实验内容 (4)1.4 实验环境 (5)2. 数据库设计 (5)2.1 数据库概念 (6)2.2 表结构设计 (8)2.2.1 表1名称及字段定义 (9)2.2.2 表2名称及字段定义 (10)2.3 关系约束 (11)3. SQL语句操作 (12)3.1 数据插入 (13)3.2 数据查询 (14)3.2.1 根据条件查询 (15)3.2.2 聚合函数查询 (16)3.2.3 连接查询 (17)3.3 数据更新 (18)3.4 数据删除 (20)4. 实验结果展示 (21)4.1 SQL语句执行结果 (22)4.2 数据分析及解释 (22)4.2.1 查询结果的意义 (24)4.2.2 数据之间的关系性分析 (24)5. 实验总结与展望 (25)5.1 实验总结 (26)5.2 总结得到的经验与教训 (27)5.3 进一步研究建议 (29)1. 实验概述本实验旨在通过实践操作,实验内容涵盖了常见数据库操作,包括表创建、数据插入、查询、修改和删除。

通过完成实验,我们将学习如何使用SQL语句来管理和处理数据库数据,掌握常用的 SELECT、INSERT、UPDATE、DELETE 语句以及 JOIN 操作等,并熟悉数据库的操作流程和概念。

本实验旨在提升 SQL 数据库操作技能,并为后续更深入的数据库学习和应用打下基础。

您可以根据实际实验内容对以上段落进行修改和完善,具体修改点包括:明确实验的主题和目标,例如:实验主题可能是某个特定数据库管理系统(如MySQL、PostgreSQL等)的应用,目标可能是学习该数据库特定的功能特性。

1.1 实验目的本次实验旨在通过实际操作,验证和巩固SQL语言在关系型数据库管理中的应用能力,并加深对数据库设计、数据操作以及数据查询与分析的理解。

具体实验目的包括:学习SQL基础:掌握SQL语言的基本语法和常用命令,包括数据类型定义、表格创建、插入、更新和删除操作。

大一sql数据库实验报告

大一sql数据库实验报告

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

在大一的数据库课程中,我们学习了SQL语言的基本语法和常用操作,通过实验来巩固和应用所学知识。

本篇实验报告将对我在大一SQL数据库实验中的学习和实践进行总结和归纳。

二、实验内容本次实验主要涉及以下内容:1. 创建数据库和表:使用CREATE语句创建数据库和表,定义表的结构和字段。

2. 插入数据:使用INSERT语句向表中插入数据,测试数据的正确性和完整性。

3. 查询数据:使用SELECT语句查询数据库中的数据,包括条件查询、排序和限制查询结果数量等。

4. 更新数据:使用UPDATE语句更新表中的数据,修改指定字段的值。

5. 删除数据:使用DELETE语句从表中删除数据,删除指定条件的记录。

6. 数据库连接:使用JOIN语句实现多表连接查询,关联不同表中的数据。

7. 数据库事务:使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句实现事务的管理和控制。

三、实验过程和结果1. 创建数据库和表我使用CREATE DATABASE语句创建了一个名为“学生管理”的数据库。

然后,我在该数据库中创建了两个表,分别是“学生信息表”和“课程信息表”。

学生信息表包括学生ID、姓名、年龄和性别等字段,课程信息表包括课程ID、课程名称和学分等字段。

2. 插入数据接下来,我使用INSERT INTO语句向学生信息表和课程信息表中插入了一些测试数据,包括学生的基本信息和课程的相关信息。

插入数据后,我使用SELECT语句确认数据的插入是否成功,并验证了数据的完整性和准确性。

3. 查询数据我使用SELECT语句进行了多种查询操作,包括条件查询、排序和限制查询结果数量等。

例如,我使用WHERE子句实现了根据学生姓名和课程名称进行查询的功能;使用ORDER BY子句对查询结果按照指定字段进行排序;使用LIMIT子句限制查询结果的数量。

数据库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实验报告__数据库的基本操作

数据库SQL实验报告__数据库的基本操作

数据库SQL实验报告__数据库的基本操作一、实验目的1.理解数据库SQL语言的基本操作;2.学会使用数据库SQL语言进行数据的增删改查操作。

二、实验环境1. 操作系统:Windows 10;2.数据库管理系统:MySQL;3. 开发工具:Navicat for MySQL。

三、实验内容本次实验主要涉及数据库的基本操作,包括创建数据库、创建数据表、插入数据、更新数据、删除数据以及查询数据等。

1.创建数据库步骤一:打开Navicat for MySQL,并点击左上角的“新建连接”按钮;步骤二:填写连接信息,包括主机、端口、用户名和密码,并点击“连接”按钮;步骤三:点击“新建数据库”按钮,填写数据库的名称,并点击“确定”按钮。

2.创建数据表步骤一:在已连接的数据库上点击右键,选择“新建数据表”;步骤二:填写数据表的名称,并点击“确定”按钮;步骤三:填写数据表的字段信息,包括字段名、数据类型、长度、索引、主键等,并点击“确定”按钮。

3.插入数据4.更新数据5.删除数据6.查询数据步骤一:在数据表上点击右键,选择“查看数据”;步骤二:在弹出的查询窗口中填写查询条件,并点击“确定”按钮。

四、实验结果通过以上基本操作,成功创建了一个数据库,并在数据库中创建了一个数据表。

插入了一条数据,并成功地更新和删除了数据。

最后,使用查询操作查看了数据库中的数据。

五、实验总结通过本次实验,我深入了解了数据库SQL语言的基本操作,学会了使用数据库SQL语言进行数据的增删改查操作。

在实验过程中,我发现通过SQL语句进行数据库操作更加灵活、方便且高效。

还学会了使用Navicat for MySQL这样的数据库管理工具,提高了数据库的操作效率。

通过实验,我对数据库的基本原理和操作有了更深入的了解,为日后的数据库开发和管理打下了坚实的基础。

sql 实验报告

sql 实验报告

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

在本次实验中,我们学习了SQL的基本语法和常用操作,并通过实际案例进行了实践。

本文将介绍实验过程、实验结果以及对SQL的个人理解和感悟。

实验过程在实验过程中,我们首先学习了SQL的基本语法,包括创建表、插入数据、查询数据、更新数据和删除数据等操作。

然后,我们使用MySQL数据库管理系统进行实验。

通过编写SQL语句,我们创建了一个名为"Employees"的表,并插入了一些员工数据。

接着,我们进行了各种查询操作,如按条件查询、排序、聚合等。

最后,我们还学习了如何更新和删除数据。

实验结果通过实验,我们成功创建了一个名为"Employees"的表,并插入了一些员工数据。

我们可以通过查询语句获得特定条件下的员工信息,如按照年龄查询、按照性别查询等。

我们还学习了如何对数据进行排序,以及如何使用聚合函数计算平均值、最大值和最小值等。

此外,我们还学习了如何使用UPDATE语句更新数据和使用DELETE语句删除数据。

个人理解和感悟通过这次实验,我对SQL的基本语法和操作有了更深入的理解。

SQL作为一种强大的数据库查询语言,可以方便地对关系型数据库进行管理和操作。

通过编写SQL语句,我们可以轻松地实现各种复杂的查询和数据操作。

SQL的语法简洁明了,易于学习和使用。

它提供了丰富的功能和灵活的操作方式,能够满足不同场景下的需求。

在实验过程中,我发现SQL的语法规则十分严格,一旦出现语法错误,就无法正确执行查询或操作。

因此,我在编写SQL语句时更加注重细节,避免出现错误。

同时,我也学会了如何优化SQL语句,提高查询效率。

通过使用索引和合理设计表结构,我们可以加快查询速度,提升系统性能。

此外,我还了解到SQL在实际应用中的广泛性和重要性。

无论是企业的数据管理还是个人的数据分析,SQL都扮演着重要的角色。

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

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

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

SQL数据库实验报告实验二

SQL数据库实验报告实验二

SQL数据库实验报告实验二第一篇:SQL数据库实验报告实验二实验2SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。

(2)掌握使用SQL Server管理平台对数据库进行管理的方法。

(3)掌握使用Transact-SQL语句对数据库进行管理的方法。

2.实验内容及步骤(1)在SQL Server管理平台中创建数据库。

① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。

② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。

在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。

(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。

(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。

指定“最大文件大小”为5MB。

修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。

(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。

然后通过系统存储过程sp_helpdb查看系统中的数据库信息。

(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE 修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。

(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。

(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。

(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。

SQL数据库实验报告

SQL数据库实验报告

一、实验名称:带条件查询二、日期三、实验目的和内容(这是实验报告极其重要的内容。

)1.SQL Server工具的环境和使用;2.利用SELECT语句实现简单的查询需求;3.掌握使用逻辑操作符来抽取基于多个满足条件的记录4.掌握使用范围操作符、列表操作符、模式匹配操作符、为空操作符来抽取满足条件的记录的方法5.掌握使用ORDER BY 从句来以特定的顺序抽取数据的方法6.掌握使用TOP 关键字仅抽取行的前面集合7.掌握使用DISTINCT 关键字消除重复行四、实验过程及结果(给出实验主要的步骤和实验结果,包括算法或代码)1.SELECT EmployeeID,Rate,rank()OVER(ORDER BY Rate desc)AS RANK FROM HumanResources.EmployeePayHistory2.SELECT EmployeeID,Rate,dense_rank()OVER(ORDER BY Rate desc)AS rankFROM HumanResources.EmployeePayHistory3. SELECT Title,convert(char(10),HireDate,2)As'Hire Date'FROM HumanResources.Employee4. SELECT EmployeeID,upper(Title)AsDesignation,datediff(yy,Birthdate,getdate())As AgeFROM HumanResources.Employee WHERE Title='Marketing Manager'OR Title='Marketing Specialist'5.SELECT EmployeeID,EndDate FROM HumanResources.EmployeeDepartmentHistory WHERE EndDate IS NULL6.SELECT EmployeeID,Title,LoginID FROM HumanResources.Employee WHERE Title IN('Recruiter','Stocker')7.SELECT DISTINCT Title FROM AdventureWorks.HumanResources.Employee WHERE Title LIKE'PR%'五、实验体会(包括有疑问的)这次实验,我了解了.SQL Server工具的环境和使用,学习了使用逻辑操作符来抽取基于多个满足条件的记录.,以及使用范围操作符、列表操作符、模式匹配操作符、为空操作符来抽取满足条件的记录的方法使用ORDER BY 从句来以特定的顺序抽取数据的方法等等。

SQL实训总结(共5篇)

SQL实训总结(共5篇)

SQL实训总结(共5篇)第一篇:SQL实训总结SQL实训总结为期五天的实习,很快就过去了,让我重新了解了丰富多彩的编程生活,感受到了学习的快乐,也感觉到了许许多多的专业问题,亲身体验了窗体与工程制成之后的喜悦之情。

在实训期间,我学到了许多东西,遇到了一些困难,也看到了自己本身存在着许多问题。

这次实训给我带来了危机感和压迫力,让人警醒,更加清楚自己的水平和重量,心里总有种被大石头压着的无力感,但是又凭着一种坚持,奋力的抗争着。

所以也得出个结论,那就是——我得好好好好的努力啊。

这已经是我们的第四次实训了,在我进入大学的这两年多里,或多或少的学到了一些专业的东西。

我知道自己很爱玩,于是为了能够提高锻炼自己,我把本次为期一周的VB、SQL制作实训看作是一个通向社会,通向我的工作岗位的“理论与实践相结合的桥梁”。

在本周的实训和学习,我一直知道此次实训的目的,也知道我自己的目的,同时也清楚目前自己的不足——缺乏相应的知识与经验,对所学的专业知识不能够很好地运用于实践操作,所以我是认真的对待这次实训的。

在这次实训中,我也有许多收获。

首先,我体会到了作为一个VB 设计师,不会将VB与SQL结合的痛苦和尴尬;然后,我发现了很多以前都不曾注意到的细节;其次,在实训中,我对作为一名编程者应该学习的内容做了一个更深层次的理解;最后,我还从这次实训中看到了自己很他人的差距,危机意识增强,为了不使这个差距拉大,甚至赶上前面的同学,我会努力的。

本次实训,给我最深刻、最刻骨铭心的感觉就是累,不仅每天白天要一整天对着一台机器,而且到了晚上还要对着这台机器来一个法式的“秉烛夜谈”,可惜的是没有浪漫的事前发生,我也只是对牛谈情而已,不似李白的“举杯邀明月,对影成三人”啊,我就和一部会说话的机器唧唧歪歪。

我时常想,以后的日子里,如果我成为了一名编程师也会是这样吗?好像很无聊的样子啊。

好动的我一定坐不住吧。

可是,我也知道,为了衣食父母,为了生存,为了未来,现在我还没有任何的资格想这个问题,时间不对,而现在最最应该想的是——我要怎样成为一个顶级的编程师。

SQL数据库实验报告

SQL数据库实验报告

SQL数据库实验报告学号:1207300122姓名:罗金雄专业班级:计网121班指导老师:顾平成绩:广西大学2014 数据库原理实验报告实验一 sql server的安装及环境介绍实验目的1. 掌握sql server 服务器的安装方法(安装版本为sql server 2012)。

2. 了解sql server 服务器的环境实验要求1. 完成sql server的安装、启动。

实验内容安装sql server。

实验步骤(1)下载sql server2012集成包并解压,运行后出现“sql server安装中心”。

在左侧的目录树中选择“安装”。

(2)在右侧的选择项中,选择第1项目“全新安装或向现有安装添加功能”,然后就进入了安装程序。

(3)输入产口密钥,许可条款,安装程序支持文件。

(4)接下来,才是正式安装sql server程序。

这个步骤看起来跟刚才在准备过程中的一样,都是扫描本机,防止在安装过程中出现异常。

现在并不是在重复刚才的步骤,从下图明显看出这次扫描的精度更细,扫描的内容也更多。

(5)功能选择。

勾选全部的安装组件,方便以后使用。

(6)实例配置。

我们这里安装一个默认实例。

(7)服务账户配置。

(8)数据库引擎配置。

(9)之后的配置无需改动,一路下一步即可,等待安装成功。

请你练习1. 如果在安装时设置身份验证模式为混合模式,那sql server默认生成的系统管理员账户名是?答:系统管理员账户名sa2. sql server 2008中有哪几种身份验证模式?答:windows身份、sqlserver和windows身份验证模式3.什么是实例、默认实例和命名实例?在一台计算机上是否可以安装多个实例?答:“实例”,就是一个sql server 数据库引擎。

一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同。

“命名实例”就是自己使用这自己命名的事例。

客户端连接命名实例时,必须使用以下计算机名称与命名实例的实例名组合的格式。

数据库sql 实验报告

数据库sql 实验报告

数据库sql 实验报告数据库SQL 实验报告一、引言数据库是计算机科学中的一个重要概念,它用于存储和管理大量的数据。

SQL (Structured Query Language)是一种用于访问和操作数据库的标准语言。

本实验旨在通过实际操作,加深对数据库和SQL的理解,并掌握基本的SQL语句。

二、实验目的1. 熟悉数据库的基本概念和原理;2. 掌握SQL的基本语法和常用操作;3. 实践数据库设计和数据查询。

三、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行。

四、实验过程与结果1. 数据库创建和表设计首先,我们创建一个名为"students"的数据库,并在其中创建一个名为"grades"的表。

表中包含学生姓名、学号、科目和成绩等字段。

2. 数据插入接下来,我们向"grades"表中插入一些数据,以模拟学生成绩的记录。

通过使用INSERT INTO语句,我们可以将数据插入到表中。

3. 数据查询在数据库中,查询是最常用的操作之一。

我们可以使用SELECT语句来实现对数据的查询。

例如,我们可以查询某个学生的成绩,或者按照科目进行排序等。

4. 数据更新有时候,我们需要对已有的数据进行更新。

使用UPDATE语句可以实现对表中数据的修改。

例如,我们可以将某个学生的成绩从80分修改为90分。

5. 数据删除当某个数据不再需要时,我们可以使用DELETE语句将其从表中删除。

例如,我们可以删除某个学生的成绩记录。

六、实验总结通过本次实验,我对数据库和SQL有了更深入的理解。

数据库作为存储和管理大量数据的工具,为我们提供了方便快捷的数据操作方式。

SQL作为一种标准语言,具备强大的数据查询、更新和删除功能。

在实验过程中,我学会了创建数据库和表,插入数据,进行数据查询、更新和删除等基本操作。

然而,数据库和SQL的学习仅仅是一个开始。

在实际应用中,我们还需要了解更多高级的数据库概念和技术,如索引、事务处理和数据备份等。

SQL查询实验报告

SQL查询实验报告

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

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

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

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

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

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

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

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

sql查询实验报告

sql查询实验报告

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

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

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

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

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

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

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

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

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

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

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

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

SQL实验报告

SQL实验报告

实验四触发器实验(一)after 触发器(1)在lineitem表上定义一个after触发器,当修改列项目extendedprice discount tax时,要把orders表的totalprice一起修改,以保证数据一致性CREATE TRIGGER trig_lineitem_price_update on lineitemfor updateasbeginif (UPDATE(extendedprice) or UPDATE(tax) or UPDATE(discount))begin--声明游标变量指向inserted表declare cursor_inserted cursor read_onlyfor select orderkey,linenumber,extendedprice,discount,tax from inserted -- 声明变量获取查找信息declare orderkey int,linenumber int,extendedprice real,discount real,tax real-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted into orderkey,linenumber,extendedprice,discount,tax while FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare new_totalprice realselect new_totalprice=extendedprice*(1-discount)*(1+tax)--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=new_totalprice where orderkey=orderkey fetch next from cursor_inserted into orderkey,linenumber,extendedprice,discount,tax enddeallocate cursor_insertedendend(2)在lineitem表上定义一个after触发器,当增加一项订单明细时,自动修改orders表的totalprice,以保证数据一致性CREATE TRIGGER trig_lineitem_price_insert on lineitemfor insertasbegin--声明游标变量指向inserted表declare cursor_inserted cursor read_onlyfor select orderkey,linenumber,extendedprice,discount,tax from inserted-- 声明变量获取查找信息declare orderkey int,linenumber int,extendedprice real,discount real,tax real-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted into orderkey,linenumber,extendedprice,discount,tax while FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare new_totalprice realselect new_totalprice=extendedprice*(1-discount)*(1+tax)--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=totalprice+new_totalprice where orderkey=orderkeyfetch next from cursor_inserted into orderkey,linenumber,extendedprice,discount,tax enddeallocate cursor_insertedend(3) 在lineitem表上定义一个after触发器,当删除一项订单明细记录时,自动修改orders表的totalprice,以保证数据一致性CREATE TRIGGER trig_lineitem_price_delete on lineitemfor deleteASbegin--声明游标变量指向deleted表declare cursor_deleted cursor read_onlyfor select orderkey,linenumber,extendedprice,discount,tax from deleted -- 声明变量获取查找信息declare orderkey int,linenumber int,extendedprice real,discount real,tax real-- 打开游标open cursor_deleted-- 读取游标fetch next from cursor_deleted into orderkey,linenumber,extendedprice,discount,tax while FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare new_totalprice realselect new_totalprice=extendedprice*(1-discount)*(1+tax)--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=totalprice-new_totalprice where orderkey=orderkeyfetch next from cursor_inserted into orderkey,linenumber,extendedprice,discount,tax enddeallocate cursor_insertedend(4)验证update触发器--查看号订单的totalpriceselect * from orders where orderkey=1830;--查看明细表的相关信息select * from lineitem where orderkey=1830 and linenumber=1;--验证update触发器update lineitem set tax=tax+0.05 where orderkey=1830;(二)instead of 触发器(1)在lineitem表上定义一个instead of update触发器,当修改明细表中的数量quantity 时,应先检查供应表partsupp的availqty是否足够,不足够则拒绝执行,否则执行并修改相应数值以保证数据一致性由于instead of触发器更新某个表会使得该表上其他不满足更新列不能更新,因此逆向思维使用after触发器实现相同效果即先更新quantity,再比较availqty,如果满足更新数量,就修改partsupp表的availqty,如果不满足,则把lineitem的quantity更新之后的数据重新修改回来create trigger trig_lineitem_quantity_update on lineitemfor updateasbeginif UPDATE(quantity)begin--声明游标变量分别指向inserted表和deleted表declare cursor_inserted cursor read_only forselect orderkey,partkey,suppkey,linenumber,quantity from inserted declare cursor_deleted cursor read_only for select quantity from deleted-- 声明变量获取查找信息declare quantity_diff_lineitem int,quantity_partsupp intdeclare suppkey int,partkey int,orderkey int,linenumber int ,qty_inserted int ,qty_deleted int-- 打开游标open cursor_insertedopen cursor_deleted-- 读取游标数值赋给变量fetch next from cursor_insertedinto orderkey,partkey,suppkey,linenumber,qty_insertedfetch next from cursor_deleted into qty_deletedwhile fetch_status=0begin--计算订单明细修改时,订购数量的变化值inserted表项-deleted表项select quantity_diff_lineitem=qty_inserted-qty_deleted--从partsupp表获取availqty值,注意partsupp表的主键为(partkey,suppkey)select quantity_partsupp=availqty from partsuppwhere suppkey=suppkey and partkey=partkey-- 开始判断beginif quantity_diff_lineitem=0print '更新的数量和原表中的值相同,不需要更新'else if quantity_diff_lineitem<=quantity_partsuppbeginupdate partsupp set availqty=availqty-quantity_diff_lineitemwhere suppkey=suppkey and partkey=partkeyprint '两个表都更新成功'endelsebeginupdate lineitem set quantity=quantity+quantity_diff_lineitemwhere orderkey=orderkey and linenumber=linenumberprint '更新失败'endendfetch next from cursor_insertedinto orderkey,partkey,suppkey,linenumber,qty_insertedfetch next from cursor_deleted into qty_deletedenddeallocate cursor_inserteddeallocate cursor_deletedendend(2)在lineitem表上定义一个instead of insert触发器,当插入明细表中一条记录时,应先检查供应表partsupp的availqty是否足够quantity的数量create trigger trig_lineitem_quantity_insert on lineiteminstead of insertasbegin--声明游标变量指向inserted表declare cursor_inserted cursor read_only forselect orderkey,partkey,suppkey,linenumber,quantity from inserted-- 声明变量获取查找信息declare quantity int,availqty int, suppkey int,partkey int,orderkey int,linenumber int-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted intoorderkey,partkey,suppkey,linenumber,quantitywhile FETCH_STATUS=0begin--为变量赋值select availqty =availqty from partsuppwhere suppkey=suppkey and partkey=partkeyif quantity<=availqty --如果可以更新begin/*将inserted表中的记录插入到明细表*/insert into lineitem select * from insertedwhere orderkey=orderkey and linenumber =linenumber/*同时更新partsupp表的数量*/update partsupp set availqty=availqty-quantitywhere suppkey=suppkey and partkey=partkeyprint 'partsupp表有足够的货物可以满足lineitem的quantity,插入成功'endelsebeginprint 'partsupp表没有足够的货物可以满足lineitem的quantity,插入失败'endfetch next from cursor_inserted into orderkey,partkey,suppkey,linenumber,quantityenddeallocate cursor_insertedend(3)在lineitem表上定义一个instead of delete触发器,当删除明细表中记录时,同时改变供应表partsupp的availqty数值create trigger trig_lineitem_quantity_delete on lineiteminstead of deleteasbegin--声明游标变量指向deleted表declare cursor_deleted cursor read_only forselect orderkey,partkey,suppkey,linenumber,quantity from deleted --声明变量declare suppkey int,partkey int,orderkey int,linenumber int,quantity int-- 打开游标open cursor_deleted-- 读取游标fetch next from cursor_deleted into orderkey ,partkey,suppkey,linenumber,quantitywhile FETCH_STATUS=0begin/*删除*/delete from lineitem where linenumber=linenumber and orderkey =orderkey/*同时更新partsupp表的数量*/update partsupp set availqty=availqty+quantitywhere suppkey=suppkey and partkey=partkeyprint '删除成功,并且已经把货物数量归还到partsupp里'fetch next from cursor_deleted into orderkey ,partkey,suppkey,linenumber,quantityenddeallocate cursor_deletedend(4)验证update触发器--查看lineitem的quantityselect * from lineitem where orderkey=1830 and linenumber=1;--查询partsupp表的availqtyselect * from partsupp where suppkey =(select suppkey from lineitem where orderkey=1830) and partkey =(select partkey from lineitem where orderkey=1830 and linenumber=1)--更新数量过大--更新的值和原值相同--更新到+200数量,成功update lineitem set quantity =quantity+200 where orderkey=1830 and linenumber=1;--更新+200成功后lineitem的quantity变化--更新+200成功后partsupp表的availqty变化实验到此。

SQL实验报告

SQL实验报告

实验四触发器实验(一)after 触发器(1)在lineitem表上定义一个after触发器;当修改列项目extendedprice discounttax时;要把orders表的totalprice一起修改;以保证数据一致性CREATE TRIGGER trig_lineitem_price_update on lineitemfor updateasbeginif UPDATEextendedprice or UPDATEtax or UPDATEdiscountbegin--声明游标变量指向inserted表declare cursor_inserted cursor read_onlyfor select orderkey;linenumber;extendedprice;discount;tax from inserted-- 声明变量获取查找信息declare @orderkey int;@linenumber int;@extendedprice real;@discount real;@tax real-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted into @orderkey;@linenumber;@extendedprice;@discount;@taxwhile @@FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare @new_totalprice realselect @new_totalprice=@extendedprice*1-@discount*1+@tax--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=@new_totalprice where orderkey=@orderkeyfetch next from cursor_inserted into @orderkey;@linenumber;@extendedprice;@discount;@taxenddeallocate cursor_insertedendend2在lineitem表上定义一个after触发器;当增加一项订单明细时;自动修改orders表的totalprice;以保证数据一致性CREATE TRIGGER trig_lineitem_price_insert on lineitemfor insertasbegin--声明游标变量指向inserted表declare cursor_inserted cursor read_onlyfor select orderkey;linenumber;extendedprice;discount;tax from inserted -- 声明变量获取查找信息declare @orderkey int;@linenumber int;@extendedprice real;@discount real;@tax real-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted into@orderkey;@linenumber;@extendedprice;@discount;@taxwhile @@FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare @new_totalprice realselect @new_totalprice=@extendedprice*1-@discount*1+@tax--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=totalprice+@new_totalprice where orderkey=@orderkeyfetch next from cursor_inserted into@orderkey;@linenumber;@extendedprice;@discount;@taxenddeallocate cursor_insertedend3 在lineitem表上定义一个after触发器;当删除一项订单明细记录时;自动修改orders表的totalprice;以保证数据一致性CREATE TRIGGER trig_lineitem_price_delete on lineitemfor deleteASbegin--声明游标变量指向deleted表declare cursor_deleted cursor read_onlyfor select orderkey;linenumber;extendedprice;discount;tax from deleted-- 声明变量获取查找信息declare @orderkey int;@linenumber int;@extendedprice real;@discount real;@tax real-- 打开游标open cursor_deleted-- 读取游标fetch next from cursor_deleted into@orderkey;@linenumber;@extendedprice;@discount;@taxwhile @@FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格declare @new_totalprice realselect @new_totalprice=@extendedprice*1-@discount*1+@tax--用新的总价格变量更新orders表的totalpriceupdate orders set totalprice=totalprice-@new_totalprice whereorderkey=@orderkeyfetch next from cursor_inserted into@orderkey;@linenumber;@extendedprice;@discount;@taxenddeallocate cursor_insertedend4验证update触发器--查看号订单的totalpriceselect * from orders where orderkey=1830;--查看明细表的相关信息select * from lineitem where orderkey=1830 and linenumber=1;--验证update触发器update lineitem set tax=tax+0.05 where orderkey=1830;(二)instead of 触发器(1)在lineitem表上定义一个instead of update触发器;当修改明细表中的数量quantity 时;应先检查供应表partsupp的availqty是否足够;不足够则拒绝执行;否则执行并修改相应数值以保证数据一致性由于instead of触发器更新某个表会使得该表上其他不满足更新列不能更新;因此逆向思维使用after触发器实现相同效果即先更新quantity;再比较availqty;如果满足更新数量;就修改partsupp表的availqty;如果不满足;则把lineitem的quantity更新之后的数据重新修改回来create trigger trig_lineitem_quantity_update on lineitemfor updateasbeginif UPDATEquantitybegin--声明游标变量分别指向inserted表和deleted表declare cursor_inserted cursor read_only forselect orderkey;partkey;suppkey;linenumber;quantity from inserteddeclare cursor_deleted cursor read_only for select quantity from deleted-- 声明变量获取查找信息declare @quantity_diff_lineitem int;@quantity_partsupp intdeclare @suppkey int;@partkey int;@orderkey int;@linenumber int ;@qty_inserted int ;@qty_deleted int-- 打开游标open cursor_insertedopen cursor_deleted-- 读取游标数值赋给变量fetch next from cursor_insertedinto @orderkey;@partkey;@suppkey;@linenumber;@qty_insertedfetch next from cursor_deleted into @qty_deletedwhile @@fetch_status=0begin--计算订单明细修改时;订购数量的变化值inserted表项-deleted表项select @quantity_diff_lineitem=@qty_inserted-@qty_deleted--从partsupp表获取availqty值;注意partsupp表的主键为partkey;suppkey select @quantity_partsupp=availqty from partsuppwhere suppkey=@suppkey and partkey=@partkey-- 开始判断beginif @quantity_diff_lineitem=0print '更新的数量和原表中的值相同;不需要更新'else if @quantity_diff_lineitem<=@quantity_partsuppbeginupdate partsupp set availqty=availqty-@quantity_diff_lineitemwhere suppkey=@suppkey and partkey=@partkeyprint '两个表都更新成功'endelsebeginupdate lineitem set quantity=quantity+@quantity_diff_lineitemwhere orderkey=@orderkey and linenumber=@linenumber print '更新失败'endendfetch next from cursor_insertedinto @orderkey;@partkey;@suppkey;@linenumber;@qty_inserted fetch next from cursor_deleted into @qty_deletedenddeallocate cursor_inserteddeallocate cursor_deletedendend2在lineitem表上定义一个instead of insert触发器;当插入明细表中一条记录时;应先检查供应表partsupp的availqty是否足够quantity的数量create trigger trig_lineitem_quantity_insert on lineiteminstead of insertasbegin--声明游标变量指向inserted表declare cursor_inserted cursor read_only forselect orderkey;partkey;suppkey;linenumber;quantity from inserted-- 声明变量获取查找信息declare @quantity int;@availqty int; @suppkey int;@partkey int;@orderkey int;@linenumber int-- 打开游标open cursor_inserted-- 读取游标fetch next from cursor_inserted into @orderkey;@partkey;@suppkey;@linenumber;@quantitywhile @@FETCH_STATUS=0begin--为变量赋值select @availqty =availqty from partsuppwhere suppkey=@suppkey and partkey=@partkeyif @quantity<=@availqty --如果可以更新begin/*将inserted表中的记录插入到明细表*/insert into lineitem select * from insertedwhere orderkey=@orderkey and linenumber =@linenumber/*同时更新partsupp表的数量*/update partsupp set availqty=availqty-@quantitywhere suppkey=@suppkey and partkey=partkeyprint 'partsupp表有足够的货物可以满足lineitem的quantity;插入成功'endelsebeginprint 'partsupp表没有足够的货物可以满足lineitem的quantity;插入失败'endfetch next from cursor_inserted into @orderkey;@partkey;@suppkey;@linenumber;@quantityenddeallocate cursor_insertedend3在lineitem表上定义一个instead of delete触发器;当删除明细表中记录时;同时改变供应表partsupp的availqty数值create trigger trig_lineitem_quantity_delete on lineiteminstead of deleteasbegin--声明游标变量指向deleted表declare cursor_deleted cursor read_only forselect orderkey;partkey;suppkey;linenumber;quantity from deleted--声明变量declare @suppkey int;@partkey int;@orderkey int;@linenumber int;@quantity int-- 打开游标open cursor_deleted-- 读取游标fetch next from cursor_deleted into @orderkey ;@partkey;@suppkey;@linenumber;@quantitywhile @@FETCH_STATUS=0begin/*删除*/delete from lineitem where linenumber=@linenumber and orderkey =@orderkey/*同时更新partsupp表的数量*/update partsupp set availqty=availqty+@quantitywhere suppkey=@suppkey and partkey=@partkeyprint '删除成功;并且已经把货物数量归还到partsupp里'fetch next from cursor_deleted into @orderkey ;@partkey;@suppkey;@linenumber;@quantityenddeallocate cursor_deletedend4验证update触发器--查看lineitem的quantityselect * from lineitem where orderkey=1830 and linenumber=1;--查询partsupp表的availqtyselect * from partsupp where suppkey =select suppkey from lineitem where orderkey=1830 and partkey =select partkey from lineitem where orderkey=1830 and linenumber=1--更新数量过大--更新的值和原值相同--更新到+200数量;成功update lineitem set quantity =quantity+200 where orderkey=1830 and linenumber=1;--更新+200成功后lineitem的quantity变化--更新+200成功后partsupp表的availqty变化实验到此..所有创建的触发器结果删除触发器drop trigger trig_lineitem_delete;实验六存储过程实验(1)定义无参数的存储过程并执行更新所有订单总价goCREATE PROCEDURE Proc_CalTotalPriceASBEGINupdate orders set totalprice=select sumextendedprice*1-discount*1+taxfrom lineitemwhere orders.orderkey=lineitem.orderkeyENDgo执行此存储过程exec Proc_CalTotalPrice;(2)定义有参数的存储过程并执行更新给定订单号的总价gocreate procedure Pro_CalTotalPrice4Order @id_order integer asbeginupdate orders set totalprice=select SUMextendedprice*1-discount*1+taxfrom lineitemwhere orders.orderkey=lineitem.orderkeyendgo执行此存储过程exec Pro_CalTotalPrice4Order @id_order=2;(3)定义有局部变量的存储过程更新某一个顾客所有订单的总价gocreate procedure Proc_CalTotalPrice4Customer @name_customer varchar50 asdeclare @custkey_customer intbeginselect @custkey_customer=custkeyfrom customerwhere @name_customer=RTRIMnameupdate orders set totalprice=select SUMextendedprice*1-discount*1+taxfrom lineitemwhere orders.orderkey=lineitem.orderkeyand orders.custkey=@custkey_customerendgo执行此存储过程exec Proc_CalTotalPrice4Customer @name_customer='艾锦亮';查看结果update lineitem set extendedprice=100 ;tax=0.25 where orderkey='1830'; select * from lineitem where orderkey='1830';select * from orders where custkey=select custkey from customer where name='艾锦亮';(4)定义一个带输出参数的存储过程更新某个顾客的所有的订单总价;并输出总价gocreate procedure Proc_CalTotalPrice4Customer2@name_customer varchar50;@totalprice_order real outputas--声明一个变量存储name对应的顾客编号declare @custkey_customer integer--为该变量赋值select @custkey_customer=custkeyfrom customer where @name_customer=RTRIMnamebegin--更改订单总价update orders set totalprice=select SUMextendedprice*1-discount*1+taxfrom lineitemwhere orders.orderkey=lineitem.orderkeyand orders.custkey=@custkey_customer--为返回变量赋值select @totalprice_order=totalprice from orderswhere custkey=@custkey_customerendgo--执行带有输出参数的存储过程要声明输出参数变量declare @totalprice real ;exec Proc_CalTotalPrice4Customer2 '艾锦亮';@totalprice output; --在屏幕上输出返回值结果select @totalprice;实验到此;所有结果显示(5)修改存储过程名exec sp_rename 'Pro_CalTotalPrice4Order'; 'CalTotalPrice4Order';6编译存储过程exec sp_recompile 'CalTotalPrice4Order';7删除存储过程drop procedure CalTotalPrice4Order; exec sp_helptext CalTotalPrice4Order;。

SQL实验报告范文

SQL实验报告范文

SQL实验报告范文一、实验目的本实验旨在通过使用结构化查询语言(SQL)来实现对关系型数据库的操作,熟悉SQL语言的语法和基本操作,在实际应用中能够灵活运用SQL语句进行数据的查询、插入、更新和删除。

二、实验内容1.创建数据库和数据表2.插入数据3.查询数据4.更新数据5.删除数据三、实验过程1.创建数据库和数据表首先,通过以下命令创建一个名为"employee"的数据库:CREATE DATABASE employee;然后,使用以下命令切换到该数据库:USE employee;接下来,创建一个名为"employees"的数据表,并定义其中的字段和数据类型:CREATE TABLE employeesid INT PRIMARY KEY,name VARCHAR(50),age INT,salary FLOAT2.插入数据使用以下命令向数据表中插入数据:INSERT INTO employees (id, name, age, salary) VALUES (1,'John', 25, 5000);INSERT INTO employees (id, name, age, salary) VALUES (2,'Alice', 30, 6000);INSERT INTO employees (id, name, age, salary) VALUES (3,'Tom', 28, 5500);3.查询数据可以使用SELECT语句来查询数据。

例如,要查询所有员工的信息,可以使用以下命令:SELECT * FROM employees;这将返回表中所有的记录。

还可以使用WHERE子句来进行更精确的查询。

例如,要查询年龄大于25岁的员工信息,可以使用以下命令:SELECT * FROM employees WHERE age > 25;这将返回年龄大于25岁的员工记录。

数据库SQL实验报告_数据库的基本操作

数据库SQL实验报告_数据库的基本操作

数据库SQL实验报告_数据库的基本操作一、实验目的本次实验旨在通过实际操作,深入理解和掌握数据库的基本操作,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等,从而提高对数据库管理系统的应用能力和实践操作技能。

二、实验环境本次实验使用的数据库管理系统是 MySQL 80,操作系统为Windows 10。

三、实验内容及步骤(一)创建数据库1、打开 MySQL 命令行客户端,输入以下命令创建一个名为“my_database”的数据库:```sqlCREATE DATABASE my_database;```2、输入以下命令查看已创建的数据库:```sqlSHOW DATABASES;```(二)创建表1、使用以下命令切换到“my_database”数据库:```sqlUSE my_database;```2、创建一个名为“students”的表,包含“id”(整数类型,主键,自增)、“name”(字符串类型,长度为 50)、“age”(整数类型)和“grade”(整数类型)列:```sqlCREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,grade INT);```1、向“students”表中插入以下数据:```sqlINSERT INTO students (name, age, grade) VALUES ('张三', 20, 80),('李四', 21, 85),('王五', 19, 90);```(四)查询数据1、查询“students”表中的所有数据:```sqlSELECT FROM students;```2、查询年龄大于 20 岁的学生信息:```sqlSELECT FROM students WHERE age > 20;```1、将“张三”的年龄更新为 21 岁:```sqlUPDATE students SET age = 21 WHERE name ='张三';```(六)删除数据1、删除“grade”小于 80 的学生记录:```sqlDELETE FROM students WHERE grade < 80;```四、实验结果(一)创建数据库成功创建了名为“my_database”的数据库,并通过“SHOW DATABASES”命令验证了其存在。

sql数据库实验报告

sql数据库实验报告

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

在本次实验中,我们使用SQL语言进行了数据库的设计、创建和操作,以及对数据库的查询和更新等操作。

本报告将详细介绍实验的目的、设计思路、实验过程和实验结果等内容。

二、实验目的本次实验的主要目的是熟悉SQL语言的使用,掌握数据库的设计和操作技巧。

通过实际操作,加深对数据库原理和相关知识的理解,并能够灵活运用SQL语言进行数据库的管理和操作。

三、实验设计本次实验的数据库设计基于一个图书馆管理系统。

我们需要设计多个表格,包括图书、读者、借阅记录等,并建立相应的关系。

为了实现这一目标,我们采用了以下步骤:1. 创建数据库:首先,我们使用SQL语句创建一个新的数据库,命名为"Library"。

2. 创建表格:接下来,我们根据需求创建了多个表格,包括"Books"、"Readers"和"BorrowRecords"等。

每个表格都有相应的字段,用于存储相关数据。

3. 设计关系:在创建表格的过程中,我们需要考虑不同表格之间的关系。

例如,图书表格和读者表格之间可以建立借阅关系,通过读者ID和图书ID进行关联。

4. 插入数据:创建表格后,我们使用SQL语句向表格中插入测试数据。

这些数据包括图书的名称、作者、出版日期等信息,以及读者的姓名、年龄、性别等信息。

5. 查询和更新:最后,我们使用SQL语句进行数据库的查询和更新操作。

通过编写合适的查询语句,我们可以实现对图书、读者和借阅记录等数据的检索和修改。

四、实验过程在实验过程中,我们按照上述设计思路一步步进行操作。

首先,我们使用SQL 语句创建了一个名为"Library"的数据库。

接着,我们创建了三个表格,分别是"Books"、"Readers"和"BorrowRecords"。

sql语言实验报告[最新版]

sql语言实验报告[最新版]

sql语言实验报告sql语言实验报告篇一:数据库SQL语句实验报告《数据库原理及应用》实验报告SQL语句部分班级: 11-37-06 学号:姓名:总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的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.创建学生课程数据库create database Studend; 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。

PRIMARY KEY, Sname CHARUNIQUE, Ssex CHARprimary key, CnameCHARSQL定义语言实验目的:1.熟练掌握SQL语言进行基本表结构的创建。

2.熟练应用SQL语言进行表结构的修改。

3.掌握SQL语言进行基本表的删除。

4.掌握SQL语言进行索引的建立和删除5.选择具体的数据库管理系统进行实现(Access 或SQL Server)实验内容和要求: 1.切换到Access的SQL视图或者打开SQL Server查询分析器进行定义操作2.用SQL语言CREATE TABLE语句创建学生表student、课程表course和选课表SC;(字段类型及长度参照实验一)3.用SQL语言ALTER语句修改表结构;a)STUDENT表中SNO设为非空和唯一;b)STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符);c)删除STUDENT表中ADDRESS字段;d)COURSE表中CNO字段设为非空和唯一;4.重新定义一个简单表,然后用SQL语言DROP语句删除该表结构;5.用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序索引;6.用SQL语言CREATE INDEX语句定义表SC的GRADE字段的升序索引;7.用SQL语言DROP语句删除索引;8.输入部分数据,并试着修改其中的错误;实验过程与步骤:(1)创建学生表student的实现如下:create table student, ssex char , sage smallint, sdeptchar);(2)创建课程表course的实现如下:create table course, cnamechar); (4)创建选课表sc实现如下:create tablesc); (5)表建完后,就是对表结构的操作,可用drop删除表的某一列,create index 创建索引,用add constraint添加属性等,具体操作详见压缩包对实验内容的实现的命令。

SQL实训报告

SQL实训报告

SQL实训报告SQL实训报告(通用5篇)SQL实训报告篇1一、实验目的SQL(Structured Query Language)语言是关系数据库的标准语言。

是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询,SQL语言是一个通用的、功能极强的关系数据库语言。

本次实验了解SQL语言中DDL语言的CREATE、DROP、ALTER 对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。

掌握使用SQL语句增加或删除约束,加深对完整性概念的理解,达到灵活应用的目的。

掌握使用SQL语句定义和删除同义词。

二、实验要求1、实验前:预习实验内容,学习相关知识。

2、实验中:按照实验内容要求进行实验,实验时注意每种SQL语句的基本命令及各个关键字的含义,做好实验记录。

3、实验后:分析实验结果,总结实验知识,得出结论,按格式写出实验报告。

4、在整个实验过程中,要独立思考、独立按时完成实验任务,不懂的要虚心向教师或同学请教。

5、要求按指定格式书写实验报告,且报告中应反映出本对次实验的总结,下次实验前交实验报告。

三、实验的重点与难点1、重点:(1)用SQL语句定义表结构(创建、修改和删除)。

(2)用SQL语句定义索引(创建、删除)。

(3)用SQL语句定义视图(创建、删除)。

(4)用SQL语句定义同义词(创建、删除)。

2、难点:完整性约束的定义、增加及删除。

同义词的定义与删除。

四、仪器设备及用具硬件:投影仪、每位同学分配已连接校园网PC机一台。

软件:本机已安装MySQL 5.5数据库平台。

五、教学过程(一)实验预习(1)熟悉SQL中的CREATE、DROP、ALTER语句的格式及所用的关键字含义及用法。

(2)掌握完整性约束定义、增加和删除的一般用法。

(3)掌握同义词定义、删除的一般用法。

(二)实验原理在Navicat for MySQL中使用CREATE命令完成对表、索引、视图、同义词的创建,使用DROP命令完成对表、索引、视图、同义词的删除,使用ALTER命令对表结构进行修改及完整性约束的增加、删除。

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

SQL Server 2000实验报告学院土木建筑学院专业测绘工程实验内容SQL Server 2000的使用实验时间第九周至第十二周姓名黄萌萌学号07210230指导老师刘国栋SQL Server2000实验报告目录实验一SQL Server 2000系统的安装及配置 (3)一、实验目的与要求 (3)二、实验过程设计及实验步骤 (3)三、SQL调试及结果 (5)四、实验体会 (6)实验二数据库的创建和管理 (7)一、实验目的与要求 (7)二、实验过程设计及实验步骤 (7)三、SQL调试及结果 (9)四、实验体会 (10)实验三表的创建和管理 (12)一、实验目的与要求 (12)二、实验过程设计及实验步骤 (12)三、SQL调试及结果 (15)四,实验体会 (16)实验四数据查询 (18)一、实验目的与要求 (18)二、实验过程设计及实验步骤 (18)三、SQL调试及结果 (20)四、实验体会 (26)实验五索引的创建与管理 (27)一、实验目的与要求 (27)二、实验过程设计及实验步骤 (27)三、SQL调试及结果 (28)四、实验体会 (34)实验六视图的创建和使用 (35)一、实验目的与要求 (35)二、实验过程设计及实验步骤 (35)三、SQL调试及结果 (36)四、实验体会 (39)实验七T-SQL程序设计 (40)一、实验目的与要求 (40)二、实验过程设计及实验步骤 (40)三、SQL调试及结果 (41)四、实验体会 (42)实验十一安全管理 (43)一、实验目的与要求 (43)二、实验过程设计及实验步骤 (43)三、SQL调试及结果 (44)四、实验体会 (46)实验一SQL Server 2000系统的安装及配置开课实验室:空间信息处理实验室指导老师:刘国栋时间:第9周周二学院:土木建筑学院专业:测绘工程班级:测绘07级2班姓名:黄萌萌学号:07210230一、实验目的与要求1)熟练掌握SQL Server 2000系统的安装过程。

2)掌握SQL Server2000相关服务的启动、退出。

3)掌握企业管理器和查询分析器的使用。

4)掌握创建服务器组和注册服务器。

二、实验过程设计及实验步骤1)安装SQL Server 2000系统。

选择 "下一步",然后选择 "本地计算机" 进行安装。

在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。

在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。

在 "安装定义"窗口,选择 "服务器和客户端工具" 选项进行安装。

在 "实例名" 窗口,选择 "默认" 的实例名称。

这时本SQL Server的名称将和Windows2000服务器的名称相同。

在 "安装类型" 窗口,选择 "典型" 安装选项,并指定 "目的文件夹"。

在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。

在 "服务设置" 处,选择 "使用本地系统账户"。

在"身份验证模式" 窗口,请选择"混合模式..." 选项,并设置管理员"sa"账号的密码。

如果您的目的只是为了学习的话,可以将该密码设置为空,以方便登录。

2)分别使用SQL Server服务管理器和控制面板启动MS SQL Server服务。

开始→程序→SQL Server2000→企业管理器3)练习企业管理器使用。

创建数据库:在处单击右键,选中“新建数据库”删除数据库:在“数据库”处单击右键,选中“删除”新建表:双击数据库,然后双击“表”进入,在单击右键“新建表”4)在企业管理器下创建一个服务器组group1,在这个组下注册一个服务器。

查看有哪些数据库及数据库中有哪些数据对象。

在企业管理器下单击右键,选择“新建SQL Sever组”,命名为“group1”,在处单击右键,选“新建SQL Sever注册”然后“下一步”5)练习查询分析器的使用,在查询分析器中输入如下SQL语句,查看结果。

USE PUBSGOSELECT * FROM AuthorsGO三、SQL调试及结果四、实验体会安装SQL Server 2000的之前知道他包括:企业版、标准版、个人版和开发者版。

安装的过程和其他普通软件的安装差不多,不同的是SQL Sever 2000在安装的过程中遇到了问题没有办法继续安装下去了。

提示“以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装之前必须重新启动计算机”打开注册表编辑器找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 找到PendingFileRenameOperations 然后delete 就可以了企业管理器中可以创建组和数据库,它具有管理数据库、管理数据库对象、管理备份、管理复制等功能。

查询分析器,在这里我们可以在海量的数据收出想要的内容,对此进行筛选(select)、过滤(having)、排序(order by)等。

在这里也可以以create table的方式生成表格实验二数据库的创建和管理开课实验室:空间信息处理实验室指导老师:刘国栋时间:第9周周五学院:土木建筑学院专业:测绘工程班级:测绘07级2班姓名:黄萌萌学号:07210230一、实验目的与要求1)掌握用企业管理器和T-SQL语句创建数据库的方法。

2)掌握修改数据库,数据库更名的方法。

3)掌握删除数据库的方法。

二、实验过程设计及实验步骤1.在SQL Server企业管理器中创建一个数据库,具体要求如下:(1)数据库名称为Test1。

(2)主要数据文件:逻辑文件名为Test1Data1,物理文件名为Test1Data1.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB。

(3)次要数据文件:逻辑文件名为Test1Data2,物理文件名为Test1Data2.ndf,初始容量为1MB,最大容量为10MB,递增量为1MB。

(4)事务日志文件:逻辑文件名为Test1Log1,物理文件名为Test1Log1.ldf,初始容量为1MB,大容量为5MB,递增量为512KB。

2.在查询分析器中输入并执行一个CREATE DATABASE语句,具体要求如下:(1)数据库名称为Test2;(2)主要数据文件:逻辑文件名为Test2Datal,物理文件名为Test2Datal.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB;(3)次要数据文件:逻辑文件名为Test2Data2,物理文件名为Test2Data2. ndf,初始容量为1 MB,最大容量为10MB,递增量为1MB;(4)事务日志文件:逻辑文件名为Test2Logl,物理文件名为Test2Logl.Ldf,初始容量为512KB,最大容量为5MB,递增量为512KB。

create database Test2onprimary(name=Test2data1,filename='d:\Test2data1.mdf',size=1,maxsize=10,filegrowth=1),filegroup ff(name=Test2data2,filename='d:\Test2data2.mdf',size=1,maxsize=10,filegrowth=1)log on(name=Test2Log1,filename='d:\Test2data1.mdf',size=1,maxsize=5,filegrowth=512kb)3.按照下列要求在企业管理器中修改第2题中创建的Test2数据库:(1)主要数据文件的容量为2MB,最大容量为20MB,递增量为2MB。

(2)次要数据文件的容量为2MB,最大容量为20MB,递增量为2MB。

(3)事务日志文件:初始容量为1MB,最大容量为10MB,递增量为1MB。

alter database test2modify file(name=Test2data1,size=2,maxsize=20,filegrowth=2)alter database test2modify file(name=Test2data2,size=2,maxsize=20,filegrowth=2)alter database test2modify file(name=Test2Log1,size=1,maxsize=10,filegrowth=1)4.数据库更名,要求:把TEST1数据库改名为new_TEST1。

alter database test1modify name=new_test15.收缩数据库,要求:分别使用DBCC SHRINKDATABASE和DBCC SHRINKFILE进行收缩。

DBCC SHRINKDATABASE( test2,target_percent[ , { NOTRUNCATE | TRUNCATEONLY } ])6.删除数据库(1)在企业管理器中删除new_TEST1数据库。

在Enterprise manager可以在“new_TEST1”上单击右键,然后单击删除(2)在查询分析器中用DROP DATABASE语句删除经过第3题修改以后的Test2数据库。

drop database Test2三、SQL调试及结果create database Test2onprimary(name=Test2data1,filename='d:\Test2data1.mdf',size=1,maxsize=10,filegrowth=1name=Test2data2,filename='d:\Test2data2.mdf',size=1,maxsize=10,filegrowth=1)log on(name=Test2Log1,filename='d:\Test2data1.mdf',size=512kb,maxsize=5,filegrowth=512kb)上面那样做程序报错,次要数据文件的生成应该是用filegroup编写,create database Test2onprimary(name=Test2data1,filename='d:\Test2data1.mdf',size=1,maxsize=10,filegrowth=1),filegroup ff(name=Test2data2,filename='d:\Test2data2.mdf',size=1,maxsize=10,filegrowth=1)数据库改名字:alter database test1modify name=new_test1删除数据库:在Enterprise manager可以在要删除的数据库图标上单击右键,然后单击删除用命令删除:drop database Test2四、实验体会通过这次实验我们了解了Enterprise Manager和T-SQL在很多情况下具有相同的作用,学会了在两种情况下创建数据库(create database)、修改数据库(alterdatabase)以及删除数据库(drop database),在数据库的基础上又可以添加删除数据文件,以及对数据库各种属性的编辑。

相关文档
最新文档