Oracle教程

上传人:you****now 文档编号:156903508 上传时间:2022-09-28 格式:DOCX 页数:156 大小:1.57MB
收藏 版权申诉 举报 下载
Oracle教程_第1页
第1页 / 共156页
Oracle教程_第2页
第2页 / 共156页
Oracle教程_第3页
第3页 / 共156页
资源描述:

《Oracle教程》由会员分享,可在线阅读,更多相关《Oracle教程(156页珍藏版)》请在装配图网上搜索。

1、Evaluation Warning: The document was created with Spire.Doc for .NET.Oracle教案第1章 Oracle基础知识1.1 Oracle简介oracle是殷墟(Yin Xu)出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词,在英语里是“神谕”的意思。Oracle的的四大创始人Oracle数数据库中有个默认用户户SCOTTT,就是Brruce SScott,而而SCOTTT用户的默认认密码tigger,是当当时 Scoott养的一一只猫的名字字。2009年4月月Oraclle公司以774亿美元

2、收收购SUN公公司。1.2 Oraacle 的的版本Oracle 8i(internnet) : 表示Oraccle公司开开始正式进入入互联网。Oracle 9i : 与Oraclle8i相关关,性能更佳,管理更人性性化。Oracle 10g(grrid): 网格技技术Oracle 11g(gridd): 网格技技术网格是利用互联联网把地理上上广泛分布的的各种资源(包包括计算资源源、存储资源源、带宽资源源、软件资源源、数据资源源、信息资源源、知识资源源等)连成一一个逻辑整体体,就像一台台超级计算机机一样,为用用户提供一体体化信息和应应用服务(计计算、存储、访访问等),彻彻底消除资源源“孤岛”,

3、最充分的的实现信息共共享。1.3 Oraacle的安安装(演示)重要概念:1. 全局数据据库名与SIID1) 全局数据库名是数据库的名称称,当数据库处于于网络中时,为为标识该数据据库的网络位位置,需要用用数据库名和和网络位置组组成其全局数数据库名,其其命名格式是是:databbase_nname.ddatabaase_doomain。例如:m,其中salees为数据库库名,为为数据库域。指定全局数据库库名时,尽量量为数据库选选择能够反映映其用途的名名称,例如ssales。数数据库域用于于将数据库与与分布式环境境中的其他数数据库区分开开来。例如在在上海的数据据库可以命名名为,北北京的数据库库可以

4、命名为为saless.beijjing.ccom。即使使数据库名都都相同,但数数据库域不同同,所以也能能区分开。2) SID(数据库库实例名)用于对外相连时时使用。Oracle实实例(Insstancee)是用来访访问数据库文文件集的存储储结构与后台台程序的集合合。Oraccle数据库库其实是磁盘上上的一堆文件件;为了启动动数据库即访访问这堆文件件,需要在内内存中创建它它的一个实例例,然后由实实例加载并打打开数据库。用户连接数数据库时,实实际上是连接接到实例,然然后由实例负负责与数据库库通信,再将将处理结果返返回给用户。Oracle中中一个数据库库至少有一个个实例与之对对应,但一个个数据库也可

5、以对应多多个实例,被被多个实例访访问。因此SSID主要用用于区分同一一台计算机上上不同的实例例。对于单实例例数据库,其其SID通常常与数据库名名相同。一个运行着的OORACLEE数据库可以以看成是一个个ORACLLE SERRVER,该该SERVEER由数据库库(Dataabase)和实例(Innstancce)组成,一般情况下一个个ORACLLE SERRVER包含含一个实例和和一个与之对对应的数据库库,但是在特殊殊情况下,如8i的OPS,99i的RAC,一个个SERVEER中一个数数据库可以对对应多个实例例。当某一实实例出现故障障时,其他实实例自动服务务。2. Oraccle的常用用账户用

6、户名角色默认密码说明sys超级管理员change_on_innstalll所有oraclle的数据字字典的基表和和视图都存放放在sys用用户中,这些些基表和视图图对于oraacle的运运行是至关重重要的,由数数据库自己维维护,任何用用户都不能手手动更改。ssys用户拥拥有dba,ssysdbaa,sysooper等角角色或权限,是是oraclle权限最高高的用户。sywstemm普通管理员Managerr用于存放次一级级的内部数据据,如oraacle的一一些特性或工工具的管理信信息。sysstem用户户拥有普通ddba角色权权限。可用来来创建其他用用户。scott普通用户(练习习常用)Tige

7、r在默认情况下从从Oraclle10g开始,sscott不不能登陆。被被禁用了。需需要手工解锁锁。3. 安装后的的注意事项: Oracle安安装完成后至至少要启动两两个服务:OracleOOraDb111g_hoome1TNNSListtener : 监听器,监听程序序的服务进程程。OracleSServicceORCLL : 主服务务,是Oraccle数据库库实例的服务务进程。建议将启动类型型改为手动。1.4 Oraacle的常常用管理工具具1. 使用SQQL * PPlus在Oraclee中,用户对对数据库的操操作主要是通通过SQL*Plus工工具来实现的的。应用举例:(1). 查看看当前

8、连接用用户SQL shhow usser(2). 查看看全局数据库库名SQL SEELECT * FROOM gloobal_nname; (4). 清空空屏幕SQL cll scr ; 2. 使用Orracle Enterrprisee Manaager(OOEM)Oracle Enterrprisee Manaager(OOEM)提供供了基于Weeb界面的、可可管理单个数数据库的工具具。使用步骤:(1) . 启启动OraccleDBCConsolleorcll服务(2) . 启启动浏览器,输输入OEM的的URL地址址(httpps:/主主机名:11158/emm),或者直直接在【开始始】菜

9、单的OOraclee程序组中选选择Dataabase Contrrol orcll命令即可。(3) . 注注意事项:只能用sys和和systeem用户登陆陆,sys必必须用SYSSDBA身份份登陆。3. 使用DBBCA创建数数据库如果在安装Orracle时时选择仅安装装数据库服务务器软件,而而不创建数据据库,就需要安装后手动创建数据据库。如果在在系统中已经经存在Oraacle数据据库,为了充充分利用服务务器的资源,建建议不要再创创建一个数据据库。DBCA(Daatabasse Connfigurrationn Assiistantt)是一个图图形化用户界界面的工具, DBA通过它可以快速、直观

10、地创建数据库。选择【开始】【程序】Oraclle - OOraDb111g_ home11|【配置和移置置工具】Databbase CConfigguratiion Asssistaant命令,打开DBCA界面面。用户只需要根据据DBCA的的提示逐步进进行设置,就就可以根据相相应配置创建建数据库。第2 章 SQQL * PPlus命令令2.1 用户管管理命令1. 更改用户户登录命令格式:coonn 用户户名/密码 AS SYSDBBA 注意:如果连接接的是超级管管理员(SYYS),必须须写上 ASS SYSDDBA2. 用户加锁锁和解锁加锁:SQL alteer useer 用户名名 acco

11、ount llock; 解锁:SQL alteer useer 用户名名 accoount uunlockk;3. 更改用户户密码命令格式:SQQL allter uuser 用用户名 iddentiffied bby 密码;注意,如果忘记记所有用户的的密码,可启启动SQL* Pluss,输入以下下命令:conn / as syysdbaSQL allter uuser 用用户名 iddentiffied bby 密码;2.2 其他他常用命令1. helpp 命令SQL*Pluus有许多命命令,而且每每个命令都有有大量的选项项,要记住每每一个命令的的所有选项是是很困难的。SSQL*Pllus提

12、供了了内建的帮助助系统,可以以使用HELLP命令查询询相关的命令令信息。命令格式:SQQL heelp 命令令名示例:查看conn命命令的帮助信信息SQL heelp coonn ; 查看SQL*PPlus的命命令清单SQL heelp inndex ; 查看SQL*PPlus的关关键字清单SQL heelp reeservee wordds ;2. desccribe命命令describbe命令可以以缩写为deesc,用来来列出表或视视图各个列的的名称以及属属性。命令格式:SQQL deesc obbject_name ;示例:查看scottt用户的emmp表的结构构SQL deesc sc

13、cott.eemp;3. set linessize 命命令系统默认每行打打印80个字字符,当SQQL*Pluus输出liinesizze指定数量量的字符后,随随后的数据就就会折叠到下下一行显示。命令格式:SQQL seet linnesizee numbber示例:SQL shhow liinesizze ;SQL seet linnesizee 800 ;4. set pagessize 命命令当SQL*Pllus执行查查询语句时,sset paagesizze命令可以以设置一页显显示的行数。命令格式:SQQL seet paggesizee numbber 示例:SQL shhow pa

14、agesizze ;SQL seet paggesizee 30 ;5. pausse命令如果在SQL*Plus中中运行的查询询语句可以返返回多行数据据,以至于无法法在窗口中一一次显示完,输出窗口会会快速滚动显显示。可以设设置环境变量量pausee为on来控控制显示完一一页后暂停显显示,直到按按回车键才继继续显示下一一页数据。pause选项项还可以设置置暂停后显示示的字符串,以以便提示用户户。命令格式:SQQL seet pauuse onn; SQQL seet pauuse 按回车键继继续 ;6. 命令用于执行脚本文文件。命令格式:SQQL 文文件名;注意:需写文件件路径;sqql文件的后

15、后缀可以不写写。7. 继续使用用上次命令命令格式:SQQL /2.3 常用数数据字典视图图数据字典是Orracle数数据库的核心心组件,是数据库中的的所有对象信信息的知识库库,提供了数据据库结构、数数据库对象空空间分配和数数据库用户等等有关的信息息。任何数据库用户户都无法对数数据字典中的的内容进行修修改,但可以以查看数据字字典中的内容容。数据字典典中的信息通通过表和视图图的形式组织织。数据字典中的信信息实际上保保存在基础表表中,只有OOraclee系统才有权权读取和写入入基础表。基基础表中存储储的信息通常常是经过加密密处理的。而而视图是一种种虚拟表,它它本身并不包包含数据,用用户可以通过过数据

16、字典视视图来获取信信息,而不需需访问数据字字典表。数据字典视图分分类:视图类型说 明USER视图USER视图的的名称以usser_为前前缀,用来记记录用户对象象的信息。例如user_tablees视图,它它记录用户的的表信息ALL视图ALL视图的名名称以alll_为前缀,是UUSER视图图的扩展。用用来记录用户户对象的信息息以及被授权权访问的对象象信息。例如如all_ssynonyyms视图,它它记录用户可可以存取的所所有同义词信信息DBA视图DBA视图的名名称以dbaa_为前缀,用用来记录数据据库实例的所所有对象的信信息。例如dba_ttabless视图,通过过它可以访问问所有用户的的表信息

17、V$视图V$视图的名称称以v$为前缀,用用来记录与数数据库活动相相关的性能统统计动态信息息。例如v$dattafilee视图,它记记录有关数据据文件的统计计信息GV$视图GV$视图的名名称以gv$为前缀,用用来记录分布布式环境下所所有实例的动动态信息。例如gv$loock视图,它它记录出现锁锁的数据库实实例的信息基本数据字典视视图字典名称说 明dba_tabbles所有用户的所有有表的信息dba_tabb_coluumns所有用户的表的的字段信息dba_vieews所有用户的所有有视图信息dba_synnonymss所有用户的同义义词信息dba_seqquencees所有用户的序列列信息dba

18、_connstraiints所有用户的表的的约束信息dba_inddexes所有用户的表的的索引简要信信息dba_indd_coluumns所有用户的索引引的字段信息息dba_triiggerss所有用户的触发发器信息dba_souurces所有用户的存储储过程信息dba_seggmentss所有用户的段的的使用空间信信息dba_exttents所有用户的段的的扩展信息dba_objjects所有用户对象的的基本信息cat当前用户可以访访问的所有基基表tab当前用户创建的的所有基表、视视图和同义词词等dict构成数据字典的的所有表的信信息与数据库组件相相关的数据字字典数据库组件数据字典中的表表

19、或视图说 明数据库v$dataffile记录系统的运行行情况表空间dba_tabblespaaces记录系统表空间间的基本信息息dba_freee_spaace记录系统表空间间的空闲空间间的信息控制文件v$contrrolfille记录系统控制文文件的基本信信息v$contrrolfille_reccord_ssectioon记录系统控制文文件中记录文文档段的信息息v$parammeter记录系统各参数数的基本信息息数据文件dba_datta_filles记录系统数据文文件以及表空空间的基本信信息v$filesstat记录来自控制文文件的数据文文件信息v$dataffile_hheaderr记

20、录数据文件头头部分的基本本信息段dba_seggmentss记录段的基本信信息数据区dba_exttents记录数据区的基基本信息日志v$threaad记录日志线程的的基本信息v$log记录日志文件的的基本信息v$logfiile记录日志文件的的概要信息归档v$archiived_llog记录归档日志文文件的基本信信息v$archiive_deest记录归档日志文文件的路径信信息数据库实例v$instaance记录实例的基本本信息v$systeem_parrameteer记录实例当前有有效的参数信信息内存结构v$sga记录SGA区的的大小信息v$sgasttat记录SGA的使使用统计信息息v$

21、db_obbject_cachee记录对象缓存的的大小信息v$sql记录SQL语句句的详细信息息v$sqlteext记录SQL语句句的语句信息息v$sqlarrea记录SQL区的的SQL基本信信息后台进程v$bgproocess显示后台进程信信息v$sessiion显示当前会话信信息常用动态性能视视图视图名称说 明v$fixedd_tablle显示当前发行的的固定对象的的说明v$instaance显示当前实例的的信息v$latchh显示锁存器的统统计数据v$libraarycacche显示有关库缓存存性能的统计计数据v$rollsstat显示联机的回滚滚段的名字v$rowcaache显示活动数

22、据字字典的统计v$sga显示有关系统全全局区的总结结信息v$sgasttat显示有关系统全全局区的详细细信息v$sort_usagee显示临时段的大大小及会话v$sqlarrea显示SQL区的的SQL信息v$sqlteext显示在SGA中中属于共享游游标的SQLL语句内容v$stssttat显示基本的实例例统计数据v$systeem_eveent显示一个事件的的总计等待时时间v$waitsstat显示块竞争统计计数据应用举例:1 . 查看所所有用户SQL SEELECT usernname, accouunt_sttatus FROM dba_uusers ; * OPEN表表示账户为解解锁状

23、态;EEXPIREED表示账户户为过期状态态(需要设置置口令才能解解除此状态);LOCKKED表示账账户为锁定状状态。2. 查看SIIDSQL SEELECT instaance_nname FFROM vv$insttance;3. 查看当前前用户所有的的表信息SQL SEELECT * FROOM tabb ;* tablee(表)viiew(视图图)synoonym(别别名,与视图图类似)4. 查看所有有用户的表信信息SQL SEELECT tablee_namee , owwner FFROM ddba_taables ; 5. 查看指定定用户的表信信息SQL SEELECT tabl

24、ee_namee , owwner FFROM ddba_taables wheree owneer=SCOTTT ;第3章 SQLL语句基础scott用户户有4个案例例表,可在日日常练习中使使用。3.1 Orracle内内置字段数据据类型数据类型字符型数据型日期时间型LOB型ROWID型1. 字符型CHAR型:定定长字符串,短短则用空格填填充,长则出出错。VARCHARR2型:变长长字符串。字字段长度根据据实际字符串串长度自动调调整,不用空空格填充。2.数值型NUUMBER(PRECIISION,SCALEE)精度PRECIISION指指定所有数字字位的个数,范范围SCALLE指定小数数的位

25、数,两两个参数均是是可选的。如如果插入的字字段数据超过过指定位数,将将自动四舍五五入。3.日期时间数数据类型DAATE可以存储日期和和时间的组合合数据。ORRACLE默默认的日期格格式是DD-MOON-YY。4.LOB数据据类型用于大型的、未未被结构化的的数据,如二二进制文件、图图片文件等。LOB数据类型又分为BLOB、CLOB和BFILE三种。BLOB类型:用于存储二二进制对象。如如图像、音频频、视频。CLOB类型:用于存储字字符格式的大大型对象。OOraclee将数据转换换成Uniccode格式式。BFILE类型型:将二进制制文件作为操操作系统文件件存储在数据据库外部,BBFILE类类型的

26、字段仅仅保存二进制制文件的指针针。5.ROWIDD类型亦称伪列类型,用用于保存表中中每条记录的的物理地址。每条记录都有唯一的rowid。ORACLE自动为每个表建立名称为ROWID的字段。可以对该字段进行查询。rowid确定定了每条记录录属于哪一个数数据对象、数据文件、块块、行。是基于64位位编码的188个字符显示示。其格式如下: 示例:ROWIID是隐含的的,检索表时时不会看到,须须显式指定名名称。SQL SEELECT rowidd , enname FFROM eemp ; 3.2 SQLL简介SQL(Strructurred Quuery LLanguaage)结构构化查询语言言,是一

27、种数数据库查询和和程序设计语语言,用于存存取数据以及及查询、更新新和管理关系系数据库系统统。SQL语言分为为3类:1数据定义语语言(DDLL)用来定义和管理理数据库中的的对象(如表、视图、存存储过程、触触发器)。由CREAATE、ALLTER、DDROP命令令构成。2数据操纵语语言(DMLL)针对数据库中存存储的数据进进行相关操作作,主要包括括增加(innsert)、删删除(dellete)、更更新(upddate)和和查询(seelect)四四种操作。在在实际工作中增加加、删除和更更新所占使用用DML比例例为20%,而而查询所占比比例为80%。3数据控制语语言(DCLL)用来管理用户对对指定

28、数据库库对象的使用用权限。常用操操作有分配(ggrant)和回收(revoke)。3.3 SELLECT语句句的用法在众多SQL语语句中,使用用频率最高的的是SELEECT语句,该该语句主用于于检索数据。虽然在前面已经使用了一些SELECT语句,但这些使用是零散的、不完整的。本节将对SELECT语句进行系统地、完整地介绍。SELECT语语句的完整语语法格式如下下:SELECT ALLL | DIISTINCCT * | expreessionn | coolumn11_namee , colummn2_naame , . FROM tablle1_naame | ( subbqueryy )

29、aliias , tablee2_namme | ( subqquery ) aliaas , . WHERRE connditioon CONNNECT BBY connditioon SSTART WITH condiition GROUUP BY expreessionn ,. HAVIING coonditiion ,. UNNION | INTEERSECTT | MIINUS ORDEER BY expreessionn ASSC | DDESC , . FOR UPDATTE OOF sschemaa. ttable_name | vieew ccolumnn NOWAIIT ;

30、3.3.1 检检索单表数据据检索单表数据是是指从单个表表中检索数据据,检索的结结果都是来自自于同一个表表中。在检索索数据的过程程中,既可以以检索所有的的列,也可以以检索部分列列。数据将按按照SELEECT子句后后面指定的列列的顺序显示示。如果使用用星号*,则则表示检索所所有的列,这这时数据将按按照定义表时时指定的列的的顺序显示。示例:SQL SEELECT * FROOM empp ; SQL SEELECT empnoo , enname , job , sall , deeptno FROM emp ; SQL SEELECT enamee AS 姓名 , job AS 职职位 , hir

31、eddate AAS 工作作日期 , sal AS 工工资 FRROM emmp ;SQL SEELECT enamee 姓名 , joob 职位位 , hhiredaate 工工作日期 , sall 工资 FRROM emmp ;SQL SEELECT 编号是 |emmpno| 的雇员员,姓名是 |enname| 的工作作是 |job FFROM eemp;SQL SEELECT DISTIINCT jjob FRROM emmp ;3.3.2 过过滤数据在SELECTT语句中可以以使用WHEERE子句过过滤数据,只只检索那些满满足过滤条件件的数据。通通过过滤数据据,可以从大大量的数据中中获

32、取自己所所需要的数据据。1.比较运算符符比较操作符说 明=等于、!=不等于=大于等于大于 SEELECT enamee , joob , hhiredaate , sal FFROM eemp WHHERE eempno=7521 ; SQL SEELECT enamee , joob , hhiredaate , sal FFROM eemp WHERE jjob=anny(CLLERK,ANALLYST) ;2.SQL运算算符SQL运算符说 明BETWEENN指定条件在两个个值之间,包包括边界值LIKE匹配的字符样式式,一般用于于模糊查询IN匹配的一个列表表值IS NULLL匹配空值注意:

33、表中SQQL运算符可可以与NOTT运算符取反反处理,例如如,NOT LIKE,NNOT BEETWEENN和IS NNOT NUULL等。示例:SQL SEELECT empnoo , enname , job , sall FROMM emp WHEREE enamme LIKKE S% ;SQL SEELECT empnoo , enname , job , sall FROMM emp WHEREE emmpno IIN (73369 , 7521 , 77889) ; SQL SEELECT empnoo , enname , job , sall FROMM emp WHEREE e

34、mmpno NNOT INN (73669 , 77521 , 77899) ; SQL SEELECT empnoo , enname , job , sall FROMM emp WHEREE saal BETTWEEN 1500 AND 22000 ;SQL SEELECT * FROOM empp WHERRE commm IS NULL; 3. 逻辑运算算符使用逻辑运算符符可以将简单单的条件组合合起来。运算符说明NOT取反,当条件为为真时,结果果为假;当条条件为假时,结结果为真。AND与,当两个条件件为真时,结结果为真OR或,当两个条件件中有一个为为真时,结果果为真示例:SQL SE

35、ELECT empnoo , enname , job , sall FROMM emp WHHERE sal=1500 AND ssal SEELECT empnoo , enname , job , sall FROMM emp WHHERE job=CLERKK OR job=SALESSMAN ;3.3.3 排排序数据在SELECTT语句中,可可以使用ORRDER BBY子句对检检索的结果集集进行排序。语法格式:SELECT 字段列表 FROM 表名 WHHERE 条条件 ORDDER BYY 字段名 ASCC | DEESC 示例:SQL SEELECT enamee , joob

36、, ssal FRROM emmp ORDDER BYY sal;SQL SEELECT enamee , joob , ssal FRROM emmp ORDDER BYY sal , enaame DEESC;SQL SEELECT enamee , joob , ssal FRROM emmp ORDDER BYY 3;3.3.4 多多表检索在实际应用中,经经常会碰到需需要检索的数数据存在于两两个或两个以以上的表中。这这时就需要使使用SELEECT语句执执行多表检索索。为了更好好地理解多表表检索操作,需需要理解表的的别名,笛卡卡尔积、内连连接、外连接接、自然连接接和交叉连接接等概念。1.

37、 表的别名名在多表查询时,如如果多个表之之间存在同名名的列,则必必须使用表名名限定列引用用。但随着查询变变得越来越复复杂,语句会会由于每次限限定列时输入入表名而变得得冗长。因此此SQL语言言提供了一种种机制表的别名名。可以在SSELECTT语句中为表表定义临时性性名称,简化化对表的引用用。示例:检索某一一部门的职工工信息(1) 没有使使用表的别名名SQL SEELECT enamee 姓名 , job 职位 , sal 工工资 , ddname 部门FROM emmp , ddept WHERE emp.ddeptnoo=deptt.depttnoAND deppt.dnaame=SSALES

38、 ;(2) 使用表表的别名SQL SEELECT e.enaame 姓名名 , e.job 职职位 , ee.sal 工资 , d.dnaame 部门门FROM emmp e, dept d WHERE e.depptno=dd.depttnoAND d.ddname=SALEES ;注意:一旦为表表指定了别名名,则必须在在整个剩余语语句中使用表表的别名,不不允许再使用用表原来的名名称。2. 内连接内连接是指满足足连接条件的的连接操作。语法格式:SELECT 字段列表 FROM 表名名1 IINNER JOINN 表名2 ON 连接表达达式示例:SQL SEELECT e.enaame , e

39、.jobb , e.sal , d.deeptno , d.ddnameFROM emmp e jjoin ddept ddON e.deeptno=d.depptno ;SQL SEELECT e.enaame , e.jobb , e.sal , d.deeptno , d.ddnameFROM emmp e , deptt dWHERE ee.depttno=d.deptnno ;3. 外连接如果某个表中的的数据不满足足连接条件,而而又要出现在在检索结果中中,可以使用用外连接。外连接可以分为为:左外连接:LEEFT OUTERR JOIIN右外连接:RIIGHT OUTEER JJOIN

40、全外连接:FUULL OUTERR JOOIN示例:(1)左外连接接SQL INNSERT INTO emp(eempno , enaame , job , sal )VALUES(8000,ATG,CLEERK,9950);SQL SEELECT e.enaame , e.jobb , e.sal , d.deeptno , d.ddnameFROM emmp e LEFT JOIN dept dON e.deeptno=d.depptno ;(2)右外连接接SQL SEELECT e.enaame , e.jobb , e.sal , d.deeptno , d.ddnameFROM em

41、mp e RIGHTT JOINN deptt dON e.deeptno=d.depptno ;(3)全外连接接SQL SEELECT e.enaame , e.jobb , e.sal , d.deeptno , d.ddnameFROM emmp e FULL JOIN dept dON e.deeptno=d.depptno ;4. 自然连接接使用自然连接检检索多个表时时,Oraccle会将第第一个表中的的列与第二个个表中具有相相同名称的列列进行连接。用用户不需要明明确指定进行行连接的列,系系统会自动完完成这一任务务。示例:SQL SEELECT empnoo , enname , j

42、ob , sall , deeptno , dnaame FROM emmp NATTURAL JOIN deptWHERE ddname=SALEES ;注意:自然连接的实际际应用性较差差,它需要连连接的各个表表之间必须具具有相同名称称的列,并且且不能让表中中其他的列具具有相同的名名称。假如eemp表和ddept表中中都有一个aaddresss地址列,自自然连接会尝尝试使用该列列进行连接。5. 交叉连接接交叉连接是没有有连接条件的的连接,即笛笛卡尔积。语法形式:SELECT 字段列表 FROM 表11 CROSSS JOIIN 表2示例:SQL SEELECT countt(*)FROM e

43、mmp CROOSS JOOIN deept ;3.4 SQLL函数数据库产品的主主要区别是SSQL函数库库不同。3.4.1 字字符函数1.小写转大写写函数uppper范例:SQL SEELECT upperr(smithh) FROOM duaal ;SQL SEELECT * FROOM empp wherre enaame=uppper(smithh) ; 2.大写转小写写函数lowwer范例:SQL SEELECT lowerr(HELLOO,WORLLD) FROOM duaal ; 3.将单词第一一个字母大写写函数 innitcapp范例:SQL SEELECT initccap(

44、enname) as 姓名名, jobb as 职职位 FROOM empp ; 4.字符串连接接函数 cooncat范例:SQL SEELECT concaat(helloo , worldd) FROOM duaal ; 注意:字符串连连接可使用|运算符实实现SQL SEELECT helloo | worldd FROMM duall ; 5.字符串截取取函数 suubstr范例:SQL SEELECT substtr(helloo , 1 , 3) FROM dual ;SQL SEELECT substtr(helloo , 0 , 3) FROM dual ; 6. 字符串长长度函

45、数 llengthh范例:SQL SEELECT lengtth(helloo) FROOM duaal ; 7.字符串内容容替换函数 replaace范例:SQL SEELECT replaace(helloo , l , x) FROOM duaal ; 3.4.2 数数学函数1.四舍五入函函数 rouund范例:SQL SEELECT roundd(789.536 , 2) FFROM ddual ;SQL SEELECT roundd(789.536) FROM dual ; SQL SEELECT roundd(789.536 , -2) FROM dual ; 2.截断小数位位函数

46、 trrunc范例:SQL SEELECT truncc(789.536 , 2) FFROM ddual ;SQL SEELECT truncc (7899.536) FROMM duall ; SQL SEELECT truncc (7899.536 , -2) FROMM duall ; 3.取模函数 mod范例:SQL SEELECT mod(110 , 33) FROOM duaal ; 3.4.3 日日期函数1.获取当前日日期函数 ssysdatte范例:SQL SEELECT sysdaate FRROM duual ; 2.获取给定日日期范围内的的月数函数 monthhs_be

47、ttween范例:SQL SEELECT enamee , moonths_betweeen(syysdatee , hiiredatte) FRROM emmp ; 3.在指定日期期上加上指定定月数函数 add_mmonthss范例:SQL SEELECT add_mmonthss(sysddate , 4) FFROM dual ; 4.计算下一个个今天是哪个个日期 neext_daay范例:SQL SEELECT next_day(ssysdatte , 星期一) FROOM duaal ; 5.求出给定日日期的当月最后一天天日期 laast_daay范例:SQL SEELECT las

48、t_day(ssysdatte) FRROM duual ; 3.4.4 转转换函数1.将指定表达达式转换成字字符串函数 to_chhar范例1:SQL SEELECT empnoo,enamme,to_char(hireddate,yyyy) yeaar,to_char(hireddate,mm) montths , too_charr(hireedate,dd) dayy FROMM emp ;范例2:SQL SEELECT empnoo,enamme,to_char(hireddate,yyyy-mm-ddd) FROOM empp ; 注意:可以用ffm去掉月份份前面的前导导0SQL

49、SEELECT empnoo,enamme,to_char(hireddate,fmyyyyy-mm-dd) FROOM empp ; 范例3:给工资资加千位分隔隔符SQL SEELECT empnoo,enamme,to_char(sal,99,9999) FROOM empp ; 范例4:给工资资加货币符号号,$是美元元,L代表本本地货币SQL SEELECT empnoo,enamme,to_char(sal,$99,9999) FROOM empp ;2.字符串转数数字函数 tto_nummber范例:SQL SEELECT to_nuumber(123)+to_numbeer(123

50、) FROOM duaal ; 3.字符串转日日期函数 tto_datte范例:SQL SEELECT to_daate(2010-12-200,yyyy-mm-ddd) FROOM duaal ; 3.4.5 通通用函数1.将指定nuull值变为为指定的内容容函数 nvvl范例:计算职员员年薪(月薪薪sal+奖奖金commm)*12,奖奖金可能为nnullSQL SEELECT empnoo,enamme,sall,nvl(comm,0),(ssal+nvvl(commm,0)*12 iincomee FROMM emp;2.decodde函数范例1:SQL SEELECT decodde(

51、1,11,内容是是1,2,内容是22,3,内容是3) FROOM duaal ; 范例2:empp表中雇员的的工作有:cclerk(业务员)、ssalesmman(销售售员)、maanagerr(经理)、aanalysst(分析员员)、preesidennt(总裁)。SQL SEELECT empnoo 雇员编号号,enamme 雇员姓姓名,hirredatee 雇佣日期期,decoode(joob,clerkk,业务员,salessman,销售人员,managger,经理,analyyst,分析员,presiident,总裁) 职位 FROM emp ; 3.4.6 统统计函数使用统计函数可

52、可以对一组数数据进行计算算。函数说明AVG平均值SUM汇总值MAX最大值MIN最小值COUNT统计值示例:SQL SEELECT MAX(ssal) , min(sal) FROM emp ;3.5 分组技技术在SELECTT语句中可以以使用GROOUP BYY子句进行分分组操作,并并可以使用HHAVINGG子句提供分分组条件。示例:统计各部门的员员工人数SQL SEELECT deptnno , ccount(*) ass 员工数量量FROM emmpGROUP BBY depptno;使用HAVINNG子句对分分组进行筛选选SQL SEELECT deptnno , ccount(*) a

53、ss 员工数量量FROM emmpGROUP BBY depptnoHAVING COUNTT(*)=5;3.6 子查询询如果某个SQLL语句依赖于于另外一个SSELECTT语句的检索索结果,可以以把SELEECT语句嵌嵌入到该语句句中,就形成成了一个子查查询。示例:检索某一一部门的员工工信息SQL SEELECT empnoo , enname , job , sall FROM emmpWHERE ddeptnoo=(SELECT deptnno FROOM depptWHERE ddname=SALEES);注意: 外查询检索一行行,子查询就就要完整检索索一遍。 子查询最多可以以嵌套25

54、55层,层数越越多,效率越越差。子查询可以分为为3种类型:单行子查询询、多行子查查询和关联子子查询3.6.1 单单行子查询子查询只返回单单行单列值,可可以作为一个个常量使用。示例:查询工资资最高和最低低的员工信息息SQL SEELECT empnoo, enaame, jjob, ssalFROM emmpWHERE ssal=(SELECCT MAXX(sal) FROMM emp) or ssal SEELECT empnoo, enaame, jjob, ssal,deeptnoFROM emmpWHERE ddeptnoo IN(SSELECTT depttno FRROM deept

55、 WHEERE dnname=ACCOUUNTINGG OR dnamee=RESSEARCHH);(2) 查询大大于MANAAGER职位位中最小工资资的员工信息息SQL SEELECT empnoo, enaame, jjob, ssalFROM emmpWHERE ssalANNY(SELLECT ssal FRROM emmp WHEERE joob=MAANAGERR);(3) 查询工工资大于所有有MANAGGER职位的的员工信息SQL SEELECT empnoo, enaame, jjob, ssalFROM emmp WHHERE ssalALLL(SELLECT ssal FR

56、ROM emmp WHEERE joob=MAANAGERR); 3.6.3 关关联子查询在前面介绍的子子查询中,内内查询和外查查询是分开执执行的,内外外查询没有关关系。外查询询仅仅使用内内查询的最终终结果。如果在子查询中中,内查询的的执行需要借借助于外查询询,而外查询询的执行又离离不开内查询询,内外查询询是相互关联联的,称为关关联子查询。示例:检索某个个职位的员工工工资是否超超出了平均水水平。SQL SEELECT enamee, jobb, sall FRROM emmp t WHHERE ssal(SSELECTT AVG(sal) FROM emp WWHERE t.jobb=job)

57、;注意:表中数据量大时时关联子查询效效率低。3.7 操作数数据包括插入、更新新和删除数据据。3.7.1 插插入数据语法格式:INSERT INTO 表名(字段段列表)VAALUES(值值列表)示例:SQL INNSERT INTO emp(eempno,enamee,job,mgr,hhiredaate,saal,commm,depptno) VAALUES(7995,ATG,CLEERK,77782,tto_datte(20010-100-01,yyyyy-mm-ddd), 13300,nuull,100);向表中所有列添添加数据时,可可以省略列清清单SQL INNSERT INTO emp VAALUES(7

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!