




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一部分Oracle数据库概念与原理、Oracle数据库概念1•数据库数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。2.Oracle数据库Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。、Oracle数据库原理1.Oracle数据库的基本任务录入数据;⑵存储数据;(3)查询、处理数据技术部工程师培训教材数据库基础技术部工程师培训教材数据库基础2.Oracle数据库的组成结构Oracle按照应用情况可以分为核心数据(DATA)、操作系统(OperationSystem)、数据库服务器部分(OracleServer)、OracleSQLServer程序、Oracle工具(包括SQL*PLUS和很多像Developer2000、designer2000等工具)以及Oracle的各种应用。按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成:⑴实例(Instanee):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。⑶程序:也是Oracle数据库的过程,主要包括客户过程(clientprocesses),根据用户的要求向服务器过程提出需求信息的请求;服务器过程serverprocesses),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。日志文件(LogFile),也称重演日志文件(RedoLogsFile)或事务记录文件(TrasactionLogFile),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。控制文件(ControlFile),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。每个数据库至少应该有两个以上的控制文件和日志文件备份。⑸内存结构Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理,达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块:DataBufferCache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。DictionaryCache(RowCache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。RedoLogCache(TransactionLogCache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。ShareSQLPool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。Oracle数据库的数据处理流程Oracle数据处理流程,下面以简单的update操作为例加以说明。先经过系统监视器(SMON)和过程监视器(PMON)检测数据库运行正常,Server进程和Clients进程运行在不同的机器上,彼此通过网络连接,一个Oracle实例运行在数据库Server主机上,用户进程通过SQL*Net连接到Server主机,Server根据UserProcess的请求启动一个ServerProcess用户通过SQL语句向Server发出查询或者修改数据信息的请求,并且提交。数据库Server进程接到请求后检测SGA区中SharePool中的共享SQL池是否有相同的SQL语句。如果有,Server进程检验用户的合法性,然后执行共享池中的SQL语句;如果没有,Server进程在共享池中产生一个新的SQL语句,可以供以后任何进程使用,然后执行此SQL语句。Server进程检测所有操作的表是否在共享池,如果在,则直接执行下一步;如果不在,从数据库文件中读取放到高速缓冲区中;此时如果需要擦除缓冲区中的脏数据块,则需要通过校验点CKPT进行校验,再执行下一步。将原来共享池中的数据写入到回滚段(RedoLogBuffer),通过LGWR在重演日志中生成该事务的一个拷贝。通过DBWR修改数据文件(DataFiles),将执行成功的信号返回到SGA区。将完成的事务记录到重演日志中。清除回滚段的信息。完成本次操作。说明:以上LCKn为lock(锁)情况,RECO为RECOVER(恢复)过程,SNPn为snapshotRefreshProcess(快照刷新进程),Qnnn为ParallelQueryProcesses(并行查询进程),ARCH为Archiver(物理热备份归档处理进程)第二部分:Oracle数据库的安装与建立、Oracle数据库的安装以ORACLE816在AIX操作系统上安装为例,下面介绍安装过程中的一些关键步骤和有关注意事项,详细安装请参考随机手册。需要运行oracle数据库的机器在安装系统时必须使swap区为为系统内存的2-3倍,建议为3倍。(如果物理内存超过1GB,则两倍就足够)建立Oracle软件的安装点:建议将安装点统一放在oracle用户缺省主目录:/home/oracle下,不需要手工创建安装点目录用SMIT建立:GROUP(oracle)和USER(oracle),并将oracle用户加入到这个组中如果上面步骤已经建立了安装点,将ORACLE用户主目录设置成安装点目录,如果没有建立了安装点,则可以用缺省主目录:/home/oracle,然后在用户主目录下建立orahome属主为orcle:oracle,将该目录作为ORACLE系统主目录,注意,ORACLE系统主目录应该与环境变量:ORACLE_HOME保持一致。在AIX操作系统上安装ORACLE数据库不需要调整内核参数。以oracle用户在X-WINDOWS界面登录(如果在PC上远程安装,需要用Reflection软件,记住,不管是在本机还是在客户端安装,均要用采用英文环境安装,否则,安装可能出问题!)然后修改两个文件:.profile和.dtprofile,将.profile文件修改成:umask022exportTERM=vt100exportDISPLAY=localhost:0.0exportORACLE_BASE=/home/oracleexportORACLE_HOME=$ORACLE_BASE/orahomeexportORACLE_SID=zxinexportPATH=$PATH:$ORACLE_HOME/bin:.exportCLASPATH=JRE_Location:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlibexportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/libexportLIBPATH=$LIBPATH:$ORACLE_HOME/libexportLANG=Zh_CNexportLOCPATH=/usr/lib/nls/locexportNLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.catset-oviPATH=$PATH:/usr/vac/binexportPATHPS1='$PWD$';exportPS1然后将.dtprofile文件中最后一行:#DTSOURCEPROFILE=true前面的#号去掉在图形界面中开启终端窗口:然后用su命令以超级用户登录,运行以下命令:mount/cdrom(由于已经制作/cdrom文件系统,所以可以直接mount,不需要CDROM设备号)退出图形界面,右键选择’logout',以oracle用户重新登录使环境变量生效cd/cdrom然后在当前目录下运行./runlnstaller开始oracle的安装安装选择注意事项:选择需要安装的ORACLE产品:Oracle8iEnterpriceEdition.0选择安装类型:custom产品语言中(productlanguage)增加:SimplifiedChinese安装过程提示是否要建缺省数据库,选择NO安装最后阶段根据提示运行root.sh完成用超级用户权限的有关配置。系统安装完毕后,生成缺省系统管理员用户:system和sys,默认密码分别为manager禾口change_on_install。安装过程结束后,安装程序会利用Net8进行网络配置:在图形界面下按照要求添入本机IP地址,端口号和服务名,系统自动生成$ORACLE_HOME/network/admin目录下的两个文件:listener.ora禾口tnsnames.ora以超级用户,修改侦听端口文件:#vi/etc/services,在文件的最后添加:listener11521/tcp#oraclelistenerport1listener21521/tcp#oraclelistenerport2、Oracle数据库启动和关闭启动数据库:(1)可以利用写好的脚本文件自动启动%dbstart或者依照以下步骤启动:首先以oracle用户身份启动ServerManager,以数据库系统管理员用户连接到数据库,连接到internal.$svrmgrl(命令格式进入数据库管理状态)SVRMGR>connectinternal(以sysdba身份登录)(2)启动Oracle实例(Instanee)、Mount数据库(database)、打开数据库SVRMGR>startup(默认方式为启动实例,mount数据库和打开数据库步骤打开数据库,即:Startupnomountalterdatabasemountalterdatabaseopen)如果不以默认方式启动数据库,可以有以下几种方式:•启动实例,mount数据库,但不打开数据库•启动实例,mount数据库,打开数据库•带参数文件的方式启动数据库SVRMGR>startuppfile=/path/pfilename.•打开数据库后,可以执行下述指令来限制只有拥有”RestrictedSesstion系统特权的用户才可以登录到数据库SVRMGR>altersystemenablerestrictedsession用下述语句解除该限制:SVRMGR>altersystemdusablerestrictedsession⑶授权SQLNET可以远程访问该数据库,启动Listener进程:$1snrctlstart启动ORCLE侦听后台进程,如果已经启动,可以先用:lsnrctlstop关闭后再启动,然后用:tnsping[servicename]检测Listener后台进程是否启动关闭数据库⑴先关闭Oracle的ListenerServer,以Oracle用户执行$1snrctlstop。⑵再关闭Oracle数据库,进入数据库管理状态:SVRMGR>connectinternal:SVRMGR>shutdown:(缺省为normal方式,停止接受新的数据库联机请求,等待当前所有联机请求处理完正执行的联机程序,等待数据所有的Commit和rollback执行完成以后关闭数据库。)SVRWGR>shtudownimmediate;(停止接受新的数据库联机请求,立即中断目前所有联机用户正执行的SQL指令,回滚所有用户尚未承诺的交易后立即关闭数据库)SVRMGR>shutdownabort(立即终止一切对数据库的所有会话,关闭数据库实例。此种方式立即关闭数据库以后,当下一次启动数据库时‘Oracle需要做很多修复数据库工作,所以启动会花较长时间。)三、建立数据库1、创建数据库安装完数据库以后,需要根据应用程序的需求建立一个相应能满足要求的数据库。创建数据库的主要步骤如下:(1)通过应用情况设计和决定数据库的内容。(2)设计数据库的结构使得数据库内容紧凑和减少碎片(初步创建时可以使用默认设置)。(3)安装时事先定好ORACLE用户的环境变量,主要有:ORACLE_SID、ORACLE_HOME和相关的路径设置。(4)从标准例子的init.ora文件中拷贝和编辑参数文件。必须配置的参数有db_name(数据库名称)、control_files(控制文件名称和位置,可以有多个)和重做日志文件个数等等,其它各项可以在安装数据库时设置成默认参数。具体有以下参数值得重视:Db_block_size:该参数设置ORACLE数据库DatabaseBlock的大小,它代表ORACLE数据库数据存取的最小单位,最好是操作系统块大小的整数倍为宜,较大的设置值可以减少大量存取数据的时间,但会浪费磁盘空间,该参数在创库时一旦设置,便不能更改,除非重新创建数据库,一般设置大小:4096或8192Db_block_buffers:该参数设置ORACLE数据库内存缓冲区块的个数,该参数和Db_block_size的乘积即为整个数据高速缓冲区DatabaseBufferCache的大小,该值要根据系统物理内存情况设置成一个比较大的数Log_checkpoint_timeout:该参数设置距上次触发checkpoint事件过多少秒后触发下一次checkpoint事件,该值设大可以减少磁盘I/O的频繁程度,推荐设置(缺省设置):1800[秒]Log_buffer:该参数设置RedoLogBuffer的大小,设大该值,可以减少Redo日志文件磁盘I/O。nls_language:该参数设置国家语言有关的各种NLS数据显示格式参数,推荐设置:“SIMPLIFIEDCHINESE”。nls_territory:该参数设置国家惯例有关的各种NLS数据显示格式参数,推荐设置:“CHINA”shared_pool_size:该参数主要包含共享SQL池、字典高速缓冲区,设大该值可以增加运行SQL语句和数据字典在内存中的占有率,以此增加数据库SQL语句的执行效率,推荐设置较大的值连接到数据库的Server端启动svrmgrl,连接成internal状态。以nomount方式启动数据库SVRMGR>startupnomount使用createdatabase的sql命令创建数据库主要格式:sql>createdatabasedatabasename[controlfile1[controlfile2]]2>[logfile[groupn]filespec][datafilefilespec][maxdatafilesn]3>[archivelog(noarchivelog)]注意:filespec包括文件的位置、名称、大小。举例:SVRMGR>createdatabasetest2>datafile7data1/oracle/dbfile/test.dbfsize100Mreuseautoextendon3>next5Mmaxsize200M4>logfilegroup17data1/oracle/dbfile/redo01.log'size30M,5>group27data1/oracle/dbfile/redo02.log'size30M6>charactersetZHS16GBK;为保证数据库的安全性创建多个redolog文件和controlfiles文件。增加controlfile文件:SVRMGR>shutdown$cpcontrolfile1controlfile2$编辑initdbname.ora修改有关control_file=(path/controlfile1,path/controlfile2)的内容重新启动数据库即可完成。增加redolog的个数,需要修改数据库完成,举例:SVRMGR>alterdatabasetestaddlogfilemember2>7data1/oracle/dbfile/redo03.log'togroup1;创建表空间命令和步骤:进入svrmgrl状态,即SVRMGR>connectinternal,命令为createtablespace有关参数说明:名称,数据文件,位置,大小举例:(1)创建新的表空间SVRMGR>createtablespacetestspacedatafile7data1/oracle/dbfile/test.dbf2>size100Mreuseautoextendonnext5Mmaxsize200M;(2)增加表空间到已存在的表空间SVRMGR>altertablespacetestspaceadddatafile7data1/oracle/dbfile/test1.dbf2>size20Mreuseautoextendonnext5Mmaxsize100M;(9)创建用户(user)、授权(grant)、创建角色(role)Oracle数据库安装完成以后就有两个系统用户system和sys,如果需要创建其他用户,首先以system用户连接,默认密码为managersqlplussystem/manager(1)创建用户:基本命令:sql>createuserusernameidentified{bypasswrd|externaly}2>[defaulttablespacetbname1][temporarytablespacetbname2]3>[quota10Montbspacename1][quota2Monsystem]4>profiledefault;举例:创建用户:sql>createuserjokeidentifiedbyabcd1234;创建用户:sql>createuserjoke1idetifiedby1234abcdefault2>tablespacetestspacetemporaytablespacetemp_ts3>quota100Montestspacequota30Monsystem4>profiledefault;修改密码:sql>alteruserjokeidentifiedby1234cdef;修改用户:sql>alteruserjokeidentifiedby1234cdefdefault2>tablespacedata_tstemporarytablespacetemp_ts3>quota120Mondata_tsprofiledefault;删除用户:sql>dropuserjoke[cascade];(cascade选项代表连同用户所有的对象一起删除)(2)授权(grant):包括授予系统权限和授予用户权限系统权限:命令格式:sql>grant{systemprivilege|role}[,{systemprivilege|role},...]2>to{user|role}[,{user|role}]...[withadminoption]授予权限sql>revoke{systemprivilege|role}[,{systemprivilege|role}...]2>from{user|role}[,{user|role}]...收回权限举例:sql>grantsystemprivilegetojoke;sql>revokesystemprivilegefromjoke;对象权限:命令格式:sql>grantobjectprivilege[(column[,column])]onobjectto{user|role}2>[withgrantoption]用户可授予的权限包括:all,alter,delete,execute,index,insert,references,select,update用户授权的对象包括:表、视图、序列、过程、函数、包、快照或者这些对象的同义词。举例:sql>grantselectonCOMFORTtojoke(目前的连接用户授予joke对表COMFORT的select访问权限。)sql>grantallonSOMEFORTtojokewithgrantoption(目前的连接用户授予joke对视图SOMEFORT的所有权限,包括joke可以将其转授予其他用户或角色)sql>grantallonSOMEFORTtorole_jokewithgrantoption(将权限授予角色role_joke)创建角色(role)角色的含义是具有同种权限的用户集,类似于UNIX系统的组的概念,即可以将相关的权限授予角色,然后将相关的角色授予相关的用户,则此类用户就会拥有与角色相同的权限,不用一个一个地授予。一共有三种标准的角色:①连接角色(ConnectRole),临时用户,尤其是那些不需要建表的用户,一般给予他们connectrole,其他权限必须另外授予。②资源角色(ResourceRole),对经常性访问数据库或者更成熟的用户可以授予resourcerole,这些用户可以创建自己的表、序列、过程等对象。③数据库管理员角色(DBARole),拥有所有的系统权限。命令格式:sql>createrolename[{notidentified|identified}]2>[{bypassword|externally}]举例:sql>createrolemanageridentifiedexternally;sql>createroleclerkidentifiedbyaaabbb1;修改密码:sql>alterroleclerkidentifiedbybbbccc1;授予角色权限命令和授予用户一样,角色的权限还可以授予用户,关系图所示。建表、建视图、建索引表由表名、列、和数据类型三部分组成,对有createtable,createindex权限的用户都可建表,建索引权限。(1)简单命令和语法:sql>createtabletable_name(column_namedatatype[{null|notnull}|{constraintconstraint-nameunique|primarykey}];sql>createviewview_nameasselect{*|column}fromtable_namewherecondition;sql>create[unique|bitmap]indexindex_nameontable_name(column_name[,column_name](2)举例•建表(createtable)①直接创建表:sql>createtableacctinfo(2>acctdatechar(10)notnull,3>acctuservarchar(IO)notnull,4>acctstartvarchar(20)notnull,5>acctendvarchar(20)notnull,6>acctuseintnotnull,7>accthalfintnuII,8>acctipvarchar(20)notnull,9>primarykey(acctuser,acctip))10>TABLESPACETEST_SP;根据已经存在的表创建新表sql>createtableacctnewasselectacctdate,acctuser,acctuse2>whereacctip='4:•建视图(createview)sql>createviewacct_viewasselectacctuser,acctip,acctusefromacctinfo2>whereacctuse>500and(acctip='4'oracctip='5');•建索引createindex举例sql>createindexacctindexlonacctinfo(acctip);sql>createindexacctindex2onacctinfo(acctuse,acctuser);sql>createindexacctindex3onacctinfo(acctdate,acctuser,acctuse,acctip);•修改表:sql>altertableacctinfomodify(2>acctbakvarchar2(300)null);•删除表:sql>droptableacctinfo;•删除表内容而保留其结构sql>truncatetableacctinfo;备注:以上建表和建索引部分可以通过写成脚本文件执行来完成
第三部分.ORACLE数据库的应用数据库的应用处理部分主要包括对数据库表的查询、修改、插入、删除、建立临时表、修改表的基本操作,通过数据库应用部分才能达到管理数据信息,处理各种数据,完成相应的数据处理和信息管理工作。查询查询查询,select主要命令和语法:sql>select/*+index(index_name)*/[all|distinct|unique]select_list2>[fromtable_name]3>[wheresearch_conditions]4>[groupby[al]aggregate_free_expression[,aggregate_free_expression]....]5>[havingsearch_conditions]6>[orderbytable_name.column_name]7>[unionanother_select_querylist];关键字和选项all缺省值,指示结果含所有的行;distinct|unique结果中含有非重复行;select_list包含一项或多项以下内容:*,表示按照createtable的顺序排列的所有列,Column_name1,column_name2,...可以使用常量,算术表达式等。From决定select命令使用那些表和视图,一般必须有这一项;Where需要查询的条件Orderby按照不同的列排序Groupby按照不同的列归类Having与Groupby结合用,按指定条件过滤已经分类的查询UNION表示联合多步查询举例:(1)基本查询查询所有表BCOL_REG_ACCT中的所有数据:sql>select*frombcol_reg_acct;查询BCOL_REG_ACCT中的两列,登录日期LOGIN_DATE和起始时间START_TIME:sql>selectLOGIN_DATE,START_TIMEfromBCOL_REG_ACCT;查询所有LOGIN_DATE='JUN-20-1998'的两列LOGIN_DATE和用户用户名LOGIN_NAME:sql>selectLOGIN_DATE,LOGIN_NAMEfromBCOL_REG_ACCT2>whereLOGIN_DATE='JUN-20-1998';查询出所有用户名LOGIN_NAME为abcde,登录日期大于'JUN-20-1998'的所有三列LOGIN_DATE丄OGIN_NAME,START_TIME,并且按照登录日期的顺序排列:sql>selectLOGIN_DATE,LOGIN_NAME,START_TIMEfromBCOL_REG_ACCT2>whereLOGIN_NAME='abcde'andLOGIN_DATE>'JUN-20-1998'3>orderbyLOGIN_DATE;非等值条件查询,查询出所有用户名以abc开头,登录时间界于JUN-10-1998和JUN-20-1998之间,连接时长不等于5000的所有列,并以LOGIN_NAME反向排序:sql>select*fromBCOL_REG_ACCT2>whereLOGIN_NAMElike'abc%'3>andLOGIN_DATEbetween'JUN-10-1998'and'JUN-20-1998'4>andCONNECT_DUR!=50005>orderbyLOGIN_NAMEdesc;使用空值(NULL)查询:查询出LOGIN_NAME,LOGIN_DATE,如果为空值则以JUA-01-1998代替,START_TIME符合LOGIN_NAME不为空,且START_TIME为空的列。sql>selectLOGIN_NAME,nvl(LOGIN_DATE,JUA-01-1998),START_TIME2>fromBCOL_REG_ACCT3>whereLOGIN_NAMEisnotNULL4>andSTART_TiMEisNULL;基于值集的查询,查询出用户名LOGIN_NAME在abcde,abcdf,abcdg,abcdh中,且日期LOGIN_DATE大于'JUN-20-1998'和小于'MAY-20-1998'的所有列并且按照LOGIN_DATE的顺序排列,并按照LOGIN_DATE归类,即每天为一类数据。Sql>select*fromBCOL_REG_ACCT2>whereLOGIN_NAMEin('abcde','abcdf,'abcdg','abcdh')3>and(acctdate>='06/20/1998'oracctdate<'05/20/1998')4>orderbyacctdate,groupbyacctdate;使用表达式查询出符合留入字节树大于1000的所有连接时长(CONNECT_DUR)和留入字节数与加上1000再除以100的数值:sql>selectCONNECT_DUR,(BYTES_IN+1000)/100fromBCOL_REG_ACCT2>whereBYTES_IN>1000;查询出BYTES_IN大于100*10即1000且节点号等于10的LOGIN_NAME空格加上NODE_ID加上两个空格再加上(BYTES_IN+1000)/100的值:sql>selectLOGIN_NAME||''||NODE_ID||''||(BYTES_IN+1000)/1002>fromBCOL_REG_ACCTwhereBYTES_IN>100*10andnode_id=10;使用特殊的伪列查询1周以后的日期从一个特殊的系统表dual。伪列主要有如下几种:sequence.CURRVAL:上一次有序列产生器产生的序列名值。只有当前实例会话中从该序列中选择过一次值,这个伪列才会有效。LEVEL:查询的深度,适用于特殊的树查询。Sequence.NEXTVAL:使得每次的检索都返回下一个值ROWID:表示数据行确切的存储位置。其格式是一个三个16进制的结构AAAAAAAA.BBBB.CCCC,AAAAAAA为该行的块号,BBBB是数据块内部的行号,而CCCC则是数据库中的文件IDROWNUM:被检索数据行的序列号SYSDATE:当前日期和时间UID:当前用户的标识IDUSER:用户登录数据库的用户名sql>selectsysdate+7fromdual;sql>selectUSER.sequence.currvalfromdual;使用列和表的别名、查询中的多表连接以及使用子查询和distinct去掉重复记录查询查询出BCOL_REG_ACCT表中的LOGIN_NAME,LOGIN_DATE,CONNECT_DUR列和ANODE_NODEINFO中的NODE_ID列,符合两个表中的NODE_ID列相等并且LOGIN_NAME在表AUSR_ACCOUNTINFO的列LOGIN_NAME中且名字以abc开头且没有重名的条件,按照ANODE_NODEINFO表中的NODE_ID排序:sql>selectb.LOGIN_NAME,bLOGIN_DATE,c.NODE_ID,b.CONNECT_DUR2>fromBCOL_REG_ACCTb,ANODE_NODEINFOc3>whereb.NODE_ID=c.NODE_ID4>andb.LOGIN_NAMEin5>(selectdistinetLOGIN_NAMEfromAUSR_ACCOUNTINFO6>whereLOGIN_NAMElike'abc%')7>orderbyc.NODE_ID;Union、Intersect和Minus等操作符连接的多步查询查询出两各表中满足各自条件的用户名,UNION即两个查询的并集:sql>selectLOGIN_NAMEfromBCOL_REG_ACCT2>whereCONNECTION_DUR>5OOO3>andLOGIN_NAMElike'abc%'4>UNION5>selectLOGIN_NAMEfromAUSR_ACCOUNTINFO6>whereLOGIN_NAMElike'%abc%'7>andNODE_ID=8;类似地,INTERSECT返回出现在所有单个查询结果中都存在的数据行(即两个查询结果的交集);MINUS返回只出现在第一个查询结果中且不出现在第二个查询结果中的数据行(即两个查询的差集)。复杂查询①递归查询:构造树的递归查询:树查询是在标准的select语句中增加两个新子句完成。.CONNECTBY子句定义表中的各个行是如何互相联系的,connectby子句中也可以加入更多的条件语句来删除没有必要的树的分枝。.STARTWITH子句定义数据行查询的初始起点。可以定义不同的起点来实现向上或者向下浏览。以下例子connectby指定半价时间必须等于前面已经选择过的连接时长。Startwith子句指定从用户名为abc的用户开始。Sql>selectLOGIN_NAME,CONNECT_DUR,DISCOUNT_DUR2>fromBCOL_REG_ACCT3>connectbyDISCOUNT_DUR=priorCONNECT_DUR-4>startwithLOGIN_NAME='abc:外连接查询:外连接即是在被连接的表中数据中加入一个空行来匹配没有与其匹配的数据,以下例子中第三行的(+)即是外连接查询,将没有匹配的行加入一行空行。sql>selectb.LOGIN_NAME,a.NODE_ID2>fromBCOL_REG_ACCTb,ANODE_NODEINFOa3>whereb.NODE_ID(+)=a.NODE_ID4>orderbyb.LOGTN_NAME,a.NODE_ID;相关子查询:相关子查询就是在其where条件中引用了主查询中表的子查询:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电气安装建筑与土木工程考核试卷
- 航班空中餐食文化考核试卷
- 科技创新与趋势的项目管理研究考核试卷
- 纤维板行业区域发展差异考核试卷
- 探索光的世界
- 四川省遂宁高级实验校2025年初三下学期第五次调研考试生物试题试卷含解析
- 嘉峪关市重点中学2025届初三2月份网络联考试卷语文试题含解析
- 南宁师范大学师园学院《固体理论II》2023-2024学年第一学期期末试卷
- 江苏省张家港第二中学2024-2025学年高三下学期第一次诊断考试英语试题含解析
- 宁波市重点中学2025年高三联考(三)语文试题含解析
- 大学计算机基础知到智慧树章节测试课后答案2024年秋海南师范大学
- 《矿山隐蔽致灾因素普查规范》解读培训
- 第二届代理记账业务技能试题题库及答案
- 2024年版钢箱梁制造与安装合同3篇
- 考而析得失思而明未来-考后分析班会-主题班会 课件
- 物业业主入住仪式活动方案
- 《GMP知识培训》课件
- 广西来宾市兴宾区2024-2025学年七年级上学期期中生物学试题(含答案)
- 河道保洁应急服务
- 酱香型白酒堆积发酵异常的研究现状与展望
- 房屋永久居住权合同范本
评论
0/150
提交评论