Oracle10上课笔记.docx
《Oracle10上课笔记.docx》由会员分享,可在线阅读,更多相关《Oracle10上课笔记.docx(74页珍藏版)》请在冰豆网上搜索。
Oracle10上课笔记
常见数据库
MSSQLServer,MySQL,Access,Oracle,SyBase,VF,DB2……
1、负载能力
a)数据库的容量
b)并发数(支持的同时连接的数量)
2、安全性
小型数据库
中型数据库
大型数据库(功能强大,性能卓越)
Access
VF
SQLite
……
MSSQLServer
MySQL
……
Oracle
DB2
SyBase
……
追求卓越
Oracle公司简介
Oracle是世界领先的信息管理软件开发商,因其复杂的关系型数据库产品而闻名。
全球最具实力的管理信息系统解决方案供应商
●8000以上合作伙伴
●200000以上客户
●美国Fortune杂志前500家大公司96%都用Oracle解决方案
●全面基于Internet
●专注于行业应用
创始人:
LarryEllison。
(EdOtaes,BruceSoctt,BobMiner,LarryEllison)
Oracle发展(离不开IBM)
●1970年的6月,IBM公司的研究员埃德加·考特(EdgarFrankCodd)在CommunicationsofACM上发表了那篇著名的《大型共享数据库数据的关系模型》(ARelationalModelofDataforLargeSharedDataBanks)的论文。
这是数据库发展史上的一个转折。
要知道,当时还是层次模型和网状模型的数据库产品在市场上占主要位置。
从这篇论文开始,关系型数据库软件革命的序幕被拉开了。
●1977年6月,LarryEllison与BobMiner和EdOates在硅谷共同创办了一家名为软件开发实验室(SoftwareDevelopmentLaboratories,SDL)的计算机公司(Oracle公司的前身),SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。
Oracle本意:
神喻,神说的话。
在中国翻译成甲骨文。
商朝,把一些刻在龟壳上的文字当成是上天的指示——甲骨文。
Oracle的安装
现在Oracle最新的版本是11G,我们这里学习10G,Oracle中的主要版本分为以下几个:
●Oracle8
●Oracle8i:
i,Internet,表示此时Oracle正式开始进军Internet
●Oracle9i:
Oracle9i与8i相比非常相似
●Oracle10g:
g,网格技术
安装文件:
Oracle_10G_R2_10203_vista_w2k8_x86_production_db.zip
解压压缩包
安装详细过程
1、运行安装入口文件autorun\autorun.exe
设置口令:
将所有的用户口令统一设置成:
oracleadmin
2、Oracle安装程序检查安装环境
详细信息:
正在检查操作系统要求...
要求的结果:
5.0,5.1,5.2,6.0之一
实际结果:
6.1
检查完成。
此次检查的总体结果为:
失败<<<<
问题:
OracleDatabase10g未在当前操作系统中经过认证。
建议案:
确保在正确的平台上安装软件。
正在检查ServicePack要求...
检查完成。
此次检查的总体结果为:
未执行<<<<
OUI-18001:
不支持操作系统'WindowsVista版本6.1'。
建议案:
请安装建议的ServicePack。
=======================================================================
正在检查物理内存要求...
要求的结果:
256MB
实际结果:
4095MB
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在检查网络配置要求...
检查完成。
此次检查的总体结果为:
失败<<<<
问题:
安装检测到系统的主IP地址是DHCP分配的地址。
建议案:
Oracle支持在具有DHCP分配的IP地址的系统上进行安装。
但在安装之前,必须将MicrosoftLoopBackAdapter配置为系统的主网络适配器。
有关在配置有DHCP的系统上安装软件的详细信息,请参阅InstallationGuide。
=======================================================================
正在检查PATH环境变量的长度...
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在验证ORACLE_BASE的位置(如果已设置)...
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在检查Oracle主目录路径中的空格...
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在检查Oracle主目录路径的位置...
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在检查是否进行了正确的系统清除...
检查完成。
此次检查的总体结果为:
通过
=======================================================================
正在检查Oracle主目录的不兼容性...
实际结果:
NEW_HOME
检查完成。
此次检查的总体结果为:
通过
=======================================================================
处理以上错误的方案:
1)更改两个配置文件
Disk1\stage\prereq\db\下的refhost.xml
和
Disk1\stage\prereq\db_prereqs\db下的refhost.xml文件
在以上两个文件里面添加如下内容:
添加如下内容即可
--MicrosoftWindowsWindows7-->
添加位置:
2)更改安装文件的配置文件(检查硬件环境的配置文件)、
Disk1\install下的oraparam.ini文件,添加如下内容:
[Windows-6.1-required]
#MinimumdisplaycoloursforOUItorun
MIN_DISPLAY_COLORS=256
#MinimumCPUspeedrequiredforOUI
#CPU=300
[Windows-6.1-optional]
添加位置:
完成以上修改过后,咱们可以让安装程序重新检查环境
(重新启动以下安装程序,再看一下有没有什么问题)
3、Oracle安装程序检查系统环境通过过后,继续安装(下一步)
4、安装程序提示要安装的相关信息
5、安装过程
6、安装完毕后,记住,别着急去点“确定”,因为还有一些设置需要去做,如果跳过了,后面再来操作的话很麻烦(在命令行用命令来解决)。
在这里我们需要对我们的几个常用的用户进行解锁。
“口令管理”
口令管理,主要观察以下几个用户:
●普通用户:
scott,密码:
tiger
●普通管理员:
system,密码:
manager
●超级管理员:
sys,密码:
change_on_install
设置完成过后就可以“确定了”
7、安装结束
需要把以下信息记住:
EnterpriseManagerDatabaseControlURL-(orcl):
http:
//VWELL-T420:
1158/em
数据库配置文件已经安装到d:
\oracle\product\10.2.0,同时其他选定的安装组件也已经安装到d:
\oracle\product\10.2.0\db_1。
iSQL*PlusURL为:
http:
//VWELL-T420:
5560/isqlplus
iSQL*PlusDBAURL为:
http:
//VWELL-T420:
5560/isqlplus/dba
最后退出安装程序。
设置完成过后,我们就可以使用固定的用户名和密码进行数据库连接了。
完成之后,直接选择退出即可,此时,会启动一个EM(企业管理器)的工具。
但是在学习中基本上不使用这种前台,直接关闭即可。
Oracle10G安装过后的系统服务
Oracle安装完成之后实际上会在系统中进行系统服务的注册,在注册服务中有两个服务必须启动,否则Oracle无法正常使用。
1、OracleOraDb10g_home1TNSListener:
表示监听服务,如果客户端要想连接到数据库,此服务必须打开,在日后的程序开发中此服务起作用。
2、OracleService数据库实例名:
表示数据库的主服务,此服务必须启动,否则Oracle根本无法使用。
使用自带的数据库管理工具
DatabaseConfigurationAssistant
SQLPlus&SQLPlusW
SQLPlus是Oracle提供的一个命令行执行的工具软件,安装之后会自动在系统中进行注册。
SQLPlus中两种命令:
●SQLPlus:
以命令行的方式进入数据库连接
●SQLPlusW:
以窗口的形式启动命令行工具
在使用此命令的时候会提示一个主机字符串,如果一台电脑上有多个数据库的话,则要在此处输入数据库的名称。
命令:
setlinesize长度;
setpagesize行数;
使用SQL编辑器
ed文件名称
@文件名称;(默认:
*.sql)
SQLPlusW中也可以使用其他用户连接,例如:
使用sys或system用户
conn用户名/密码[assysdba|sysoper]
●如果现在连接的是超级管理员(sys),则在连接的后面加上assysdba,以系统管理员的身份登陆。
connsys/change_on_installassysdba;
那么这个时候再次发出之前的查询命令,会提示表或视图不存在。
用户名.表名
showuser;显示的当前正在连接的用户是哪一个
select*fromtab;
desc表名;
解锁用户
sqlplussys/change_on_installassysdba;
alteruserscottaccountunlock;
更改密码
alteruserscottidentifiedbypassword;
更改自己的密码:
password
简单查询-基本SQLSELECT语句
SELECT*|{[DISTINCT]conlumn|expression[alias],…}
FROMtable;
SELECT标识选择哪些列
FROM标识从哪个表中选择
选择全部列
SELECT*
FROMdept;
选择特定的列
SELECTdeptno,dname
FROMdept;
说明:
●SQL语言大小写不敏感
●SQL可以写在一行或者多行
●关键字不能被缩写也不能分行
●各子句一般要分行写
●使用缩进提高语句可读性
数学表达式
数字和日期使用的数学表达式
●+加
●-减
●*乘
●/除
使用数学运算符
SELECTename,sal,sal+300
FROMemp;
操作符优先级
●乘除的优先级高于加减
●同一优先级运算符从左到右顺序执行
●括号内运算先执行
SELECTename,sal,12*sal+100
FROMemp;
SELECTename,sal,12*(sal+100)
FROMemp;
定义空值(NULL)
●空值是无效的、未指定的、未知的或不可预知的值
●空值不是空格或者0
SELECTename,job,sal,comm
FROMemp;
空值在数学运算中的使用
包含空值的数学表达式的值都为空值
SELECTename,12*sal*comm
FROMemp;
列的别名
●重命名一个列
●作用:
便于计算
●语法:
紧跟列名,也可以在列名与别名之间加入关键字“AS”,还可以给别名加上引号,以便别名中包含空格或特殊字符并区分大小写
SELECTenameASname,commAScommsission
FROMemp;
SELECTename“Name”,sal*12“AnnualSalary”
FROMemp;
连接符
●把列与列,列与字符连接在一起
●用”||”表示
●可以用来“合成列”
SELECTename||jobAS“Employees”
FROMemp;
字符串
●字符串可以是SELECT列表中的一个字符、数字、日期
●日期和字符只能在单引号中出现
●每当返回一行时,字符串被输出一次
SELECTename||‘isa’||job
AS“EmployeeDetails”
FROMemp;
重复行
默认情况下,查询会返回全部行,包括重复行
SELECTdeptno
FROMemp;
删除重复行
在SELECT字句中使用“DISTINCT”关键词删除重复行
SELECTDISTINCTdeptno
FROMemp;
显示表结构
使用DESCRIBE命令,显示表结构
DESC[RIBE]tablename;
DESCRIBEemp;
条件查询-过滤和排序数据
●在查询中过滤行
●在查询中对行进行排序
过滤
使用WHERE子句,将不满足条件的行过滤掉
SELECT*|{DISTINCTcolumn|ecpression[alias],…}
FROMtable
[WHEREcondition(s)];
WHERE子句紧随FROM子句
SELECTename,job,deptno
FROMemp
WHEREdeptno=30;
字符和日期的过滤
●字符和日期要包含在单引号中
●字符大小写敏感,日期格式敏感
●默认的日期格式是DD-MON-RR
SELECTename,job,deptno
FROMemp
WHEREename=‘SCOTT’;
比较运算
●=
●>
●>=
●<
●<=
●<>(!
=)
SELECTename,sal
FROMemp
WHEREsal<=3000;
其他比较运算
●BETWEEN..AND…在两个值之间(闭区间)
●IN(set)匹配列出的值
●LIKE匹配一个字符模式
●ISNULL是空值
BETWEEN…AND…
SELECTename,sal
FROMemp
WHEREsalBETWEEN2500AND3500;
IN
SELECTempno,ename,sal,mgr
FROMemp
WHEREmgrIN(7902,7698,7839);
LIKE
●使用LIKE运算选择类似的值
●选择条件可以包含字符或数字
⏹%代表零个或多个字符
⏹_代表一个字符
SELECTename
FROMemp
WHEREenameLIKE‘S%’;
●“%”和“_”可以同时使用
SELECTename
FROMemp
WHEREenameLIKE‘_O%’;
●可以使用ESCAPE标识符选择“%”和“_”符号
SELECTname
FROMtb_user
WHEREnamelike‘\%%’escape‘\’;
NULL
使用NULL判断空值
SELECTename,mgr
FROMemp
WHEREmgrISNULL;
逻辑运算
●AND
●OR
●NOT
AND
AND要求和的关系为真
SELECTename,job,sal
FROMemp
WHEREsal>=1000
ANDjoblike‘%MAN%’;
OR
OR要求或的关系为真
SELECTempno,ename,job,sal
FROMemp
WHEREsal>=1000
ORjoblike‘%MAN%’;
NOT
SELECTename,job
FROMemp
WHEREjobNOTIN(‘CLERK’,’ANALYST’);
运算符的优先级
●算术运算符
●连接符
●比较表达式
●IS[NOT]NULL,LIKE,[NOT]IN;
●NOT逻辑表达式
●AND逻辑表达式
●OR逻辑表达式
AND优先级大于OR
SELECTename,job,sal
FROMemp
WHEREjob=‘CLERK’
ORjob=‘SALESMAN’
ANDsal>2000;
使用括号来控制执行顺序
SELECTename,job,sal
FROMemp
WHERE(job=‘CLERK’
ORjob=‘SALESMAN’)
ANDsal>2000;
ORDERBY子句
●使用ORDERBY子句排序
⏹ASC:
升序(默认方式)
⏹DESC:
降序
●ORDERBY子句在SELECT语句结尾
SELECTename,job,deptno,hiredate
FROMemp
ORDERBYhiredate;
降序排列
SELECTename,job,deptno,hiredate
FROMemp
ORDERBYhiredate;
按照别名排序
SELECTempno,ename,sal*12annsal
FROMemp
ORDERBYannsal;
多个列排序
●按照ORDERBY列表的顺序排列
●可以使用不在SELECT列表中的列排序
SELECTename,deptnoi,sal
FROMemp
ORDERBYdeptno,salDESC;
小结
SELECT*|{DISTINCTcolumn|expression[alias],…}
FROMtable
[WHEREcondition(s)
ORDERBY{column,expr,alias}[ASC|DESC]];
单行函数
数据库系统中,每个数据库之间唯一不同的最大区别点就在于函数的支持上,使用函数可以完成一系列的操作功能。
单行函数语法:
function_name(column|expression,[arg1,args2,…]);
●function_name:
函数名称
●column:
表列名
●expression:
字符串、数字常量或表达式
●arg1,arg2:
在函数中使用参数
单行函数的分类
●字符函数:
接收字符并且返回字符或数值
●数值函数:
接收数值输入并返回数值
●日期函数:
对日期型数据进行操作
●转换函数:
从一种数据类型转换为另一种数据类型
●通用函数:
NVL函数、DECODE函数…(CASE)
●字符函数
⏹大小写控制函数
改变字符大小写
Function
Result
LOWER(‘SQLCourse’)
sqlcourse
UPPER(‘SQLCourse’)
SQLCOURSE
INITCAP(‘SQLCourse’)
SqlCourse
SELECTempno,ename,deptno
FROMemp
WHEREename=‘james’;
SELECTempno,ename,deptno
FROMemp
WHERELOWER(ename)=‘james’;
⏹其他字符控制函数
Function
Result
CONCAT(‘Hello’,‘World’)
HelloWorld
SUBSTR(‘HelloWord’,1,5)
Hello
LENGTH(‘HelloWord’)
10
INSTR(‘HelloWorld’,‘W’)
6
LPAD(sal,10,‘*’)
*****24000
RPAD(sal,10,‘*’)
24000******
TRIM(‘H’FROM‘HelloWorld’)
elloWorld
REPLACE(‘HelloWorld’,‘l’,‘x’)
HexxoWorxd
●数值函数
⏹四舍五入:
ROUND
⏹截断小数位:
TRUNC
⏹取模:
MOD
Dual是一个“伪表”,可以用来测试函数和表达式。
SELECTROUND(1289.546),ROUND(1289,546,2),ROUND(1289,546,-2)
FROMdual;
SELECTTRUNC(1289.546),TRUNC(1289.546,2),TRUNC(1289.546,-2)
FROMdual;
SELECTMOD(10,3)
FROMdual;
●日期函数
在Oracle中提供了许多与日期操作相关的函数,包括加减日期等等。
在日期进行一些加或减的时候有一些规律:
⏹日期+数字=日期
⏹日期–数字=日期
⏹日期–日期=数字(天数)
⏹可以用数字/24,向日期中加上或减去小时
返回系统当前日期:
SYSDATE
SELECTempno,ename,ROUND((SYSDATE-hiredate)/7)ASwee