oracle
2016-06-08 00:34
357 查看
1.学会安装/启动/卸载oracle
1.oracle安装会自动的生成sys用户和systen用户a.sys用户是超级用户,具有最高权限,具有sysdba角色,有create datatbase的权限,改用户的默认密码是manager
b.system用户是管理操作员,权限也很大,具有sysoper角色,没有create database的权限 ,默认密码是change_on_install
1.安装oralce11G
1.桌面版
1。首先将 Oracle 11g软件下载好,置于容量大的文件夹中:1.百度搜索“Oracle”,进入官网下载中心2..选择”同意条款“并选择”11g
R2版本“下载,如未注册则要注册后才可下载文档。
3.解压两个压缩包到同一目录,即"database"。【/*如果在合并过程中提示有重复文件,则说明下载文件出问题了,请重新下载吧*/】然后右键”setup.exe“,点管理员身份运行(或者双击文件即可运行),如下图所示:
4.稍微等待一会,就会出现如下图所示的安装画面,取消下图所示的选中,然后单击"下一步"继续,同时在出现的信息提示框单击"是"继续。Oracle默认是选择基本安装。
5.之后就会出现安装选项对话框(”创建和配置数据库“),默认点击"下一步"继续。
6.之后会出现安装类型对话框,点击"下一步"继续,如果你想安装在Windows
Server上的话就选择”服务器类“。一般默认”桌面类(D)“即可。
7.然后就是安装配置,其他都默认即可,不用理会。注意:"管理口令"格式要至少包含一个大写字母,一个小写字母和一个数字,否则会提示警告,正确输入后点击"下一步"继续。###***不过可以选择全数字,如设:123456,只是多了一个”确认“步骤,如下图。***###
9.之后点击"完成"就开始安装了。接下来就是”安装产品“界面......
10.当上述进度到达100%时会出现线面的对话框,请耐心等待它完成。然后再弹出的确认对话框点击"确定"这时会回到主界面然后再单击"关闭"完成安装。/*注:可按照提示进行操作.*/
11.至此,Oracle11g R2已经安装完成,你可以在开始菜单->Oracle - OraDb11g_home1->Database Control - orcl中打开访问网址 .
12.登陆和查询:在连接身份里选择"SYSDBA",再用户名处输入"sys",密码为你最初设定的密码(如上:123456),点击"登陆"你就可以访问数据库及查询数据了。
3.服务版本
转载连(oralce服务类版本安装)1.打开相应的解压路径,找到安装文件“setup.exe”,双击进行安装,如下图所示
2 配置安全更新。电子邮件可写可不写,取消下面的“我希望通过My Oracle Support接受安全更新(W)”,如下图所示,单击下一步。
3.安装选项。直接选择默认的“创建和配置数据库”,如下图所示,单击下一步。
4. 系统类。由于咱们安装的是服务器,所以选择“服务器类”,如下图所示,单击下一步。
5.
网格安装选项。选择“单实例数据库安装”,如下图所示,单击下一步。
6. 安装类型。选择“高级安装”,如下图所示,单击下一步。
7. 产品语言。直接默认即可(简体中文、英语),如下图所示,单击下一步。
8. 数据库版本。选择“企业版”,如下图所示,单击下一步。
9.
安装位置。填入安装路径(只需要填“Oracle基目录”即可,“软件位置”会自动生成),如下图所示,单击下一步。
10. 配置类型。选择“一般用途/事务处理”,如下图所示,单击下一步。
11.数据库标识符。填入全局数据库名和SID,如下图所示,单击下一步。
12.配置选项。切换到“字符集”选项卡,选择“使用Unicode(AL32UTF8)”,如下图所示,单击下一步。
13. 管理选项。直接单击下一步,如下图所示。
14. 数据库存储。直接单击下一步,如下图所示。
15. 备份和恢复。如果需要对数据进行备份,就启用自动备份,小编这里选择“不启用自动备份”,如下图所示,单击下一步。
16. 方案口令。为了便于测试,这里使用了相同的密码,实际部署时可根据实际情况自行决定。
17.概要。完成先决条件检查后,单击完成就可以正式开始安装了,如下图所示,单击下一步。
18. 安装产品。安装完成后,会列出相关数据库配置清单,这个最好截图保存,如下图所示,单击确定
19. 完成。这时安装已完成,单击关闭即可
20. 测试一下。打开Oracle自带的SQL PLUS,如下图所示。
21. 输入用户名、密码(就是第18步设置的密码),测试成功!可以直接输入SQL语句了!需要注意的是,这里Oracle输入的口令是不显示的。
2.卸载oracle11G
1.停用oracle服务,进入计算机管理,在服务中,找到oracle开头的所有服务者,右击选择停用2.在开始菜单中,找到universal installer,运行Oracle universal Installer,单击卸载产品找到Universal Installer
-
3.在产品清单窗口中,单击全部展开,除了OraDb11g_home1外,勾选其他项目,单击删除
4.打开运行窗口,输入regedit,打开注册表,依次展开HKEY_LOCAL_MACHINE\SOFTWARE,找到oracle,删除之
5.依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中,删除所有oracle开头的项
6.依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有oracle开头的项;在HKEY_CLASSES_ROOT,删除以ora开头的项
7. 重启电脑,删除oracle目录,删除Oracle的安装目录app等
来自百度经(oracle11G删除)
4.学会在oracle中编写简单的select语句
3.oracle用户管理
1、创建用户* 在oracle中创建一个新的用户使用create user语句,一般具有dba(数据库管理员)的权限才能使用
create user 用户名 identified by 密码
2、给自己修改密码
*如果给自己修改可以直接使用
sql>password 用户名
*如果给别人修改密码则需要具有dba的权限,或是拥有alter user系统权限
sql>alert user 用户名 identified by 新密码
3、删除用户
*一般以dba的身份删除用户,如果用其他用户去删除用户则需要具有drop user的权限
比如 drop user 用户名(cascade)
*在删除用户的时,注意
如果要删除用户,已经创建了表,那么就需要在删除的时候带一个参数(cascade,注:表示级联删除该用户创建的表)
4.赋值权限
*创建的新用户是没有任何权限,甚至登陆数据库的权限都没有,需要为其指定相应的权限。
给用户赋值一个权限使用命令grant,回收权限使用命令revoke
sql>grant connect to 用户名
5.使用profile管理用户命令
*profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为
default的profile.
当建立用户没有指定profile选项,那么orclae就会将default分配给用户
a.指账号锁定(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时(天)
一般用dba的身份去执行该命令指定scott这个用户最多只能尝试3次登陆,锁定时间2天,让我看看怎么实现
创建profile文件
sql>create profile 函数名称 limit failed_login_attempts 3password_lock_time 2;(创建语言)
sql>alter user 用户 profile函数名称
b.给用户解锁
sql>alert user 用户 account unlock
c.终止口令
为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要DBA的身份来操作
sql>create profile 函数名称 limit password_file_time 10 password_grace_time 2;
sql>alter user 用户 profile 函数名称
d.删除profile
当不需要某个profile文件时,可以删除该文件。
sql>drop profile 函数名称
4.oracle表的管理
1.连接命令(1)conn[ect]
用法:从conn 用户名/密码@网络服务名
2.建表规则
(1).必须以字母开头
(2).长度不能超过30字符
(3).不能使用oracle的保留字
(4).只能使用如下字符,A-Z,a-z,0-9,$,#等
3.数据类型
字符型
char 定长 最大 2000字符 例:char(10) '小寒' 前面四个字符放'小寒',后面填6个空格补全(查询速度极快)
varchar2 (20) 变长 最大4000字符. 例:oralce 分配4个字符。这样可以节省空间
clob 字符型大对象,最大 4G
数值型
number 范围 -10的38次方 10的38次方表示整数 可以表示整数,也可以表示小数
number(5,2)
表示一个小数有5位有效数,2位小数
范围 -999.99——999.99
number(5)
表示一个5位整数
范围:-99999——99999
日期类型
date 包含年月日和时分秒
timestamp 这是对date数据库的扩展
二进制 (图片,声音,MP3,MP4等等)
blob 二进制数据 可以存放图片/声音 等等
4.表的创建
create table 表名(
xxxx number(2),
);
5,插入语句
insert into student values(1,'xx','xx');
6.oracle日期格式处理
oracle中默认的日期格式 ‘DD-MON-YY’ dd(天),mon 月份 yy 2位 的年 ‘09-6月-99’
如果需要存储自己想要的日期格式就需要,更改默认日期格式
alert session set nls_date_format = 'yyyy-mm-dd';
7.自连接(关键)
自己表连接自己表的查询
select boos.ename,work.ename from emp boos join emp word on work on work.mgr = boos.work
约束
1、not null
2、unique
3、primary key
4、foreign key
5、check
索引
使用原则
1、在大表上建立索引才有意义
2、在where字句或是连接条件上经常引用的列上建立索引
3,、索引的层次不要超过4层
1、单列索引
单列索引是基于单个列所建立的索引,比如:
create index 索引名 on 表名 (列名)条件
如果说经常在name 作为的,就可以建立索引
select * from user where name = 'zxc';
create index nameIndex on user(name)
2、复合索引
复合索引是基于两列或是多列的索引。
在同一张表上可以有多个索引,但是要求列的组合必须不同比如:
create index emp_indx1 on 表名 (列名,列名);
3、索引的缺点
1、建立索引,系统要占用大约的1.2倍的硬盘和内存空间
2、更新数据的时候,系统必须要有额外的时间同时对索引进行更新、
3、很少或 从不引用的字段;
4,、逻辑性的字段,如 男或女,是或否等
pl/sql编程
1、pl/sql(procedural language/sql)是oracle在标准的sql语言上,pl/sql不仅允许嵌入sql语言
,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用列外处理各种错误,这样
使的它功能变得更加强大
2、过程,函数,触发器是pl/sql编写。过程函数,触发器是在oralce中
pl/sql是非常强大的数据库过程语言,过程,函数可以再java程序中调用
存储过程创建
create procedure 过程名称 is
begin
##执行部分
insert into mytest values('ssss','sssss');
end;
或者
create or replacp(替换的意思) procedure is ...
2、调用存储过程
exec 过程名称 或者call 过程名称
3、标识符的命名规范
1)定义变量时,建议用v_作为前缀 v_sal
2)定义常量时,建议用c_作为前缀 c_rate
3)定义游标时,建议用 _cursor作为后缀 emp_cursor;
4)定义列外时,建议用e_作为前缀 e_error
4、块结构示意图
pl/sql块由三个部分构成:定义部分、执行部分、列外处理部分
declear
/*定义部分 ----------定义常量、变量、游标、例外、复杂数据类型
begin
/*执行部分-----------要执行的pl/sql语句和sql语句
exception
/*例外处理部分------处理运行的各种错误
end
5.相关说明
set serveroutput on ---打开输出选项
begin
dbms_output.put_line('hello');
end;
相关说明
dbms_output是oracle所提供的包 (类型java的开发包),该包包含一些过程,put_line就是dbms_output_put_line包含的一个过程
6,案例2-包含第一部分和执行部分的pl/sql块
declare
v_ename varchar2(25)
begin
select ename into v_ename(是指ename查出来的值放在 v_ename里面去) from emp where empno =&no;(控制台接收参数)
dbms_output.put_line(v_eame);(打印在控制台)
end;
7.实例3-包含定义部分、执行部分和例外处理部分
为了避免pl/sql程序运行错误,提高pl/sql的健壮性,应该错误进行处理,这个很有必要
比如在实例2中输入了不存在的雇员号,应该做例外处理
异常处理部分
declare
v_ename varchar2(25)
begin
select ename into v_ename(是指ename查出来的值放在 v_ename里面去) from emp where empno =&no;(控制台接收参数)
dbms_output.put_line(v_eame);(打印在控制台)
exception
when no_data_found then
dbms_output.put_line('错误');
end;
8.过程
过程用户执行特定的操作,当建立过程时,既可以指定输入参数,
也可以指定输出参数,通过在过程中使用输入参数,可以将数据传递到执行部分;
通过使用输出参数,可以执行部分的数据传递到应用环境
create procedure命令来建立过程
9.案列4
create procedure update_emp(spName varchar2,newSal number) is
begin
----执行部分,更具用户名去修改工资
update emp set sal=newSal where ename = spName;
end;
call('SCOTT',500);
10.函数
函数用户返回特定的数据,当建立函数时,在函数头部必须包含return字句
而在函数体内必须包含return 语句返回的数据。我们可以使用 create function来建立函数
函数案例 ---输入雇员的姓名,返回该雇员的年薪
create function (创建一个函数) sp_fun2(函数名称)(spName varchar2)
return number is yearSal number(7,2) ---返回一个yearSal
begin
----执行部分
select sal*12+nvl(comm,0)*12 into yearsal from emp where ename =spName
return yearSal;
end;
函数调用
在sqlplus中调用函数
首先创建一个变量
var sal number;
call 函数名('SCOTT') into:sal
在java调用函数自行百度
11.包
创建包
创建一个包 sp_package
声明该包有一个过程 update_sal (没有实现)
声明该包有一个函数 update_name (返回一个number)
create package sp_package is
procedure update_sal(name varchar2,newsal number);
function update_name(name varchar2) return number;
end;
包的规范只包含了过程和函数的说明,但是没有过程和函数的实现码。
包体用于实现包的规范中的过程和函数,
包建好,再建立包体可以使用 create package body命令
实现包体,(把包里面的过程和函数,都实现)
3.如何调用包的过程或是函数
当调用包的过程或函数时候,在过程和函数前需要带包名
call 包名.函数名称(‘参数’);
12.触发器
触发器是值隐含的执行的存储过程,当定义触发器时,必须要指定
13.在编写pl/sql程序时,可以定义变量和变量和常量;在pl/sql
程序中有:
标量类型
在编写pl/sql块时,如果使用变量,需在定义部分定义变量。
pl/sql中定义变量和常量的语法如:
indentifier [ constant ] datatype [not null] [:= 丨default expr ]
indentifier名称
constant 指定常量 需要指定他的初始值,并且值不能修改
datatype 数据类型
not null:指定变量值不能是null
:= 给变量或是常量指定初始值
default 用于指定初始值
expr:指定初始值的pl/sql表达式,可是文本值,其他变量,函数等
案例
定义一个变长字符串
v_ename varchar2(10)'
定义一个小数,范围 -9999.99-9999.99
v_sal number(6,2);
定义一个小数并给一个初始值5.4:=是plsql的赋值号
v_sal2 number(6,2):=5.4
定义一个日期类型数据
v_hiredate date;
定义一个布尔变量,不能位null ,初始值为false
v_valid boolean not null default false;
标量---最好使用%type类型
就是如果员工的姓名超过了5字符,就会有错误,为了降低pl/sql程序的维护工作量,可以使用%type属性定义变量
这样(变量) 会按照数据库列来确定你定义的变量的类型和长度
复合类型
用于存放多个值的变量。包括这几种:
pl/sql记录
8、使用%ROWTYPE
使用%ROWTYEP声明一个记录型变量,可以使它的类型与某个基本表的数据结构一致。
例1:
DECLARE
A EMP%ROWTYPE;
BEGIN
SELECT ENAME,JOB,HIREDATE INTO A.ENAME,A.JOB,A.HIREDATE
FROM EMP
WHERE EMPNO=7369;
DBMS_OUTPUT.put_line(A.ENAME||' , '||A.JOB||' , '||A.HIREDATE);
END;
输出:SMITH , CLERK , 17-12月-80
pl/sql表
嵌套表 用的少,自己百度
varray 用的少,自己百度
参照类型
案例1
lob
13.控制语句
1)使用各种if语句
条件分支语句
if----then, if-----then----else, if------then-----elsif-----else
案例1
案例2
案例3
案例
2)使用循环语句
while循环
3)使用控制语句 ---- goto 和 null;
无返回值的过程:案例一
创建book表
create table book(bookId number,bookName varchar2(50),publishHouse varchar2(50))
案例2
案例3
】】
分页的存储过程
第一步
第二步
第三 java测试是否能调用存储过程
列外处理(异常处理)
预定义列外
如果工资 是3000没有默认的入口,就抛出例外
自定义列外
视图
子查询扩展
单行子查询多行子查询
from字句后面跟子查询
oralce分页查询一共三种方式
1.rownum分页
select * from (
select a1.* , rownum fn from (
select * from emp) a1 where rownum = 10 )
where rn = 6;
2.rownum 显示行列 (oralce自带的机制)
合并查询
有时在实际应用中,为了合并多个select 语句的结果,可以使用union,union all,intersect,minus
1 )union 该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行
2)union all 不会去掉重复的行
3)intersect 取两个集合的交集
4)minus 取两个的集合差集
to_date函数,插入日期值会用到 to_date('日期变量','yyyy-mm-dd');
日期函数
1.sysdate 该函数返回系统时间
2.add _months ()
3.last_day(d) 返回指定日期所在月份的最后一天
4. to_char(d,'') 转成字符类型 select to_char(date,'yyyy-mm-dd hh12:mi:ss');
数据库管理员
数据库(表)的逻辑备份与恢复
数据字典和动态能视图
数据字典是oracle数据库中最重要组成部分,它提供了数据库的一些系统信息
动态视图记载了例程启动后相关信息
管理表空间和数据文件
相关文章推荐
- Navicat检测 Oracle 数据库安全性的方法
- Oracle
- ORACLE导出表结构脚本
- JDBC 连接mysql,oracle数据库代码及解析
- oracle层级查询(Hierarchical Queries)
- jdbc 连 oracle 12c
- jdbc 连 oracle 12c
- 启动oracle em命令及操作
- PowerDesigner表导入oracle 数据库
- oracle之cmd导入dmp文件
- 安装 ODAC
- Linux下oracle数据库连接问题
- 使用ORAPWD命令Oracle密码文件
- 在Linux下启动Oracle
- 【ORACLE】ORA-12537 问题整理
- 忘记oracle的sys用户密码怎么修改
- ORACLE口令文件验证与操作系统验证
- Oracle字符集及其查看和修改
- Oracle密码文件和登录方式
- JDBC连接Oracle的方法和问题