《oracle教案6616.docx》由会员分享,可在线阅读,更多相关《oracle教案6616.docx(317页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1. oracle安装及基本命令1.1 oracle简简介Oracle是是一个生产中中间件和数据据库的较大的的生产商,ooraclee原本的含义义:“神谕”,指的是神神说的话,中中国在商朝时时代,把一些些刻在龟壳上上的文字当成成是上天的指指示,所以在在中国将orracle翻翻译成”甲骨文”.Oracell公司的发展展实际上还是是靠IBM1.2 oracle安安装1.2.1 常见版本现在使用的orracle是是10G版本本,oraccle中的主主要版本分为为以下几个:Oracle 8Oralce 8i 表表示oraccle公司正正式进军互联联网Oracel 9i: 与与8i极为相相似Oracle
2、 10g: g,表示网网格计算1.2.2 安装:选择oraclle 10GG下insttal目录下下的setuup.exee就可以执行行oraclle 10GG的安装指令令接着oraclle就进入系系统环境检查查环节(最好好关闭防火墙墙软件)选择安装的目录录选择企业版输入数据库实例例名/选中创创建带样本的的数据库所有账户用同样样的口令安装完成后,任任何按钮都不不要点,如果果做其它的操操作,可能导导致安装失败败选择口令管理,出现口令管管理对话框,有的地方是被被锁定的用户户:普通用户:sscott用用户的密码ttiger普通管理员:ssystemm用户密码mmanageer超级管理员:ssys用户
3、密密码admiin设置好密码后,点点击确定完成后,即可退退出1.2.3 oracle必必须启动的服服务Oracle安安装完成之后后要在系统中中注册服务,其有两个服服务是必须启启动oraccle才能正正常启动OracleOOraDb110g_hoome1TNNSListtener:表示监听服服务,用户客客户端要想连连接到数据库库,此服务必必须打开,在在以后的程序序开发中此服服务作用很大大.OracleSServicceGYBOOSS,表示示数据库的主主服务,命名名规则OraacleSeervicee+数据库名名称,此服务务必须启动,否则oraacle根本本无法使用之后直接通过命命令行方式就就可以
4、进入SSQLPluus的控制中中心,进行命命令输入.安装完毕后可能能通过三种方方式访问数据据库:1) 开始/运行/ssqlpluus2) 开始/程序/OOraclee - OrraDb100g_homme1/SQL PPlus3) 打开IE,输入入本机IP:5560/isqlpplus 或者 llocalhhost:55560/iisqlpllus登录界面如下:1.3 oracle常常见的第三方方工具1) PL/SQL Develloper2) Toad在采用第三方工工具连接数据据库前,必须须保证数据库库的监听程序序配置(服务务器名,IPP,端口号)正正确并处于于于监听状态,主要设置这这两个文
5、件 llistenner.orra # listeener.oora Neetworkk Conffiguraation File: e:ooracleeprodduct110.2.00db_11netwworkaadminlisteener.oora# Generrated by Orracle confiigurattion ttools.SID_LISST_LISSTENERR = (SID_LIST = (SIID_DESSC = (SID_NNAME = PLSEExtProoc) (ORACLLE_HOMME = ee:oraaclepproducct10.2.0ddb_1) (P
6、ROGRRAM = extprroc) ) )(SID_DEESC = (GLOBBAL_DBBNAME = gybboss) (ORACCLE_HOOME = e:orracleproduuct100.2.0db_1) (SID_NAME = gybboss) ) LISTENEER = (DESCCRIPTIION_LIIST = (DEESCRIPPTION = (ADDREESS = (PROTTOCOL = TCPP)(HOSST =1992.1688.1.1004)(POORT = 1521) ) )# tnsnaames.oora Neetworkk Conffiguraatio
7、n File: e:ooracleeprodduct110.2.00db_11netwworkaadmintnsnaames.oora# Generrated by Orracle confiigurattion ttools.GYBOSS = (DESCCRIPTIION = (ADDDRESSS = (PPROTOCCOL = TCP)(HOST = 1922.168.1.1044)(PORRT = 11521) (COONNECTT_DATAA = (SERVEER = DDEDICAATED) (SERVIICE_NAAME = gybosss) ) )EXTPROCC_CONNNEC
8、TIOON_DATTA = (DESCCRIPTIION = (ADDDRESSS_LISTT = (ADDREESS = (PROTTOCOL = IPCC)(KEYY = EXXTPROCC1) ) (COONNECTT_DATAA = (SID = PLSEExtProoc) (PRESEENTATIION = RO) ) )2. SQL/PLUUS2.1 命令行方式Sqlp是orracle提提供的一个命命令行执行的的工具软件,安装oraacle后会会自动在系统统中注册.在开始/运行/sqlpllus 3.3.2窗窗口方式sqqlplussw采用这种方式连连接数据库时时会提示主机机的字符
9、串,如果一台电电脑上有多个个数据库,则则需要在此处处输入数据的的名称,若不不填,则系统统连接默认数数据库更改用户设置 1. sqlpllus syys/rooot as sysdbba 22. altter usser sccott aaccounnt unllock;(解锁)用系统管理员账账号登陆数据据库:connn syss/sys as syysdbacconn sscott/tigerr 或者coonnectt userr/pwd 切换用户eed或者eddit/打打开一个缓冲冲文件操作回回滚:rolllbackk,一旦提交交(commmit)则不不可回滚;最常用的就是ssqlpluus
10、w的运行行方式完成对对oraclle的操作Select * froom empp; 此语句表示示向数据库发发出查询命令令,查询数据据中emp表表中的全部信信息,结果如如果:使用sqlpllusw之前前首先必须进进行环境的设设置(1) 设置每行显示的的长度Set linnesizee 300; 以上上命令查询结结果有一个问问题,标题行行重复了,这这是因为orracle中中的数据是一一页一页地输输出的.(2) 修改每页显示的的记录行数Set paggesizee 30; 设置置每页输出330行,结果果为(3) 修改每列显示的的显示宽度(每次都要执执行一次)column fieldd_namee f
11、ormmat a440col fieeld_naame foor a40例如:SQL seelect * froom duaal;D-X顺序执行了下面面的语句后SQL cool dummmy foor a5;SQL seelect * froom duaal;DUMMY-X整个DUMMYY的列名就完完整地显示出出来了(4) 清除屏幕的命令令在在SQL*PPlus中执执行一段时间间后,屏幕上上会存大大量量的输入和输输出信息,要要想清除屏幕幕方法一:同时按按SHIFTT和DELEETE键然后后点OK就可可以了 。 方法二:如果在在windoow窗口下ssqlpluus 中清屏屏命令:hoost c
12、lls 或是cclear screeen 或只是是4位 cllea sccre。 方法三:如果是是在dos的的窗口下进入入sql/pplus就要要用cleaar SCRR。2.2 动手实践在sqlpluusw中存大大着大量可用用的命令在sqlpluusw中因为为无法修改已已经输入的内内容,所以一一般使用本机机的记事本程程序进行编辑辑,直接在命命令窗口中输输入”ed 文件名称称”即可.输入ed后会提提示用户是否否要创建此文文件,如下图图所示除了可以在sqqlplussw中建立这这个文件之外外,也可以通通过找到磁磁盘上的文件件,3. SQL语句本课内容提要:1) 查询语句的基本本格式2) 使用di
13、stiinct关键键字去掉重复复的查询3) 使用限定查询4) 对查询结果进行行排序5) 掌握oraclle中提供的的各种主要单单行函数3.1 所需要用到的表表在所有后面的课课程中,我们们所使用到的的表都是sccott用户户下的表,所所以我们必须须了解scoott用户下下有哪几张表表,以及这些些的结构和表表与表之间的的关系.如果scottt用户下的某某个对表对象象出了问题,如如dept表表被误删除了了,或empp表的内的数数据被修改了了,现在要想想恢复成原来来的样子,应应按如下步骤骤进行以管理员角色连连接数据库,执行 E:oraccleprroductt10.22.0dbb_1RDDBMSAAD
14、MINscottt.sql执行以上命令后后所有的sccott的对对象将被重建建,因而sccott的密密码被初始化化为系统默认认的TIGEER,因此用用户执行以上上命令后应当当重新设置用用户口令常用的关于用户户的命令:Show usser -显示示当前用户名名select tablee_namee fromm userr_tablles -查询当当前用户下的的所有表查询TEST用用户下的所有有表,及其创创建时间SELECT OBJECCT_NAMME,CREEATED FROM ALL_OOBJECTTS WHEERE OBBJECT_TYPE=TABLLE ANND OWNNER=TTEST
15、ORDERR BY CCREATEED DESSC;查询当前用户下下的所有表SELECT * FROOM USEER_TABBLES查询TEST用用户下的所有有表SELECT * FROOM ALLL_TABLLES WHHERE OOWNER=TESTT3.1.1 雇员表(empp)记录了每个雇员员的基本信息息NO字段 类型 描述述1empnoo Numberr(4)雇员编号2enamee Varchaar2(100)雇员姓名3job Varchaar2(9) 工作作职位4mgr Number(4) 雇员员的领导(经经理)编号5hierddate datte 入职职日期6sal Number
16、r(7,2)月薪/工资资7comm Numberr(7,2)奖金8deptnno Numberr(2) 雇员所属部部门的编号3.1.2 部门表(empp)记录了每个部门门的基本信息息NO字段类类型 描述1deptnnoNumberr(2) 部门编号号(唯一)2dnameeVarchaar2(144) 部门名称称3loc Varchaar2(133) 地址3.1.3 工资等级表 (salgrrade)一个公司的工资资等级制,用用来表示同一一等级的工资资下限及上限限NO字段 类型描述1Gradeenumbeer等级名称2Losallnumbeer此等级的最最低工资3hisall nuumber此等
17、级的最最高工资3.1.4 奖金表 (boonus)一个公司中雇员员获得奖金的的情况NO字段类类型 描述述1enameeVarchaar2(100)雇员姓名2Job Varchaar2(9)雇员工作3Sal Numberr 工资资4commNumberr 奖金金3.2 SQL简介对于各个不同的的数据库来说说,重点是掌掌握SQL语语句,因为现现在的数据库库都是以SQQL语句为操操作标准,在在实际应用中中,各个数据据库提供的函函数各不同。不同的数据库的SQL语句格式有90%相同,10%的差异3.2.1 SQL简介SQL(strructurred Quuery LLanguaage 结结构化查询语语言
18、) 是一种数据据库查询和程程序设计语言言,用于存取取数据以及查查询、更新和和管理关系数数据库系统。SQL通常用于与数据库的通信,ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言.按代数论,SQQL应当属于于第4代程序序设计语言第1代SQL第2代C,C+,JJAVA第3代汇编语言第4代机器语言SQL语言包含含4个部分: 数据定定义语言(DDDL),例例如:CREEATE、DDROP、AALTER等等语句。 数据操操作语言(DDML),例例如:INSSERT、UUPDATEE、DELEETE语句。 数据查查询语言(DDQL),例例如:SELLECT语句句。 数据控制语语言(D
19、CLL),例如:GRANTT、REVOOKE、COOMMIT、RROLLBAACK等语句句。平常程序员交流流的时候通常常不会说“我今天写了了几个DDLL/DML/DQL/DDCL语句”,而是说“我今天写了了几个CRAATE语句或或几个SELLECT语句句”诸如此类的的描述 3.2.2 简单查询语句格格式简单的SQL查查询语句的语语法格式是:Select *|字段列列表 别名名From 表名名称;(1) 查询全部列Select * froom empp;(2) 如果现在只要查查询出雇员的的编号、姓名名、工作,则则需要指定查查询的列Select empnno,enaame,joob froom e
20、mpp;(3) 可以为查询的结结果列指定一一个名称,这这个名称被为为该列的”别名”,一般地,别别名最好不用用中文命名(4) 查询所有的工作作(去掉重复复的工作) distiinctSelect job ffrom eemp;结果中存在大量量重复的工作作-即jjob存在重重复值,要消消除重复值,在在oraclle中用diistincct这个短语语来消除查询询结果中重复复的值Select disttinct*|具体的的列名 别名名From 表名名称 但是是,在消除重重复列的时候候,有一点必必须说明,如如果同时查询询多列,则必必须保证所有有列都重复才才能被消除例如:查询所有有职工的雇员员号和工作因为
21、雇员号不重重复,所以不不存在重复的的列,因页没没有哪一列被被消除(5) 将各列查询结果果相连 | 例.要求查询出出雇员的编号号,姓名,工工作,显示格格式为: 编编号是73669 的雇员,姓姓名是:SMMITH,工工作是:CLLERK 要实现此功能:则可能使用用oraclle中提供的的字符串连接接操作符”|”来表示,如如果还要加入入一些固定显显示的内容,则则用单引号 括起来(6) SQL中的简单单计算功能 + - * /在查询中也可以以使用四则混混合运算(+ * /)功功能。例如:求出每个雇雇员的姓名及及年薪 selectt enamme,sall*12 iincomee fromm empEN
22、AME INNCOME- -SMITH 9600ALLEN 119200WARD 115000JONES 335700MARTIN 115000BLAKE 334200CLARK 229400SCOTT 336000KING 660000TURNER 118000ADAMS 113200JAMES 111400FORD 336000MILLER 115600已选择14行。在程序中sall*12意义义不明确,为为了明确这个个表达式计算算结果的意义义,一般给这这一列取一个个有意义的别别名,别名尽尽量避免用中中文表示3.2.3 限定查询(whhere 子子句)之前的查询是将将一张表的全全部记录都查查
23、出来,更多多的时候我希希望可以根据据指的条件来来查询,这样样我们就必须须指定查询的的限定条件,限限定查询的语语法Select disttinct*|具体的的列名 别名名;From 表名名称where 条件语句句(1) 例:查询出工资资大于15000的所有雇雇员SQL seelect * froom empp wherre sall15000; EMPPNO ENNAME JJOB MGR HIREDDATE SAL COMM DEPTNNO- - - - - - - - 77499 ALLENN SALEESMAN 76998 20-2月月 -81 1600 3000 330 77566JON
24、ESS MANAAGER 78339 02-4月月 -81 2975 220 77698BLAKEE MANAAGER 78399 01-5月月 -81 2850 330 77782 CLARKK MANAAGER 78399 09-6月月 -81 2450 110 77788 SCOTTT ANALLYST 75666 19-4月月 -87 3000 220 77839 KING PRESSIDENTT 17-111月-81 5000 110 77902FORD ANALLYST 75666 03-122月-81 3000 220已选择7行。(2) 例:查询每月可可以得到奖金金的雇员信息息
25、奖金是ccomm列 只只要列中存在在内容,则表表示此内容不不为空(nuull),如如果列中有内内容,则会显显示具体的值值 列列的内容不为为空的表示,字段 ISS NOT NULLSQL SEELECT * FROOM empp WHERRE commm IS NOT NNULL; EMPNOO ENAMEE JOB MGGR HIRREDATEE SSAL CCOMM DEEPTNO- - - - - - - - 77499 AALLEN SALESSMAN 76988 20-22月 -811 16000 3000 30 77521 WWARD SALESSMAN 76988 22-22月 -
26、811 12500 5000 30 77654 MMARTINN SALESSMAN 76988 28-99月 -811 12500 14000 30 77844 TTURNERR SALESSMAN 76988 08-99月 -811 15000 0 30(3) 例:查询没有奖奖金的职工的的信息SQL SEELECT * FROOM empp WHERRE commm IS NULL;EMPNO EENAME JOB MGRR HIREEDATE SAAL COMMM DEPTNNO- - - - - - - - 77369 SSMITH CLERKK 79022 17-112月-800 8
27、000 20 77566 JJONES MANAGGER 78399 02-44月 -811 29755 20 77698 BBLAKE MANAGGER 78399 01-55月 -811 28500 30 77782 CCLARK MANAGGER 78399 09-66月 -811 24500 10 77788 SSCOTT ANALYYST 75666 19-44月 -877 30000 20 77839 KKING PRESIIDENT 17-11月-881 50000 10 77876 AADAMS CLERKK 7788 23-55月 -877 11000 20 77900 JJ
28、AMES CLERKK 76988 03-112月-811 9500 30 77902 FFORD ANALLYST 75666 03-112月-811 30000 20 77934 MMILLERR CLERKK 77822 23-11月 -822 13000 10(4) 例:查询出基本本工资大于11500,并并且可以领取取奖金的职工工的信息 分析:两两个条件要同同时满足 ssal15500 并且且comm 不为空值 表示为: sal1500 and ccomm IIS NOTT NULLLSQL SEELECT * FROOM empp WHERRE sall15000 AND comm
29、IS NOOT NULLL; EMMPNO ENAMEE JOB MGGR HIREEDATE SAL COMMM DEPTNNO- - - - - - - - 77499 ALLEEN SALESSMAN 76988 20-22月 -811 16000 3000 30(5) 例:查询出基基本工资大于于1500,或者可以领取取奖金的职工工的信息如果要表示“或或者”这个概念使使用 OR对对两个条件进进行连接,表表示只要其中中一个条件成成立就出现在在查询结果中中SQL SEELECT * FROOM empp WHERRE sall15000 OR ccomm IIS NOTT NULLL; EM
30、MPNO EENAME JOB MGRR HIREEDATE SALL COMMM DEPTTNO- - - - - - - - 77499 AALLEN SALESSMAN 76988 20-22月 -811 16000 3000 30 77521 WWARD SALESSMAN 76988 22-22月 -811 12500 5000 30 77566 JJONES MANAGGER 78399 02-44月 -811 29755 20 77654 MMARTINN SALESSMAN 76988 28-99月 -811 12500 14000 30 77698 BBLAKE MANAGG
31、ER 78399 01-55月 -811 28500 30 77782 CCLARK MANAGGER 78399 09-66月 -811 24500 10 77788 SSCOTT ANALYYST 75666 19-44月 -877 30000 20 77839 KKING PRESIIDENT 17-111月-811 50000 10 77844 TTURNERR SALESSMAN 76988 08-99月 -811 15000 0 30 77902 FFORD ANALYYST 75666 03-112月-811 30000 20(6) NOT 可以以对条件取反反,把条件真真变为假,
32、把把假变为真例:查询出基本本工资不大于15000,同时不不可以领取奖奖金的职工的的信息 SELLECT * FROMM emp WHEREE not (sal1500 or coomm ISS NOT NULL) EMMPNO EENAME JOB MGRR HIREEDATE SAL COMM DDEPTNOO- - - - - - - - 77369 SSMITH CLERKK 79022 17-112月-800 8000 20 77876 AADAMS CLERKK 77888 23-55月 -877 11000 20 77900 JJAMES CLERKK 76988 03-112月-
33、811 9500 30 77934 MMILLERR CLERKK 77822 23-11月 -822 13000 10通过括号可表示示一组条件(7) 例:查询基本工工资大于等于于1500,但但是小于等于于3000的的职工的全部部信息 分析:条件件满足 ssal = 15000 and sal 300在 SQL语法法中,提供了了一个专门的的指定范围的的过滤语句 BETWEEEN AND 格式为:BETWEEEN 最小小值 ANDD 最大值 上一个例题则则可写成: SELEECT * FROM emp WWHERE sal BBETWEEEN 15000 ANDD 30000EMPNO EENAME JOB MGRR HIREEDATE SALL COMMM DEPTTNO- - - - - - - - 77499 AALLEN SALESSMAN 76988 20-22月 -811 16000 3000 30 77566 JJONES MANAGGER 78399 02-44月 -811 29755 20
限制150内