目录
1 Oracle基础
1.1 Oracle简介
1.1.1 什么是Oracle
Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户服务器(CLIENT/或B/S体系结构的数据库之一。
Oracle通常应用于大型系统的数据库产品。
Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
Oracle数据库具有以下特点:
- 支持多用户、大事务量的事务处理,处理并发能力狠强
- 数据安全性和完整性控制,在安全设计方面没有任何数据库可与之相比
- 支持分布式数据处理,一个实例部署到多台机器时由Oracle自身实现分布式
- 可移植性,在不同系统中的数据文件类型是一致的,可在不同版本系统做数据移植
1.1.2 Oracle体系结构
1.数据库
Oracle数据库是数据的物理存储。这就包括(数据文件ora或者dbf、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库(而MySQL是在一个实例下可创建多个库)。可以看作是Oracle就只有一个大数据库。
2.实例
一个Oracle实例(OracleInstance)由一系列的后台进程(BackguoundProcesses)和内存结构(MemoryStructures)组成。一个数据库可以有n个实例(一般使用时通常只建一个实例)。
3.数据文件(dbf)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,数据真正是在某一个或者多个数据文件(dbf)中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
4.表空间
表空间是Oracle对物理数据库上相关数据文件(ora或者dbf文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为system表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。
注:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件(dbf)中。Oracle是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询,而是由用户去查。因为不同用户可以在同一个表空间建立同一个名字的表,这里就是以用户作区分了。
5.用户
用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, Oracle的用户与MySQL的数据库类似,每建立一个应用需要创建一个用户。
1.2 Oracle安装与配置
本次演示安装Oracle 11g,安装环境为Windows10 64位专业版
1.2.1 安装前准备
下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
下载的这两个文件,将两个压缩包解压到同一路径下,使解压后的文件合并,解压后steup.exe安装
安装前务必要关闭各种杀毒软件,安全卫士
1.2.2 安装步骤
安装步骤可参考https://www.cnblogs.com/gengshao/p/10764248.html
1.2.3 可能出现的问题及处理
1.2.3.1 Environment variable:“PATH”
Environment variable: “PATH” - This test checks whether the length of
the environment variable “PATH” does not exceed the recommended
length. 预期值 : 1023 实际值 : 1184 错误列表: PRVF-3929 : Adding the Oracle
binary location to the PATH environment variable will exceed the OS
length limit of [ “1023” ] for the variable on the node “ABC” - Cause:
The installer needs to update the PATH environment variable to include
the value “%ORACLE_HOME%/bin;”. However, doing so will cause PATH to
exceed the maximum allowable length that this operating system allows.
- Action: Ensure that the sum of the lengths of your current PATH environment variable and that of “%ORACLE_HOME%/bin;” does not exceed
the operating system limit. Restart the installer after correcting the
setting for environment variable
改 cvu_prereq.xml 里面 的配置,cvu_prereq.xml 文件在oracle安装解压包database\stage\cvu目录中找到自己对于的电脑系统,我的是win10的,没有的可以填加下面的内容(在CERTIFIED_SYSTEMS标签下)
<OPERATING_SYSTEM RELEASE="6.2">
<VERSION VALUE="3"/>
<ARCHITECTURE VALUE="64-bit"/>
<NAME VALUE="Windows 10"/>
<ENV_VAR_LIST>
<ENV_VAR NAME="PATH" MAX_LENGTH="2023" />
</ENV_VAR_LIST>
</OPERATING_SYSTEM>
把1023改大 比如2023 然后退出安装程序重新安装下就ok了
1.2.3.2 执行先决条件失败
处理方式请参考https://www.cnblogs.com/xiaoxiaoweng/p/7277969.html
1.2.3.3 实例化EM配置文件时出错
安装时如果没有关闭杀毒软件便可能出现此问题
处理方式1:重新配置EM
配置方式可参考https://blog.csdn.net/ajphsb0849/article/details/101285448
处理方式2:卸载Oracle,重新安装
卸载方式可参考
https://blog.csdn.net/Fisher_lht/article/details/78797141
https://blog.csdn.net/m0_38025207/article/details/80717071
1.2.4 使用可视化连接工具PL/SQL Developer
PL/SQL Developer下载、安装、使用教程请参考
https://blog.csdn.net/sinat_34104446/article/details/80330021
1.2.5 创建/删除表空间
create tablespace hellospace --创建名为hellospace的表空间
datafile 'E:\Repository\hellospace.dbf' --表空间对应的数据文件是hellospace.dbf
size 100 m --数据文件的大小是100兆
autoextend on --当数据超过100兆时自动增长
next 10 m; --数据文件自动增长每次增长10兆
drop tablespace hellospace; --删除表空间hellospace,不会关联删除数据文件
1.2.6 创建用户
create user bigboss --创建名为bigboss的用户
identified by 666666 --用户密码是666666
default tablespace hellospace; --该用户默认的表空间是hellospace,一个表空间下可创建多个用户
1.2.7 用户授权
grant dba to bigboss; --给bigboss用户添加dba权限
1.3 表的创建、修改与删除
1.3.1 创建表
语法:
CREATE TABLE 表名称(
字段名 类型(长度) primary key,
字段名 类型(长度),
.......
);
常用数据类型说明:
- 字符型
CHAR:固定长度的字符类型,最多存储 2000 个字节,若存入的字节数不够设定的字节长度,会以空格补齐,取出时也会带空格
VARCHAR2:可变长度的字符类型,最多存储 4000 个字节,类似MySQL的varchar
LONG : 大文本类型,最大可以存储 2个G,类似MySQL的text类型,可存储长篇文章 - 数值型
NUMBER:数值类型
例如:
NUMBER(5) 最大可以存的数为 99999
NUMBER(5,2)最大可以存的数为 999.99 - 日期型
DATE:日期时间型,精确到秒
TIMESTAMP:精确到秒的小数点后9位 - 二进制型(大数据类型)
CLOB : 存储字符,最大可以存4个G,当字符长度超过LONG的长度时,可使用该字段
BLOB:存储图像、声音、视频等二进制数据,最多可以存4个G
实例:
create table hero (
id number primary key,
name varchar2(30),
price number(10,2),
birthday date
);
1.3.2 修改表
增加字段语法:
ALTER TABLE 表名称 ADD(
列名1 类型 [DEFAULT 默认值],
列名1 类型 [DEFAULT 默认值],
...
);
例如:给hero表追加两个字段
ALTER TABLE HERO ADD(
REMARKS VARCHAR2(20),
SEX VARCHAR2(30)
);
修改字段类型或长度语法:
ALTER TABLE 表名称 MODIFY(
列名1 类型 [DEFAULT 默认值],
列名1 类型 [DEFAULT 默认值],
...
);
例如:修改hero表刚添加的两个字段的类型或长度
ALTER TABLE HERO MODIFY(
REMARKS VARCHAR2(50),
SEX CHAR(1)
);
修改字段名语法:
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
例如:修改hero中的sex字段名修改为gender
ALTER TABLE HERO RENAME COLUMN SEX TO GENDER
删除字段名语法:
--删除一个字段
ALTER TABLE 表名称 DROP COLUMN 列名
--删除多个字段
ALTER TABLE 表名称 DROP (列名 1, 列名 2...)
1.3.3 删除表
删除表语法:
DROP TABLE 表名称
1.4 数据增删改
1.4.1 插入数据
插入数据语法:
INSERT INTO 表名 [列名1,列名2,...)] VALUES(值1,值2,...);
COMMIT;
例如:
INSERT INTO HERO VALUES (1,'典韦',9000.50,sysdate,'战士','1');
COMMIT;
注:语句中的 sysdate 是系统变量用于获取当前日期,执行INSERT后一定要再执行commit提交事务hero表插入数据
1.4.2 修改数据
修改数据语法:
UPDATE 表名 SET 列名1=值1,列名2=值2,...WHERE 修改条件;
COMMIT;
需求:将hero表中id为1的英雄的birthday日期更改为三天前的日期
update hero set birthday=birthday-3 where id=1;
commit;
1.4.3 删除数据
语法1:
DELETE FROM 表名 WHERE 删除条件;
COMMIT;
需求:删除hero表中id为1的数据
delete from hero where id=1;
commit;
语法2:
TRUNCATE TABLE 表名称
需求:删除hero表中所有数据
delete from hero;
commit;
或
TRUNCATE TABLE HERO;
比较truncat与delete实现数据删除:
- delete删除的数据在commit之前可以执行rollback回滚,delete操作会将被删除的数据放入表空间的回滚段,然后若执行rollback,会将数据从回滚段恢复到表中,若执行commit,则将数据从回滚段删除最终删除数据。delete删除可能产生碎片,并且不释放空间
- truncate是先摧毁表结构,再重构表结构,truncate操作可释放空间