Oracle
1 ORACLE 简介
ORACLE 通常应用于大型系统的数据库产品。
ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个
完备关系的产品;作为分布式数据库它实现了分布式处理功能。
ORACLE 数据库具有以下特点:
- 支持多用户、大事务量的事务处理
- 数据安全性和完整性控制
- 支持分布式数据处理
- 可移植性
ORACLE 体系结构:
- 数据库
Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。
- 实例
一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。
- 数据文件(dbf)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
- 表空间
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。
- 用户
用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。
2 ORACLE 在虚拟机上的安装与配置
2.1 VMware 挂载 windows server 2003
双击扩展名为 vmx 的文件即可将 windows2003 系统挂载到 VMware 中。
2.2 网络配置
- VMware 中选择菜单“编辑”–“虚拟网络编辑器”
- 弹出的窗口中,点击“添加网络”按钮,名称为 VMnet2 ,确定
- 设置为仅主机方式,并设定子网 IP 为 192.168.80.0
- 查看本地的网卡
- 设定虚拟操作系统的网络网卡
- 右键点击虚拟操作系统,选择“设置”菜单项,弹出以下窗口
点击网络适配器,选择自定义,VMnet2
- 设定虚拟操作系统的 IP 地址
在虚拟机的操作系统中(控制面板–网络连接–本地连接–属性)设定 IP 地址为 192.168.80.10
设置本地的操作系统的虚拟网卡 VMnet 的 IP 为 192.168.80.6 (与虚拟机中的操作系统的 IP 地址处于同一 IP 网段)
- 在本地操作系统打开命令行,用 ping 命令测试网络是否连接成功
2.3 安装 ORACLE 数据库
将“资源”文件夹 ORACLE 安装包解压拷贝到虚拟机的系统中并双击解压目录下的 setup.exe,出现安装界面,如下:
输入口令和确认口令,如:itcast,点击下一步,出现如下进度条,(注:此口令即是管理员密码)
点击“下一步”,出现“概要”界面,点击“安装”。
出现安装进度条,等待安装完成,如下图:
安装完成后,自动运行配置向导,如下图,等待其完成:
完成后,出现“口令管理”界面,如下图(点击确定):
安装结束,点击“退出”。
此时可以命令提示符下进行测试安装结果
输入:sqlplus system/itcast(安装时输入的密码)
2.4 SQLPlus 远程连接 ORACLE 数据库
将“资源”文件夹中的 instantclient_12_1 拷贝到 D 盘根目录。
2.5 PLSQL Developer 安装与配置
- 注意事项:安装目录不能有中文和空格,否则连接不上
- 配置客户端路径
- 在弹出的登陆窗口中,点取消,Tools->>Preferences
- 编辑 ORA 文件
在 ORACLE 的以下安装目录中找到 tnsnames.ora 文件,拷贝到SQLplus下的instantclient_12_1里面
打开 tnsnames.ora 文件编辑,修改下图红色方框处
- 配置环境变量
变量名:ORACLE_HOME 变量值:D:\ProgramFiles\SQLPlus\instantclient_12_1
变量名:TNS_ADMIN 变量值:D:\ProgramFiles\SQLPlus\instantclient_12_1
变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- 进入系统
- 输入用户名 system 密码 itcast 即可进入到软件主界面。
- 中文编码设置
查看服务器端编码 SQL:
select userenv('language') from dual
我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第 1 步查到的值, 我的是
AMERICAN_AMERICA.ZHS16GBK
3 ORACLE 在本地上的安装与配置
- 安装oracle
基于Windows10 安装Oracle 11g
使用oracle一般开启这两个服务即可!
测试oracle连接是否成功!
select sysdate from dual; #返回系统当前时间
-
卸载Oracle
-
开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。
-
运行Universal Installer
-
只勾选Oracle Database 11g 11.2.0.1.0
-
手工删除注册表和环境变量中的信息
1、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
2、选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(以oracle或OraWeb开头的键)。
3、选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。
4、删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。
5、删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中所有以oracle开头的键
6、删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。
7、我的电脑–>属性–>高级–>环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定。
8、删除本地磁盘的相关Oracle文件
9、重启pc
4 自来水公司收费系统
4.1 表结构设计
4.2 创建表空间
create tablespace waterboss
datafile 'c:\waterboss.dbf'
size 100m
autoextend on
next 10m
- waterboss 为表空间名称
- datafile 用于设置物理文件名称
- size 用于设置表空间的初始大小
- autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
- next 用于设置扩容的空间大小
4.3 创建用户
create user wateruser
identified by itcast
default tablespace waterboss
- wateruser 为创建的用户名
- identified by 用于设置用户的密码
- default tablesapce 用于指定默认表空间名称
4.4 用户赋权
grant dba to wateruser
给用户 wateruser 赋予 DBA 权限后即可登陆
5 表的创建、修改与删除
#创建表
CREATE TABLE 表名称(
字段名 类型(长度) primary key,
字段名 类型(长度),
.......
);
#修改表(同mysql)
ALTER TABLE 表名称 add| MODIFY| RENAME| DROP
#删除表
DROP TABLE 表名称
数据类型:
- CHAR : 固定长度的字符类型,最多存储 2000 个字节
- VARCHAR2 : 可变长度的字符类型,最多存储 4000 个字节
- LONG : 大文本类型。最大可以存储 2 个 G
- NUMBER(5) 最大可以存的数为 99999 NUMBER(5,2) 最大可以存的数为 999.99
- DATE:日期时间型,精确到秒
- TIMESTAMP:精确到秒的小数点后 9 位
- CLOB : 存储字符,最大可以存 4 个 G
- BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G
创建业主表:
create table t_owners
(
id number primary key,
name varchar2(30),
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
);
6 数据增删改
6.1 插入数据
INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...)
执行 INSERT 后一定要再执行 commit 提交事务
向业主表插入数据:
insert into T_OWNERS VALUES (1,' 张三丰',1,'2-2',