Oracle知识点总结
Oracle知识点总结
根据阎赫老师讲义整理Zealjiang
1、Oracle数据库的安装和配置
⑴Oracle Internet级数据库
SQLServer 中小企业级数据库
Access 桌面级数据库
⑵Oracle的安装
注意:来源和目标的目录不允许有中文或空格
⑶Oracle数据库启动时必需开启的后台服务
①OracleOrahome90TNSListener 使第三方的软件或语言访问
②OracleServiceETC Oracle的实例 CRUD 增删改查
注意:②中的ETC是你起的实例的名字
⑷Oracle的开发工具
①DOS界面的开发平台 -> 运行->sqlplus
②Oracle本身基于DOS的平台 ->运行-> sqlplusw
③Oracle Enterprise Manager Console
④PL/SQL Developer7.1.5
⑸创建一个表的完整流程
①创建一个数数库
例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启
create tablespace etc
datafile 'f:\etc.dbf'
size 1m
autoextend on;
删除表空间
drop tablespace 数据库名称;
②为该数据库创建一个帐号和密码
语法: create user 用户名称
identified by 密码
default tablespace 数据库名称
注意:1、在Oracle中账号和数据库one2one绑定
2、Oracle的密码不允许为纯数字或空
3、需要在system账号完成动作
修改Oracle的账号密码
语法:alter user 用户
identified by 新密码
③用grant 权限 to 用户为该帐户授权
语法: grant 权限名称 to 用户;
撤销权限
语法:revoke 权限名称 from 用户名;
④在该帐号下创建表
⑹Oracle中的事务处理
Transacation 事务
特点:整体提交(commit) 整体回滚(rollback)
事务的四个特性
①原子性不可分割
②持久性 -> 当数据整整写入到数据库物理文件中后,该数据被持久化
③隔离性 -> 事务之间相互独立互不干扰
④一致性 -> 数据安全
⑺Oracle中的保留点(还原点)
关键字:savepoint
使用方法:savepoint 名称;
如进行保留点回滚
rollback to mark2
⑻Oracle备份数据表数据
①create table 备份表名称 as 查询语句;
②Oracle备份表结构
create table emp_bak as select * from emp where 1=2;
2、Oracle的函数
⑴function (系统预定义函数)
函数和存储过程相比,在于函数必须有返回值,而存储过程只有输出参数。
语法:create or replace function 函数名称
return 返回类型
as
PL/SQL语句块
例子:输入一个员工工号,返回该员工所在部门平均工资
create or replace function fun_demo1(eno emp.empno%type) return emp.sal%type
as
avgsal emp.sal%type;
begin
select avg(sal) into avgsal from emp where empno=eno; return avgsal;
end;
调用:select fun_demo1(7788) from dual;
public int add(int num1,int num2){
int res = 0;
res = num1+num2;
return res;
}
⑵单行函数(单值函数) :函数有且只有返回1个值
|-字符函数 substr instr
①字符串连接函数:concat
concat(字符串1,字符串2)
Oracle中字符连接操作符号 " || "
②字符串对齐函数:lpad -> left padding 左填充 /rpad
语法:lpad(字符串,预留位置,填充字符)
SQL: select lpad(ename,10,' ') from emp;
③字符串截取函数:substr -> substring
语法:substr(字符串,截取的起始位置,截取个数)
substr(字符串,截取的起始位置)
SQL:> select substr(ename,1,3) frome emp;
④字符查找函数:instr -> inner string
语法:instr(字符串,待找的字符,查找的起始位置,出现次数) SQL:> select ename,instr(ename,'T',1,1) from emp;
注意:当返回值为0时,字符不存在
⑤函数:initcap -> initial captor
语法:initcap(字符串)
SQL:> select initcap(ename) from emp;
⑥函数:length
语法:length(字符串)
SQL:> select * from emp where length(ename)=5;
⑦函数:lower / upper
语法:lower(字符串)
SQL:> select lower(ename) from emp;
|-日期函数 sysdate add_months
①函数:sysdate
SQL:> select sysdate from dual; dual-无实际意义,函数测试或其他测试使用
②月份差:months_between
语法:months_between(日期1,日期2)
SQL: > select * from emp where
months_between(sysdate,hiredate)>=144
③函数:last_day
语法:last_day(日期数据)
SQL:> select * from emp where
last_day(hiredate)-2=hiredate;
④函数:add_months
语法:add_months(时间,添加月份)
SQL:>select add_months(sysdate,3) from dual;
|-转换函数 to_char to_date
①转换函数 to_char
语法:to_char(时间数据,制定格式)
SQL:> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss d ddd day') from dual;
yyyy-mm-dd 年月日
hh24:mi:ss 时分秒(24)
d 一周第几天
ddd 一年的第几天
day 星期几
②to_date: 将文本类型数据按照制定格式转换成时间类型数据
语法:to_date('具体的时间字符数据','时间字符串格式')
to_date('2010-01-19','yyyy-mm-dd')
注意:Oracle中的date字段类型及其特殊
|-数学函数 abs ceil floor
abs(n) 绝对值
ceil(n) 向上取值 ceilling天花板 ceil(1.1) -> 2
floor(n) 向下取值 floor地板 floor(2.9) -> 2
mod(m,n) 求模取余 mod(5,2) -> 1
power(m,n) m的n次方 power(2,8) ->256
round(m,n) 四舍五入 m待处理数据 n精度 round(3.1415,2) -> 3.14
trunc(m) 整数截取 trunc(3.1415) = 3
sign(m) 符号
sqrt(m) 平方根
|-混合函数 user nvl
①user : 返回当前登录账号
SQL> select user from dual;
②nvl : 替空函数
语法:nvl(字符串,替换后的数据)
注意:替换后的数据必须与该字段类型保持一致
SQL> select ename,nvl(comm,0) from emp;
⑶分析函数:数据分析和挖掘功能 Data Mining rank dense_rank
作用:主要用于排名使用
函数:rank
①语法:rank() over (order by 字段名称)
SQL:> select rank() over(order by sal desc),ename,sal from emp; 若排名相同下一个将跳转
SQL:> select dense_rank() over(order by sal desc),ename,sal from emp; 连续
②语法:rank(参数1,参数2) within group(order by 字段1,字段
2)
SQL:> select ename,rank(2850,'BLAKE') within group(order by
sal,ename) from emp;
⑷分组函数:类似于SQLServer中的聚合函数 sum avg count
group by 分组关键字 having 条件
3、Oracle数据库的查询
⑴制定区间查询
Oracle中伪列:Oracle为每张数据表(包括用户自定义创建的数据表)都
自动创建两个位列分别是:rowid、rownum
通过命令:SQL> desc 表名; --查看表结构
rowid: 由18个字符组成唯一标识每一行
rownum: 行号
⑵介绍问题:使用Oracle分层查询以数据结构显示emp表中的人员关系语法:select lpad(ename,level*5,' ') from emp
connect by prior empno=mgr
start with mgr is null;
⑶并集:查询部门10的办事员和部门20的经理
关键字:union all
select * from emp where deptno=10 and job='CLERK'
union all
select * from emp where deptno=20 and job='MANAGER';
注意:union all不会消除查询结果中的重复数据, union会消除查询结果中的重复记录
⑷交集:查询部门10和部门20都有的工作类型
关键字:intersect
select job from emp where deptno=10
intersect
select job from emp where deptno=20;
⑸差集:查询部门30中有,而部门10中没有的工作类型
关键字:minus
select job from emp where deptno=30
minus
select job from emp where deptno=10;
4、Oracle数据库的数据对象
Oracle的数据库对象:用户、表、约束、序列、视图、同义词和索引
定义:但凡使用"create" 开头创建的对象称之为数据库对象。
⑴锁定/解除用户
语法:alter user 用户名称 account lock;
注意:该指令一般在system账号下输入
解除用户锁定
语法:alter user 用户名称 account unlock;
SQL > alter user scott account unlock;
注意:Oracle 11g 中 scott账号是默认锁定的,需要进行解锁处理。
⑵用户授权/撤销
grant 权限名称 to 用户名称;
撤销用户权限
revoke 权限名称 from 用户名;
⑶表
数据字段的类型
①数字类型:number
语法:number(长度,精度)
number(5,2) 数字长度为3,精度为2 范围:-999.99 ~ 999.99 number(5) 数字长度为5,精度为0 范围:-99999 ~ 99999
number 精度默认为0 范围:-32767 ~ 32768
②字符类型:varchar2 可变长度 char 字符类型
语法:varchar2(长度)
③日期类型:date
④long数据类型:该字段最大存储空间为2GB,该字段不允许添加索引
LOB数据类型:该字段最大存储空间为4GB,该字段不允许添加索引 CLOB :大字符类型 -> 文章(小说,cnki)
BLOB :大二进制类型 -> 图片、音频、视频.....多媒体文件
FLOB :文件定位器 -> 内存指针
⑷创建数据表的语法结构:
create table 表名
(
字段名称1 类型 [约束],
字段名称1 类型 [约束],
……
字段名称n 类型 [约束]
)
①使用 desc 表名查看表结构
②给表添加字段address和telephone
语法:alter table 表名 add(字段名称类型);
③删除表字段address
语法:alter table 表名 drop column 字段名称;
④修改表中已有字段的类型
语法:alter table 表名 modify(字段名称新类型);
⑤修改表名称
语法:rename 原表名 to 新表名;
约束
完整性约束 = 准确性 + 一致性
⑸约束的四大分类:
①实体完整性约束 (行约束) -> 尽量减少数据表中数据的冗余(重复的数据)
技术实施:主键约束、唯一约束
语法:alter table 表名 add primary key(字段名称);
altet table 表名 add unique(字段名称);
添加非空约束
语法:alter table 表名 modify(字段名称 not null);
②域完整性约束 (列约束) -> 达到数据的准确性,控制数据的大小或范围或格式
技术实施:check检查约束
alter table 表名 add constraint 约束名称 check(条件);
③引用完整性约束 (表间约束) -> 达到数据的一致性
技术实施:外键约束
添加外键约束
alter table 外键表 add constraint 约束名称 foreign key(外键字段) references 主键表(主键字段);
删除外键约束
语法:alter table 表名 drop constraint 约束名称;
删除匿名约束
语法:alter table 表名 modify(字段名称 null);
④自定义完整性约束 -> 以上三种数据库内置约束不能满足开发人员的需求是,需要开发人员自定一些约束条件
技术实施:触发器
⑹使用sql脚本批量插入数据
使用命令 SQL > @路径+文件名称
SQL > @f:/a.sql;
⑺序列
定义:Oracle中使用sequence来实现字段的自增长功能,和SQLServer中的identity属性类型
语法:create sequence 序列名称
start with 起始数字
increment by 增长量;
用法:序列对象通过两个重要的属性进行访问取值
.nextval -> next value -> 下一个值
例子:select seq_1.nextval from dual;
.currval -> current value -> 当前值
例子:select seq_1.currval from dual;
如何实现其自增长功能
通过语法结构将序列对象与对应的数据表进行绑定,实现其自增长功能。
例子: create table users(userid number(2),username varchar2(10));
create sequence seq_users start with 1 increment by 1;
insert into users values(seq_users.nextval,'alvin');
注意:Oracle建议一个序列对象尽与一张数据表进行绑定
技巧:create sequence 序列名称; 默认从1每次增长1
⑻视图
作用:1、简化复杂的SQL语句
2、提高数据的访问安全性
语法:create or replace view 视图名称
as
复杂的SQL查询语句
视图是一张虚拟的数据表,在Table对象中不存在,只存在于内存中
注意:若视图由1张基表组成,修改视图将会修改基表数据,若视图由多张表组成,则不会修改基表数据
⑼同义词
作用:Oracle中的同义词提供各种数据库对象(表)的别名,目的在于提高数据表访问的安全性,尤其多用户并发访问时。
语法:create synonym 表的别名 for 表名;
SQL > create synonym bak1 for emp;
扩展:公有同义词 public
语法:create public synonym 别名 for 表名;
⑽索引
作用:提高SQL查询语句按照制定字段查询的效率
语法:create index 索引的名称 on 数据表(字段)
例子:为hiredate字段添加索引,提高按日期查询的SQL语句的效率
create index idx_hire on emp(hiredate)
原理:空间换效率
SQL语句索引优化规则
①不带where条件的SQL语句一定不能使用索引
②在where条件中有索引的字段不能使用函数
例子:假设我们查询在1987年参加工作的所有员工
SQL >select * from emp where to_char(hiredate,'yyyy')='1987';
SQL >select * from emp where hiredate=to_date('1987','yyyy');
③在where条件中有索引的字段不能参与运算
例子:查询在10000天以前参加工作的员工信息
SQL >select * from emp where sysdate-hiredate>10000;
SQL >select * from emp where hiredate ④尽量少用 not in , not exists , like '%' 等关键字 ⑤书写查询语句的时候,应该首先考虑关联查询、其次考虑集合查询,最后考虑子查询 ⑥where条件中限制性强的条件应该写在where最后的一个条件 where条件从右向左经行条件解析 ⑦多表查询中,驱动表应该是返回数据少的表 例子:查询部门account 的所有员工信息 SQL > select e.*,d.dname from emp e,dept d where e.deptno=d.deptno and d.dname='ACCOUNTING'; ⑾Oracle中常用的数据字典 Oracle是以中以表管表的模式,同时数据字典是有表或视图组成。 数据字典的分类: USER_xxx :表示当前用户所拥有的数据库对象 ALL_xxxx :表示当前用户与权力查看的数据库对象 DBA_xxxx :表示数据中所拥有的全部对象,只有在超级管理员级别下才可查看。 xxxx :代表数据库对象的复数形式,例如:tables indexes ....... 5、Oracle数据库的多表查询 ⑴等连接:select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; 使用内连接模式编写: ⑵内连接:inner join ......on...... select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno; 分析:部门为主显示字段,dept为主表 姓名为辅助显示字段,emp为辅助表 ⑶外连接:select d.dname,e.ename from emp e,dept d where e.deptno(+)=d.deptno; 6、Oracle数据库的游标 游标cursor 游标的分类:隐式游标:Oracle自动应以一个隐式游标名称为SQL ,该游标不被程序员控制,自动开启、操作及结束。 显式游标:可供程序员自己创建及操作 |--- 静态游标 |--- 动态游标 ⑴静态游标loop循环游标/ for循环游标 ====loop循环游标===== 步骤1:创建一个游标 cursor 游标名称is SQL查询语句; 步骤2:开启游标 open 游标名称; -> 执行定义的SQL查询语句并将结果集合存放到游标中 步骤3:使用loop循环遍历游标中的数据并进行相应处理 loop fetch 游标名称into 变量; exit when 游标名称%notfound; ..... end loop; 步骤4:关闭游标 close 游标名称; 例子:显示部门编号为10的员工姓名 declare --步骤1:创建一个游标 cursor mycur is select ename from emp where deptno=10; en emp.ename%type; begin --步骤2:开启游标 open mycur; --步骤3:使用loop循环遍历游标中的数据并进行相应处理loop fetch mycur into en; exit when mycur%notfound; dbms_output.put_line(en); end loop; --步骤4:关闭游标 close mycur; end; =======for循环游标======= declare --步骤1:创建一个游标 cursor mycur is select * from emp where deptno=10; erow emp%rowtype; begin --步骤3:使用for循环遍历游标中的数据并进行相应处理for erow in mycur loop dbms_output.put_line(erow.ename); end loop; end; ⑵动态游标(扩展) 作用:使用游标变量高度重用(只能使用loop循环) 语法结构: 步骤1:声明一个动态游标类型 type 类型名称 is ref cursor; 步骤2:使用声明号的类型创建一个游标变量 游标名称类型名称; 步骤3:打开游标并且绑定SQL语句 open 游标名称 for SQL查询语句 步骤4:使用循环遍历游标中的数据并进行处理 loop fetch 游标名称 into 变量; exit when 游标名称%notfound .....数据处理...... end loop; 步骤5:重复3~4 chapter 7 1.Oracle数据库物理存储结构的组成及各个部分的功能、性质。 数据文件:用于存储数据库中的所有数据 控制文件:用于记录和描述数据库的物理存储结构信息 重做日志文件:用于记录外部程序(用户)对数据库的改变操作 归档文件:用于保存已经写满的重做日志文件 初始化参数文件:用于设置数据库启动时的参数初始化值 跟踪文件:用于记录用户进程、数据库后台进程等的运行情况 口令文件:用于保存具有SYSDBA,SYSOPER权限的用户名和SYS用户口令; 警告文件:用于记录数据库的重要活动以及发生的错误; 备份文件:用于存放数据库备份所产生的文件。 2.数据文件管理: (1)数据文件与表空间的关系 从物理角度看,数据库由数据文件构成,数据存储在数据文件中;从逻辑角度看,数据库是由表空间构成的,数据存储在表空间中。一个表空间包含多个数据文件,但一个数据文件只能属于一个表空间。 在oracle数据库中,数据文件是依附于表空间而存在。一个表空间可以包含多个数据文件,但一个数据文件只能从属于一个表空间。在逻辑上,数据库对象都存放在表空间中,实质上是存放在表空间所对应的数据文件中。 (2)数据文件的添加、数据文件大小的修改autoextend on 、resize(操作)、数据文件的移植 添加: 向表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB; 向表空间添加一个自动增长的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB autoextend on next 1M maxsize 50MB; 向临时表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名 add tempfile‘路径\*.dbf’ size xMB; 修改: ①修改大小 修改数据文件大小为yMB: Alter database datafile ‘路径\*.dbf’ resize yMB; 修改文件的自动增长方式: Alter database datafile ‘路径\*.dbf’ autoextend on next 1M maxsize unlimited; 1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id 一.创建用户 在YGGL数据库中创建一个用户MANAGER,授予DBA角色和SYSDBA系统权限,它可以替代system系统用户。 CONNECT SYSTEM/123456 AS SYSDAB CREATE USER MANAGER PROFILE "DEFAULT" IDENTIFIED BY manager DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT SYSDBA TO "MANAGER"; GRANT "COUNTNECT" TO "MANAGER"; GRANT "DBA" TO "MANAGER"; ALTER user MANGER GRANT CONNECT THROUGH SYSTEM; 二:创建角色 在YGGL数据库中创建一个角色ADMIN,授予DBA角色和SYSDBA系统权限。CREATE ROLE ADMIN IDENTIFILED BY "manager"; GRANT SYSDAB TO ADMIN ; GRANT SYSOPER TO ADMIN; GRANT "CONNECT" TO ADMIN; GRANT "DBA" TO "ADMIN"; 一.创建概要文件 在YGGL数据库中创建概要文件YGGL_PROFILE并分配给用户MANAGER。CREATE PROFILE "XSCJ _PROFILE"LIMIT COMPOSITE_LIMIT DEFAULT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 20 PASSWORD_GRACE_TIME 60 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME 120 PASSWORD_VERIFY_FUNCTION DEFAULT (1)使用命令方式分别向YGGL数据库个表中插入一行记录 INSERT INTO ZPEMPLOYEES V ALUES('011112','罗林 ',TO_DATE('26-06-1973','DD-MM-YYYY'),1,'解放路100 ',210002,4055663,5); INSERT INTO ZPDEPARTMENTS V ALUES('6','人力资源',NULL); INSERT INTO ZPSALARY V ALUES ('011112',1200.09,50) (2)修改表salry的记录值 UPDATE ZPSALARY SET InCome=2890 WHERE EmployeeID='011112'; (3)删除Salary中的一行记录 DELETE FROM ZPSALARY WHERE EmployeeID='01112'; 3.索引和完整性 (1).对YGGL数据库中的Employees表的DepartmentID列建立索引 CREATE INDEX PK_XS_BAK ON ZPEMPLOYEES(DepartmentID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INITIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20 基础知识 表3.2 Oracle数据类型 表3.3 XSB的表结构 操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] 个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~ 1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。 2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象: 由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些: 首先是安装了mysql数据库之后,进入dos命令提示窗口, 接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下, 然后输入mysql -u root -p,然后会提示输入密码,然后进入, 进入后的命令提示符是mysql> 在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库, Create database 数据库名字; 增 A.首先是新建表:create table table_name( 一、Oracle RAC原理 ORACLE RAC原理在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。 逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。 二、RAC中的特点是: 每一个节点的instance都有自己的SGA 每一个节点的instance都有自己的background process 每一个节点的instance都有自己的redo logs 每一个节点的instance都有自己的undo表空间 所有节点都共享一份datafiles和controlfiles Oracle还提出了一个缓存融合的技术(Cache fusion) 目的有两个 1.保证缓存的一致性 2.减少共享磁盘IO的消耗 因此在RAC环境中多个节点保留了同一份的DB CACHE 缓存融合(Cache fusion)工作原理: -**************************************** 1.其中一个节点会从共享数据库中读取一个block到db cache中 2.这个节点会在所有的节点进行交叉db block copy 3.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改 4.为了达到存储的一致最终修改的结果也会写到磁盘上 三、ClusterWare组件 ******************* 有四种Service Crsd - 集群资源服务 Cssd - 集群同步服务 Evmd - 事件管理服务 oprocd - 节点检测监控 有三类Resource VIP - 虚拟IP地址(Virtual IP) OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息 Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表 Oracle数据库复习提纲 一、Oracle10g简介 1、Oracle10g一共有哪几个版本? Oracle数据库10g标准版1,Oracle数据库10g标准版,Oracle数据库10g企业版,Oracle数据库10g个人版. 2、 Oracle10g中的g是什么含义? Oracle 10g的g就代表grid computing。 3、理解Oracle数据库中的方案、数据块、区间、段、表、表空间之间的关系。 Oracle 数据库的逻辑结构包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间则由数据块组成 4、标准数据块大小由初始参数(DB_BLOCK_SIZE)指定。 5、理解数据库、表空间、数据文件之间的关系。 每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。 表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量为2MB,用户表空间的存储容量为4MB)。 数据库中表空间的存储容量之和就是数据库的存储容量。 6、叙述Oracle数据库的物理结构。(每个Oracle数据库都由3类文件组成:数据文件、日志文件、控制文件,……) Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。数据文件有下列特征: 一个数据文件仅与一个数据库联系。 当数据库容量越界时,数据文件能够自动扩展。 一个或多个数据文件组成一个表空间。 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。 日志的主要功能是记录对数据所作的修改,所有对数据库作的全部修改记录在日志中。 每个Oracle数据库有一个控制文件,记录数据库的物理结构。 控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数 AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK Oracle数据库开发指南 前言 参考 第一部分基础 一、数据库对象 表空间Tablespace:存储数据库对象的容器 模式Schema 表Table 表名最长为30个字符,不能以数字开头。一个表最多254个列。 CREATE TABLE tablename AS select_statement,通过子查询建立新表 DESC tablename,查看表或其它数据库对象的定义 ALTER TABLE tablename RENAME new_tablename,修改表名 RENAME tablename TO new_tablename,修改表名,注意修改表名后,视图必须重建。 索引Index 保证表中数据的唯一性;减少定位和检索数据所需要的I/O操作 Oracle允许对列值创建索引,也可对表达式创建索引。所以既可是UNIQUE,也可是UNIQUE Oracle对DESC(降序)索引认为是基于函数的索引。 序列Sequence 使用序列为表的码值生成唯一的序列值 聚簇Cluster 视图View 由一个预定义的查询构成,可看作为数据库的逻辑表。 SELECT text_length FROM user_views WHERE view_name = …viewname? Set long 5000 SELECT text FROM user_views WHERE view_name = …viewname? 快照Snapshot 快照与视图都是基于查询结果的。但快照使用物理的存储空间,快照中的数据一般都是静态的,只有刷新时才改变。 快照的目的是提供某个时间点的数据。 二、数据类型 CHAR(n),255字符 V ARCHAR2(n):2000字符 LONG,2G字符,只能用在列SELECT列表,UPDATE语句的SET子句或INSERT语句的V ALUES子句中,一个表中只能有一个LONG列,LONG列不能建索引,也不能有完整性约束,不能用于表达式。DATE 第二章考点(重点) 1.手动创建数据库(PPT上创建数据库脚本) 编写初始化参数文件 新增参数: instance_name=orcl Db_domain=https://www.360docs.net/doc/479702281.html, 修改参数: Db_name=orcl Db_block_size=8192 Remote_login_passwordfile=exclusive 设置操作系统环境变量oracle_sid指向数据库实例的名称 Set oracle_sid=orcl(数据库实例的名称) 创建实例 C:\>oradim –new –sidorcl–intpwd sys123 –startmode auto 以管理员身份连接到数据库 Sqlplus实用工具登录数据库:c:\sqlplus/nolog 以数据库管理员身份连接数据库:sql>connect sys/sys123 as sysdba 启动实例 将文本初始化参数文件pfile转化为二进制初始化参数文件spfile:sql>create spfile from pfile; 以nomount形式启动实例:sql>startup nomount Create database创建数据库 Create database orcl Datafile ‘c:\oracle\product\10.2.0\orcl\system_01.dbf’ size [] Autoextend on next [] maxsize [] Sysauxdatafile ‘c:\oracle\product\10.2.0\orcl\systemaux_01.dbf’ size [] Autoextend on next [] maxsize [] Logflie Group1(‘c:\oracle\product\10.2.0\orcl\log_1_01.rdo’) size [], Group2(‘c:\oracle\product\10.2.0\orcl\log_2_01.rdo’) size [] Character set zhs16gbk; 运行数据字典脚本 运行以下三个数据字典脚本 Catalog.sql:创建系统常用的数据字典视图和同义词 Catproc.sql:建立PL/SQL功能的使用环境,还创建几个PL/SQL包用语扩展 DBMS功能 Pupbld.sql:使用SQL*PLUS环境的需要 ●Connect sys/sys123 as sys dba @ c:\oracle\product\10.2.0\db_1\RDBMS\ADMIN]catalog.sql @ c:\oracle\product\10.2.0\db_1\RDBMS\ADMIN]catproc.sql ●Connect system/manager 数据库基础知识整理与复习总结 1、数据库底层 MySQL数据库的底层是B+树。说到B+树,先说下B树,B树也叫多路平衡查找树,所有的叶子节点位于同一层,具有以下特点:1)一个节点可以容纳多个值;2)除非数据已满,不会增加新的层,B树追求最少的层数;3)子节点中的值与父节点的值有严格的大小对应关系。一般来说,如果父节点有a个值,那么就有a+1个子节点;4)关键字集合分布在整棵树中;5)任何一个关键字出现且只出现在一个节点中;6)搜索可能在叶子结点结束,其搜索性能等价于在关键字全集做一次二分查找。 B+树是基于B树和叶子节点顺序访问指针进行实现,它具有B树的平衡性,并且通过顺序访问指针来提高区间查询的性能,一个叶子节点中的key从左至右非递减排列。特点在于:1)非叶子节点中含有n个关键字,关键字不保存数据,只作为索引,所有数据都保存在叶子结点;2)有的叶子节点中包含了全部关键字的信息及只想这些关键字记录的指针,即叶子节点包含链表结构,能够方便进行区间查询;3)所有的非叶子结点可以看成是索引部分,节点中仅包含其子树中的最大(或最小)关键字;4)同一个数字会在不同节点中重复出现,根节点的最大元素就是B+树的最大元素。 MySQL中的InnoDB引擎是以主键ID为索引的数据存储引擎。InnoDB通过B+树结构对ID建立索引,在叶子节点存储数据。若建索引的字段不是主键ID,则对该字段建索引,然后再叶子节点中存储的是该记录的主键,然后通过主键索引找到对应的记录。因为不再需要全表扫描,只需要对树进行搜索即可,所以查找速度很快,还可以用于排序和分组。 InnoDB和MyISAM引擎都是基于B+树,InnoDB是聚簇索引,数据域存放的是完整的数据记录;MyISAM是非聚簇索引,数据域存放的是数据记录的地址。InnoDB支持表锁、行锁、间隙锁、外键以及事务,MyISAM仅支持表锁,同时不支持外键和事务。InnoDB注重事务,MyISAM注重性能。 2、SQL语言之DQL、DML、DDL和DCL DQL指的是Data Query Language,数据库查询语言,主要是select命令; DML指的是Data Manipulation Language,数据库操作语言,主要有insert、delete、update等命令; DDL指的是Data Defined Language,数据库定义语言,主要是对数据库的某些对象,如database和table进行管理,主要有create、alter、drop等命令,比如创建数据库和表格、更改表结构和设置约束、删除表和数据库; DCL指的是Data Control Language,数据库控制语言,主要是用于授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,主要有grant、rollback 等命令。 DML和DDL的区别:DML操作可以手动控制事务的开启、提交和回滚,而DDL是隐形提交不能回滚。 3、数据库连接协议 JDBC驱动协议:默认TCP协议 客户端和Oracle服务器之间通信协议是TCP的,但是一个数据库连接也会其一个UDP端口。 MySQL的连接方式有两种:Socket和TCP/IP ORACLE & PLSQL必备知识点 1、ORACLE 客户端软件的安装与配置; A、ORACLE自带软件 B、P L/SQL DEVELOPER 或TOAD等; C、服务配置 D、 2、SQLPLUS 的使用 A、常用的格式设置命令 B、快捷命令,ed , / C、自动登陆格式设置 3、常用的数据类型的理解与识别; 数值型,字符型,日期型; 4、常用函数的使用 A、字符函数 Char ,upper,lower, substr,lpad,rpad,replace,ltrim,rtrim Instr,length B、数学函数 Abc, mod C、时间日期函数 Sysdate,add_months,last_day,month_between,next_day D、空值函数 Nvl E、汇总函数 Count , sum , avg,max, min F、转换函数 To_char, to_number G、其它函数 Decode,user 5、SELECT 查询语句的使用 A、分组,排序 B、多表一对一关联 C、多表一对多关联(左关联或右关联) D、交集,并集,差集 E、Where 子句的使用 F、ORDER BY 子句 G、GROUP BY 子句 H、HA VING 子句 I、子查询 6、通配符的使用 Like , % , ? 7、表的联合 A、等值联合 B、不等值联合 C、外部联合与内部联合 D、自我联合 8、UPDATE ,INSERT INTO,DELETE语句的使用 A、INSERT ……V ALUES B、I NSERT ……..SELECT 9、表结构的管理 A、创建表 CREATE TABLE B、修改表结构 ALTER TABLE C、删除表 DROP TABLE D、表的约束,关键字 10、索引与关键字的创建与使用 包括索引的优化与提升性能; 11、序列的创建与使用 12、同义词的建立与使用 13、系统(字典)表的使用 A、表对象user_tables B、索引表user_indesx C、约束表user_constraints D、序列对象user_sequences E、视图对象user_views F、同义词对象user_synonyms G、用户TAB对象tab H、对象表user_objects I、学会掌握规律,user_ dba_ 14、数据的导出与导入,使用工具和SQL 15、PL/SQL的使用 A、PL/SQL块的基本语法 绪论: 1、Oracle,甲骨文,1977年开始研发,总部位于美国加州红木滩市,创始人为Larry Ellison(埃里森) 、 Bob Miner、Ed Oates 2、Oracle服务器=实例+数据库;Oracle实例=内存+后台进程; 第四章:表空间的创建与删除 例4.1 建立名称为data_ts1的数据表空间,大小为50M,区间统一为128KB大小。 SQL> conn system/systempwd@orcl SQL> drop tablespace data _ts1 including conntents; SQL> create tablespace data _ts1 2 tempfile ‘ %oracle_home%\database\data_ts1.dbf ’ SIZE 50M REUSE 3 uniform size 128K; 例4.2 建立名称为temp_ts1的临时表空间,使用temp_ts1.dbf文件存放临时数据。 SQL> conn system/systempwd@orcl SQL> drop tablespace temp_ts1 including conntents; SQL> create temporary tablespace temp_ts1 2 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse 3 uniform size 128k; 例4.3创建10号部门经理用户EMP_MGR10,指定该用户的数据表空间为data_ts1,临时表空间为temp_ts1。授权该用户可以查看SCOTT用户下雇员表中的记录。 SQL> conn system/systempwd@orcl SQL> drop user emp_mgr10 cascade; SQL> create user emp_mgr10 identified by emp_mgr10pwd 2 default tablespace data_ts1 temporary tablespace temp_ts1; SQL> grant connect to emp_mgr10; SQL> conn scott/tiger@orcl 4 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse 5 uniform size 128k; 例4.4 创建和应用撤销表空间。 SQL> conn system/systempwd@orcl SQL> drop tablespace undo_ts1 including conntents; SQL> create undo tablespace undo_ts1 2 datafile ‘ %oracle_home%\database\undo_ts1.dbf ’ size 50M reuse; 例4.5 创建大文件表空间,并指定为SCOTT用户的默认数据表空间。 SQL> conn system/systempwd@orcl SQL> drop tablespace bigfile_ts1 including conntents; SQL> create bigfile tablespace bigfile_ts1 2 datafile ‘ %oracle_home%\database\bigfile_ts1.dbf ’ size 50M reuse; SQL> alter user scott default tablespace bigfile_ts1; 需要注意的是,大文件表空间的段空间管理不能为手工(MANUAL),只能为自动(AUTO)。 例4.6调整数据表空间data_ts1的大小。 SQL> conn system/systempwd@orcl --为表空间data_ts1增加一数据文件,大小为1M。 SQL> alter tablespace data_ts1 2 add datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ size 1M; --重置该数据文件大小为2M。 SQL> alter tablespace 2 datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ siz e 2M; Oracle复习题 一、填空 1.oracle有(内置函数)和(用户自定义函数)两种函数 2.用户要得到自己能访问的所有表的信息,要查看(all_tables)视图 3.启动和关闭oracle数据库的命令分别是(startup)和(shutdown) 4.查看一个表或视图的结构的命令是(describe) 5.把查询结果按salary的降序排序应该在查询语句中使用 (order by salary desc) 6.逻辑运算符中优先级最高的是(not)最低的是(or) 7. 通配符%表示(任意零个或多个字符) 8.oracle数据库中的字符串连接符是(||) 9.select instr(‘HelloWorld’,’w’) from dual的查询结果是(0) 10.select trunc(1542.35,-2) from dual的查询结果是(1500) 11.在查询语句中去掉重复记录,应该在查询语句加上(distinct)选项 12.当对一个表定义一个主键时,系统自动会为该表建立(唯一)索引 13.rollup操作符中一共有n个表达式,一共要执行(n+1)次grouping操作 14.改变会话时区,使用(alter session set time_zone)命令 15.当一个select语句块在一条查询语句多次使用时,我们可以使用(with)子句来提高性能 16.正则表达式{m,n}、|分别表示(连续的任意m~n个数字字符),(将两个匹配条件进行逻辑“或”运算) 1.设系统日期为今天,select to_char(to_date(’85-11-12’,’RR-MM-DD’),’YYYY-MM-DD’) from dual的查询结果为(C) A.2085-11-12 B. 85-11-12 C.1985-11-12 D.2185-11-12 2. 与where salary between 2500 and 3500等价的语句是(D) A.salary>2500 or salary <3500 B.salary>2500 and salary <3500 C.salary>=2500 or salary <=3500 D.salary>=2500 and salary <=3500 3. 下面哪一个like命令会返回名字像HOTKA的行(A?C) A.where last_name like ‘_HOT%’ B. where last_name like ‘H_T%’ C. where last_name like ‘%TKA_’ D. where last_name like ‘%TOK%’ 4. oracle数据库默认的最高管理员是(C) A.administrator B.sysman C.sys D.sa 5. 将字符串’05-3月-2009’转换成日期,下列写法正确的是(D) A.to_date(’05-3月-2009’,’dd-mm-yyyy’) B. to_date(’05-3月-2009’,’ yyyy -mm- dd’) C. to_date(’05-3月-2009’,’ yyyy -mon- dd’) D. to_date(’05-3月-2009’,’dd-mon-yyyy’) 6. 下列哪条语句与select employee_id,last_name from employees where salary<(select min(salary) from employees)等价(B) 1.constraint约束: alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键 alter table [table_name] drop constraint [pk_name];//删除主键 alter table [table_name] add constraint [fk_name] foreign key(fkname) references [tablename](fkname);//添加外键 alter table [table_name] drop constraint [fk_name];//删除外键 2.union 关键字: A username, B username rod bruce rose marina select username from A union select username from B 2、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随E XCEPT 一起使用时(EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 3.复合主键一般不设外键 4. 组函数也称为聚合函数。 例如:我们把学生可以分为男生和女生两个组,如果想求每组的人数,平均身高,平均年龄等,就需要用到分组函数了。 在SQL中常用的组函数有以下几个: COUNT():求出全部的记录数 MAX():求出一组中的最大值 MIN():求出一组中的最小值 AVG():求出一组中的平均值 SUM():求和 范例:COUNT()函数oracle复习大纲(1)
Oracle数据库基本知识点
Oracle复习
Oracle数据库期末复习知识点整理
关于数据库知识点的再学习和整理
Oracle_RAC知识汇总
Oracle知识点总结
oracle数据库 复习提纲 及其答案详解
Oracle数据库知识总结
Oracle数据库开发知识点
ORACLE期末复习资料
数据库基础知识整理与复习总结
ORACLE PLSQL知识点整理
Oracle复习题总结
Oracle 复习资料
Oracle数据库 知识点总结