




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle数数据库技术与与实验指导2011.088第0章 实用OOraclee数据库技术术Oracle的的官方网站为为 HYPERLINK m;其次http:/mettalinkk.oraccle.coom/这里有有很多权威的的解决方案和和补丁;然后就是一些著著名网站如:asktoom.oraacle.ccom、wwww.oraafaq.nnet、,这这里有很多经经验之谈。遇到问题了还可可以第一时间间找,这这里会给你最最详细的解释释。Oracle 10g/111g数据库库都分为标准准版(Standdard EEditioon)、标准版11(Standdard EEditioon Onee)以
2、及企业版版(Enterrprisee Edittion)。可从如下网网址下载、学学习或试用OOraclee:http:/technnologyy/globbal/cnn/softtware/produucts/ddatabaase/orracle110g/inndex.hhtmlhttp:/technnologyy/globbal/cnn/softtware/produucts/ddatabaase/inndex.hhtmlhttp:/technnologyy/softtware/indexx.htmllhttp:/technnologyy/softtware/produucts/ddatab
3、aase/inndex.hhtmlSQL Devvelopeer也可以单单独免费下载安装装的。下载地地址为:htttp:/technnologyy/globbal/cnn/softtware/produucts/ssql/inndex.hhtmlSQL*Pluus Insstant Cliennt(SQL*PPlus即时时客户端)SQL*Pluus Insstant Cliennt下载: HYPERLINK /technology/global/cn/software/tech/oci/instantclient/index.html htttp:/ttechnoology/globaal/c
4、n/softwware/ttech/ooci/innstanttcliennt/inddex.httml。 HYPERLINK Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Microsoft/()()北京邮电大学出版社章剑(修改与利用)(FROM D盘)(第二版)/数据库原理及应用实验指导-实验1 数据库系统基础操作.doc 实验1 数据库库系统基础操操作Oracle Data
5、bbase 111g第 2 版(.0)的下载载地址: HYPERLINK /technology/global/cn/software/products/database/index.html http:/technnologyy/globbal/cnn/softtware/produucts/ddatabaase/inndex.hhtml适用于 Miccrosofft Winndows(332 位)的 Oraccle Daatabasse 11gg第 2 版 (11.)的下下载地址: HYPERLINK /technology/global/cn/software/products/data
6、base/oracle11g/_win32soft.html http:/technnologyy/globbal/cnn/softtware/produucts/ddatabaase/orracle111g/_wwin32ssoft.hhtml HYPERLINK Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Microsoft/()()北京邮电大学出版社章剑(修改与利用)(F
7、ROM D盘)(第二版)/数据库原理及应用实验指导-实验2 数据库基础操作.doc 实验2 数据库库基础操作手工建库手工建库须要经经过几个步骤骤,每一个步步骤都非常关关键。它包括括: 1、创创建相关目录录(数据文件件和跟踪文件件)(假设要要创建KCGGL数据库,OOraclee已安装于“c:apppqxzz”目录)在c:apppqxzadminn这个目录之之下创建KCCGL文件夹夹;在C:apppqxzadminnKCGLL 这个目录录之下创建aadump文文件夹;在C:apppqxzadminnKCGLL 这个目录录之下创建ddpdumpp文件夹;在C:apppqxzadminnKCGLL
8、这个目录录之下创建ppfile文文件夹;在C:apppqxzoradaata 这个个目录之下创创建KCGLL文件夹; 2、创创建初始化参参数文件通过复制现有的的初始化参数数文件C:appqqxzaddminoorclppfile这这个目录下的的参数文件“init.ora.*”(*为数字字扩展名)到到C:apppqxzzprodduct111.2.00dbhoome_1databbase这个个目录,修改改名为iniitKCGLL.ora,最后用记事事本打开这个个参数文件,修修改如下几个个参数的值:audit_ffile_ddest=CC:apppqxzadminnKCGLLadummpdb_na
9、mee=KCGLLcontroll_filees=(C:apppqxzzoraddataKKCGLccontrool01.cctl,C:apppqxzzoraddataKKCGLccontrool02.cctl) 3、打打开DOS窗窗口,设置环环境变量:SSet orracle_sid=KKCGL 4、创创建服务: Oradimm -neww -sidd KCGLL 5、创创建口令文件件Orapwd file=C:apppqxzzprodduct111.2.00dbhoome_1databbaseppwdKCGGL.oraaPassworrd=123345 6、启启动服务器:Sqlpluus
10、/noologConn / as syysdbaStartupp nomoount 7、执执行建库脚本本:CREATE DATABBASE KKCGLdatafille c:appqxzooradattaKCGGLsysstem011.dbf sizee 300mmautoexttend oon nexxt 10mm exteent maanagemment llocalSysaux dataffile c:apppqxzzoraddataKKCGLssysauxx01.dbbf siize 1220mundo taablesppace uundotbbs1datafille c:appqxz
11、ooradattaKCGGLunddotbs001.dbff sizze 1000mdefaultt tempporaryy tabllespacce temmptbs11tempfille c:appqxzooradattaKCGGLtemmp01.ddbf ssize 550mlogfilee grouup 1(c:apppqxzzoraddataKKCGLrredo011.log) sizze 50mm,group 22(c:appqqxzorradataaKCGLLredoo02.loog) ssize 550m,group 33(c:appqqxzorradataaKCGLLredo
12、o03.loog) ssize 550m; 用记事事本编辑以上上内容,假定定保存为C:CREAATEKCGGL.sqll文件,然后后执行这个脚脚本。Start CC:CREEATEKCCGL.sqql 不管出出现哪种错误误,都要删除除C:apppqxzzoraddataKKCGL目录录下创建的所所有文件,改改正错误后,重重新启动实例例,再执行建建库脚本。 8、创创建数据字典典和包Start CC:apppqxzproduuct111.2.0dbhomme_1RRDBMSADMINNcataalogStart CC:apppqxzproduuct111.2.0dbhomme_1RRDBMSADM
13、INNcatpproc 9、执执行pupbbld.sqql脚本文件件 切换成成systeem用户执行行如下命令:Conn ssystemm/manaagerStart CC:apppqxzproduuct111.2.0dbhomme_1ssqlpluusadmminpuupbld 10、执行scoott脚本创创建scottt方案Start CC:apppqxzproduuct111.2.0dbhomme_1RRDBMSADMINNscottt.sqll 这时需需要修改密码码:Conn / as ssysdbaaAlter uuser sscott identtifiedd by ttiger;
14、 再连接接scottt:Conn sscott/tigerr 11、selecct * ffrom ddept;能显示出deppt表的结果果,表示新数数据库KCGGL已安装成成功了。2.2 查看数数据库1、查看表空间间的名称及大大小select tableespacee_namee,min_extennts,maax_exttents,pct_iincreaase,sttatus from dba_ttablesspacess;select tableespacee_namee,inittial_eextentt,nextt_exteent,coontentts,loggging,extent
15、_managgementt,alloocatioon_typpe froom dbaa_tabllespaccesordder byy tabllespacce_namme;select t.tabblespaace_naame, rround(sum(bbytes/(10244*10244),0) ts_ssizefrrom dbba_tabblespaaces tt, dbaa_dataa_filees dwhhere tt.tabllespacce_namme = dd.tabllespacce_nammegroup bby t.ttablesspace_name;2、查看表空间间物理文
16、件的的名称及大小小column db_bllock_ssize nnew_vaalue bblksz nopriintselect valuee db_bblock_size from v$parrameteer wheere naame=ddb_bloock_siize;column tableespacee_namee formmat a116;column file_name formaat a600;set linnesizee 160; - 为sqlpplus 命命令select file_name,roundd(bytees/(10024*10024),00) tottal_spp
17、ace,aautoexxtensiible,iincremment_bby*&bllksz/(1024*1024) as iincemeent,maaxbytees/(10024*10024) aas maxxsize from dba_ddata_ffiles orderr by ttablesspace_name; - bllksz一般般为81922select tableespacee_namee, fille_id, filee_namee,rounnd(byttes/(11024*11024),0) tootal_sspacefrom dbba_datta_fillesordder
18、byy tabllespacce_namme;3、查看回滚段段名称及大小小select a.ownner | . | a.segmeent_naame rooll_naame , a.tabblespaace_naame taablesppace , to_cchar(aa.inittial_eextentt) | / | to_char(a.nexxt_exttent) in_exxtentss , too_charr(a.miin_exttents) | / | to_cchar(aa.max_extennts) mm_exteents , a.sttatus statuus , bb.b
19、ytees byttes , b.exttents extennts , d.shrrinks shrinnks , d.wraaps wrraps , d.opptsizee opt from dba_rrollbaack_seegs a , dbaa_segmments b , vv$rolllname c , vv$rolllstat d wheere a.segmeent_naame = b.seggment_name and aa.segmment_nname = c.naame (+) andd c.ussn = dd.usn (+) oorder by a.segmeent_na
20、ame;select segmeent_naame, ttablesspace_name, r.sttatus, (iniitial_extennt/10224) InnitiallExtennt,(neext_exxtent/1024) NexttExtennt, maax_exttents, v.cuurext CurExxtentFFrom ddba_roollbacck_seggs r, v$rolllstatt vWheere r.segmeent_idd = v.usn(+)ordeer by segmeent_naame ;4、查看控制文文件 sellect nname ffro
21、m vv$conttrolfiile;5、查看日志文文件 sellect mmemberr fromm v$loogfilee;6、查看表空间间的使用情况况select * froom(sellect ssum(byytes)/(10244*10244) as freee_spacce(m),tabllespacce_namme froom dbaa_freee_spaccegrouup by tableespacee_namee) ordder byy freee_spaace(m);SELECT A.TABBLESPAACE_NAAME,A.BYTESS TOTAAL,B.BBYTES U
22、SED, C.BYYTES FFREE,(B.BYTTES*1000)/A.BYTESS % UUSED,(C.BYYTES*1100)/AA.BYTEES % FREEFROM SYS.SSM$TS_AVAILL A,SYYS.SM$TS_USSED B,SYS.SSM$TS_FREE CWHERREA.TAABLESPPACE_NNAME=BB.TABLLESPACCE_NAMME ANDD A.TAABLESPPACE_NNAME=CC.TABLLESPACCE_NAMME; 7、查看数据库库库对象 sellect oowner, objeect_tyype, sstatuss, cou
23、unt(*) counnt# frrom alll_objjects groupp by oowner,objecct_typpe,staatus;8、查看数据库库的版本select * froom v$vversioon;Select versiion FRROM Prroductt_compponentt_verssion WWhere SUBSTTR(PROODUCT,1,6)=Oraccle;9、查看数据库库的创建日期期和归档方式式 sellect ccreateed,logg_modee,log_mode from v$dattabasee;10、查看临时时数据库文件件select
24、statuus, ennabledd, namme froom v$ttempfiile;常用数据库信息息查看命令(1)oraccle中怎样样查看总共有有哪些用户select * froom alll_userrs;(2)查看orracle当当前连接数怎样查看oraacle当前前的连接数呢呢?只需要用用下面的SQQL语句查询询一下就可以以了。select * froom v$ssessioon wheere ussernamme is not nnull sselectt userrname,countt(userrname) fromm v$seessionn wherre useernam
25、ee is nnot nuull grroup bby useernamee #查看不不同用户的连连接数 select countt(*) ffrom vv$sesssion #连接数数Select countt(*) ffrom vv$sesssion wwhere statuus=ACCTIVE#并发连连接数(3)列出当前前数据库建立立的会话情况况select sid,sseriall#,useernamee,proggram,mmachinne,staatus ffrom vv$sesssion; HYPERLINK Documents and Settings/qxz/Applicat
26、ion Data/Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Microsoft/()()北京邮电大学出版社章剑(修改与利用)(FROM D盘)(第二版)/数据库原理及应用实验指导-实验3 表与视图的基础操作.doc 实验3 表与视视图的基础操操作3.1创建基本本表 例3-1 创建学生生、课程、选选课三个表,在在SQL PPLUS 的的启动界面输输入以下代码码: SQLLCreaate Taable SS(Sno Varchhar2(110) Prrimaryy
27、Key,Snamee Varcchar2(10) NNot Nuull,Sssex Chhar(2),Sagee Numbber,Sddept VVarchaar2(400); SQLLCreaate Taable CCoursee(Cno Varchhar2(10),Cnamee Varcchar2(50),CCcrediit Nummber,CConstrraint Pk_C Primmary KKey (CCno); SQLCreatte Tabble SCC(Sno Varchhar2(110),CCnoVaarcharr2(10),Scorre Nummber DDefaullt 0
28、 CCheck (Scorre Bettween 0 Andd 100),Consstrainnt Pk_S Priimary Key (Sno,CCno)TABLLESPACCE Teestspaace; -使使用Testtspacee表空间3.2修改表 1、修修改表空间的的相关操作 1)增增加表空间中中的数据文件件AlterTTablesspaceTestsspace AddDaatafillec:appqxzffile_33.dbf sizee 100mm; 2)删删除表空间中中的数据文件件AlterTTablesspaceTestsspace DropDataffilec:apppqx
29、zzfilee_3.dbf; 3)修修改表空间文文件的数据文文件大小AlterDDatabaaseDaatafillec:appqxzffile_22.dbfResizze50m; 4)修修改表空间数数据文件的自自动增长属性性。AlterDaatabasseDataafilec:apppqxzzfilee_1.dbfAutoeextenddOff; -Offf不能自动增增长 2、修修改表结构的的相关操作:1)插入属性例3-2 在SS表插入新属属性地址。SQLAltter Taable SS Add(Addrress VVarchaar(1000); 2)修修改属性 例3-3 对上述性性别属性的
30、数数据类型进行行修改,并且且默认值为“男”。SQLAltter Taable SS Modiify( SSsex VVarchaar2(2) Deffault 男); 3)删删除表属性 例3-4 删除上述述表中的地址址属性。命令令为:SQLLAlteer Tabble SDDrop(AAddresss); 注意:通常在系统统不忙的时候候删除不使用用的字段,可可以先设置字字段为unuused;Alter TTable SSet Unuseed Collumn AAddresss; 系统不不忙时再执行行删除:Allter TTable SDropp Unussed Coolumn; 4)表表重命名
31、 例3-5 把表SCC改名为Leearn。命命令为:SQQLRenname SSc To Learnn; 5)清清空表中的数数据 例3-6 清空学生生表的信息。命令为: SQLTTruncaate Taable SS; 6)给给表增加注释释 例3-7 对表S添添加注释为this Is A Test TableeSQLCommment On Taable SS Is This Is A Test Tablee; 7)给给列添加注释释 例3-8 对表S的的Sno属性添加加学号的注释。SQLCommment On Coolumn S.Snoo Is 学号;3.3删除表 例3-9 删除CCoursee
32、表。命令为为: SQLLDropp Tablle Couurse;3.5 创建和和管理视图 1、创创建视图 例3-10在S表中创创建以学号、姓名、系别别的新视图。SQLCreeate OOr Repplace View V_S(NNum,Naame,Sddept)AAsSeleect Snno, Snname, SdepttFromS; 例3-11 在SSC上定义新新视图,当用用updatte修改数据据时,必须满满足视图sccore660的条件,不不满足则不能能被改变。SQLCreeate OOr Repplace View V_SC As Seelect * Froom SCWWhere S
33、coree60Wiith Chheck OOptionn; 例3-12 创建新新视图,按照照学号分组显显示学生的最最高、最低分分和平均成绩绩。SQLCreeate VView VV_S_SCC (Numm,Sminn,Smaxx,Savgg)As SSelectt D.Sno,Min(EE.Scorre),Maax(E.Scorre),Avvg(E.Scorre) Frrom SCC E,S D Wheere E.Sno=DD.Sno Groupp By DD.Sno; 2、查查询视图 例3-13 查询上上述建立的视视图。命令为为:SQLSelecct * FFrom VV_S_SCC; 3、
34、更更新视图 例3-14 把所有有学号为088开头的学生生的相关系别别信息改为管管理系。SQLUpddate VV_SSettSdeptt=MannagemeentWhhereNuum likke 088%;3.6 表或视视图的导入与与导出操作1、Oraclle数据间的的导入导出iimp/exxp下面是导入导出出的实例,导导入导出的其其它例子或方方法请参阅实实验13。(1)数据导导出1)将数据库oorcl完全全导出,用户户名systtem 密码码orcl,导导出到c:orcll.dmp中中。exp HYPERLINK mailto:system/managerTEST syystem/orclo
35、rcl22 filee=c:orcll.dmp full=y2)将数据库中中jxgl用户户与scottt用户的表表导出。exp HYPERLINK mailto:system/managerTEST syystem/orclorcl22 filee=c:orcll_jxgllscottt.dmp ownerr=(jxggl,scottt)3)将数据库中中jxgl用户户的表stuudent,sc导出。exp HYPERLINK mailto:system/managerTEST jxxgl/jxglorcl22 filee=c:orcll_jxgll_studdentscc.dmp tablee
36、s=(sttudentt,sc) 4)将数据库中中jxgl用户户的表stuudent中中年龄大于等等于19的学生记录导出出。exp HYPERLINK mailto:system/managerTEST jxxgl/jxglorcl22 filee=c:orcll_jxgll_studdent_aagege119.dmpp tablles=(sstudennt) quuery= wheere saage=119上面是常用的导导出,对于压压缩导出,只只要在上面命命令后面加上上 comppress=y就可以了了。(2)数据的导导入1)将c:oorcl.ddmp中的数数据导入orrcl数据库库中。i
37、mpp HYPERLINK mailto:system/managerTEST systtem/orrclorcl22filee=c:orcll.dmp上面可能有点问问题,因为有有的表已经存存在,然后它它就报错,对对该表就不进进行导入。在在后面加上 ignorre=y 就就可以了。2)将c:oorcl_jjxgl_sstudenntsc.ddmp中的表表sc 导入。imp jxxgl HYPERLINK mailto:system/managerTEST /jxxglorrcl2 ffile= c:orcll_jxgll_studdentscc.dmptablees=(scc) ignnore
38、=yy HYPERLINK Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Microsoft/()()北京邮电大学出版社章剑(修改与利用)(FROM D盘)(第二版)/数据库原理及应用实验指导-实验4 SQL语言SELECT查询操作.doc 实验4 SQLL语言SELEECT查询操操作创建Studeent、SCC、Courrse三表及及添加表记录录命令如下:Create Tabl
39、ee Studdent( Sno CCHAR(55) NOTT NULLL,Sname VVARCHAAR(20),Sage SMMALLINNT CHEECK(Saage=115 ANDD Sagee=90;例4-2 SELECT Snamee,SsexxFROM SttudenttWHERE SSage118 ANDD Sdeppt NOTT IN (IS, MA);例4-3 SELECT *FROMM CourrseWHEERE Cnname LLIKE MIS#_%导_ ESSCAPE #;例4-4 SELECT COUNTT(DISTTINCT Sno) /* 加DDISTINNCT
40、 去掉掉重复值后计计数 */FROM SCC;例4-5 SELECT Studeent.Snno FROOM Stuudent,SCWHERE SSdept=CS AND Studeent.Snno=SC.SnoGROUP BBY Stuudent.Sno HHAVINGG COUNNT(*)=2;例4-6 Select Studeent.*,SC.* From Studeent,SC;或 Seleect Sttudentt.*,SC.* From Studeent Crross JJoin SSC;例4-7 Select * Fromm Studdent,SC WHHERE SStudenn
41、t.Snoo=SC.SSno;例4-8 SELECT Studeent.Snno, Snname, Ssex, Sagee, Sdeept, CCno, GGradeFROM Sttudentt, SCWWHERE Studeent.Snno=SC.Sno;或 SELEECT Sttudentt.Sno, Snamme, Sssex, SSage, Sdeptt, Cnoo, GraadeFROM Sttudentt INNEER JOIIN SC ON Studeent.Snno=SC.Sno;例4-9 SELECT FIRSTT.Cno, SECOOND.cppnoFROMM Courrs
42、e FIIRST, Coursse SECCONDWHERE FFIRST.cpno=SECONND.Cnoo;我们为Courrse表取两两个别名FIIRST与SSECONDD,这样就可可以在SELLECT子句句和WHERRE子句中的的属性名前分分别用这两个个别名加以区区分。例4-10 SELECT Studeent.Snno, Snname, Ssex, Sagee, Sdeept, CCno, GGradeFROM Sttudentt Leftt Outeer JOIIN SC ON Studeent.Snno=SC.Sno;例4-11 SELECTSStudennt.Snoo,Snamm
43、e,Sseex,Sagge,Sdeept, CCoursee.Cno,Gradee,cnamme,cpnno,ccrreditFROM Sttudentt Leftt Outeer JOIIN SC ON Sttudentt.Sno=SC.Snno Full Outer join Coursee on SSC.cnoo=Co;例4-12 SELECT Studeent.*,Cno,GGradeFFROM SSTUDENNT INNNER JOOIN SCC ON SStudennt.Snoo=SC.SSnoWHERE SSSEX=男 AND GRADEE =60例4-13 SELECT * F
44、ROOM StuudentWHERE SSdept IN (SSELECTT Sdeppt FROOM Stuudent WHEREE Snamme=钱横横);或 SELEECT* FFROM SStudenntWHERE SSdept=(SELEECT Sddept FFROM SStudenntWHERE SSname=钱横); -当当子查询为单单列单行值时时可以用“=”或 SELEECT S11.* FRROM Sttudentt S1,SStudennt S2WHERE SS1.Sdeept=S22.Sdeppt ANDD S2.SSname=钱横;一般来说,连接接查询可以替替换大多数
45、的的嵌套子查询询。SQL-92支支持“多列成员”的属于(IIN)条件表表达,例:例4-14 Select *fromm Studdent TTWhere (T.sdeept,T.sage,T.sseex) IN (Selecct sdeept,saage,sssexFroom stuudent SWhere SS.snoT.snno); -Oraccle支持的的它等价于逐个成成员IN的方方式表达,如如下:Select *fromm Studdent TTWheree T.sddept IIN(Selectt sdepptFromm studdent SSWhere SS.snoT.snno a
46、nddT.sagge IN (Selectt sageeFrom studeent X Wheree S.sno=X.sno and XX.snoT.snno and T.sssex IIN (Selectt ssexxFrom studeent Y Wheree X.sno=Y.sno and YY.snoT.snno);例4-15 SELECT Sno,SSname,Sdeptt FROMM Studdent -IN嵌嵌套查询方法法WHERE SSno INN( SELECCT SnooFROM SCWHERE CCno INN (SELEECT CnnoFROMM Courrse WHH
47、ERE CCname=数据库系系统);或 SELEECT Snno,Snaame,Sddept FFROM SStudennt -IN、= 嵌套查询方方法WHERE SSno INN( SELECCT Snoo FROMM SCWHERE CCno=(SELECCT CnooFROM Coursse WHEERE Cnname=数据库系统统);或 SELEECT Sttudentt.Sno,Snamee,Sdeppt -连接查询方方法FROM Sttudentt,SC,CCourseeWHERE SStudennt.Snoo=SC.SSno ANND SC.Cno=CCoursee.CnoAA
48、ND Coourse.Cnamee=数据库库系统;或 Seleect Snno,Snamee,Sdeppt Froom Stuudent - Exiists嵌套套查询方法Where EExistss(Seleect *FFrom SSC Wheere SCC.Sno=Studeent.Snno AnddExists(Selecct *Frrom CoourseWhere SSC.Cno = Coursse.Cno Annd Cnamee=数据库库系统);或 Seleect Snno,Snaame,Sddept FFrom SStudennt - Exissts嵌套查询方法法Where EExi
49、stss( Sellect *From coursse Wheere Cnname=数据库系统统 andd Exists( Seleect * From SCWheere scc.sno=studeent.snno andd SC.CCno = Coursse.Cnoo);例4-16 SELECT Sno,SSname FROM StudeentWHERE SSno NOOT IN (SELEECT Snno FROOM SCWWHERE Cno IIN (22,4);例4-17 SELECT SnameeFROM StudeentWHERE SSageAAll(SEELECT SageFFR
50、OM SStudenntWHERE SSdept=IS) AAND Sddept ISSORDER BBY Snaame;本查询实际上也也可以用集函函数实现:SELECT Snamee FROMM Studdent WHERE SSage(SELECCT MAXX(Sagee) FROOM StuudentWHERE SSdept=IS) ANDD SdepptIISORDER BBY Sname;例4-18 SELECT DISTIINCT CCNAMEFFROM CCOURSEE CWHERE 女=ALLL( SEELECT SSEX FROM SC,STTUDENTTWHERE SSC.
51、SNOO=STUDDENT.SSNO ANND SC.CNO=CC.CNO);或 SELEECT DIISTINCCT CNAAMEFROOM COUURSE CCWHERE NNOT EXXISTS( SELECCT * FROMM SC,STUUDENTWHERE SSC.SNOO=STUDDENT.SSNO ANND SC.CNNO=C.CCNO ANND STUUDENT.SSEX=男);例4-19 SELECT SnameeFROM StudeentWHERE NNOT EXXISTS(SELECTT * FRROM SCC WHERRE Snoo=Studdent.SSno ANN
52、D Cnoo=1);或 SELEECT SnnameFRROM SttudenttWHERE SSno NOOT IN (SELEECT Snno FROOM SC WHERRE Cnoo=1);但如下是错的:SELECT SnameeFROM Studeent,SCC WHERRE SC.Sno=SStudennt.Snoo AND Cno1;例4-20 SELECT SnameeFROM StudeentWHERE NNOT EXXISTS(SELECTT *FROOM CouurseWHHERE NNOT EXXISTS(SELECTT *FROOM SC WHEREE Sno=SC.S
53、nno ANDD Cno=Coursse.Cnoo); 由于没有全称量量词,我们将将题目的意思思转换成等价价的存在量词词的形式:查查询这样的学学生姓名没有有一门课程是是他不选的。本题的另一操作作方法是:SELECT SnameeFROM Studeent,SCC WHERRE Stuudent.Sno=SSC.SnooGroup bby Stuudent.Sno,SSname havinng couunt(*)=(SEELECT countt(*) FROMM Courrse);例4-21 SELECT SnoFROOM Stuudent SXWHERE NNOT EXXISTS(SELECT
54、T * FRROM SCC SCYWHERE SSCY.Snno=988001 ANDDNOT EEXISTSS(SELECTT * FRROM SCC SCZWWHERE SCZ.SSno=SXX.Sno AND SSCZ.Cnno=SCYY.Cno);例4-22 SELECT Sno FFROM SSC WHEERE Cnno=1UNIONSELECT Sno FFROM SSC WHEERE Cnno=2;SELECT Sno FFROM SSC WHEERE Cnno=1INTERSEECTSELECT Sno FFROM SSC WHEERE Cnno=2; - 查询既选课课程1又选
55、课课程2的学生生学号集例4-23 SELECT * FROOM Stuudent WHEREE Sdeppt=CSSINTERSEECTSELECT * FROOM Stuudent WHEREE Sagee=19;本查询等价于“查询计算机机科学系中年年龄不大于119岁的学生生。”,为此变通通法为:SELECT * FROOM Stuudent WHEREE Sdeppt=CSS ANDD Sagee85;SQL-92允允许在 Frrom中使用用查询表达式式,并必须为为查询表达式式取名。它等等价于如下未未使用查询表表达式的形式式:Select Studeent.Snno,Sname,AVG(G
56、Grade)From Sttudentt,SC Wheere Sttudentt.Sno = SC.SnoGroup BBy Stuudent.Sno,SSname HAVINNG AVGG(Gradde)85;例4-26SELECT SNAMEE,CNAMME,GRAADEFROM (SSELECTT SNAMME,CNAAME,GRRADEFRROM STTUDENTT,SC,COUURSEWHERE SSSEX=女 AND STUDEENT.SNNO=SC.SNO AAND SCC.CNO=COURSSE.CNOO) TEMMPWHERRE GRAADE90; -特意用查查询表达式实实现
57、,完全可可用其它方式式实现但如下使用查询询表达式的查查询,则不易易改写为其它它形式。例4-27 Select avgr,COUNTT(*)From (SSelectt sno,avg(ggrade) avgrr Fromm SCGrroup BBy snoo) SGGroup BBy avggr;例4-28 GRANT CCREATEE VIEWW TO JJXGL - 赋予予用户JXGGL CREEATE VVIEW 的的权力CREATE VIEW IS_SttudenttAS SELEECT Snno,Snaame,Saage,SssexFROM SttudenttWHEREE Sdepp
58、t=ISS WITTH CHEECK OPPTIONGOSELECT * FROOM IS_Studeent WHHERE SSage=18 ANND Sseex=女; HYPERLINK Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Documents and Settings/qxz/Application Data/Microsoft/()()北京邮电大学出版社章剑(修改与利用)(FROM D盘)(第二版)/数据库原理及应用实验指导-实验5 SQL语言更新操作
59、命令.doc 实验5 SQLL语言数据更新新操作5.1 INSSERT命令令例5-1 Insert Into Studeent Vaalues(98011,张静,27,女,CS); Coommit;Insert语语句后可跟rreturnning 子子句来获取插插入记录的某某字段值。程程序代码如下下:Set serrverouutput onDeclaree bnd11 studdent.ssno%TYYPE; bnd22 studdent.ssname%TYPE;Begin Inseert Innto Sttudentt(sno,snamee,sagee, sseex, sddept) Val
60、uees(988011,张静,27,女女,CSS) REETURNIING snno,Stuudent.snamee INTOO bnd11,bnd22; dbms_ooutputt.put_line(bnd1| |bndd2);End;例5-2 Insert Into Studeent(Sno,Sname, Sage)Vaalues(98012, 李四,16);Committ;例5-3 Create Sequennce ttt incrrementt by 11 minvvalue 101 mmaxvallue ccycle;Create tablee testtable(id innt,r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北资源环境职业技术学院《中医饮食保健学》2023-2024学年第一学期期末试卷
- 陕西省宝鸡一中学2025年初三第三次模拟练习英语试题含答案
- 南京工业大学《护理研究》2023-2024学年第二学期期末试卷
- 北京朝阳人大附朝阳分校2025年初三下期末联考(英语试题理)试题含答案
- 无锡商业职业技术学院《国际贸易结算》2023-2024学年第二学期期末试卷
- 川南幼儿师范高等专科学校《工程测试技术》2023-2024学年第二学期期末试卷
- 新疆天山职业技术大学《研学旅行培训》2023-2024学年第二学期期末试卷
- 游戏产业与电子书出版互动考核试卷
- 2025年度租赁合同模板(标准版)
- 2025年上海市劳动合同范本(官方版)
- 沼气发电项目建议书
- 大学物理上总复习课件
- 说课的基本步骤与方法课件
- 施工进场通知书
- 步进电机控制系统课件
- 幼儿园小班科学艺术:《欢乐的小芽儿》 课件
- 子宫肌瘤课件PPT(共38张PPT)
- 汉字的五行属性与三才五格计算方法
- 唐山高科总部大厦幕墙工程幕墙招标技术评估总结
- 《学前教育科学研究方法》全套课件(完整版)
- 机电经典安装工程相册图解PPT86页
评论
0/150
提交评论