您的位置:首页 > 数据库 > Oracle

JavaWeb开发知识总结(一)-(oracle_基础)

2017-06-17 23:18 676 查看

JavaWeb开发知识总结(Oracle-基础)

1. Oracle概述

ORACLE数据库系统是以分布式数据库为核心的数据库产品,是目前最流行的客户/服务器(CLIENT/SERVER)或

B/S体系结构的数据库之一。作为分布式数据库它实现了分布式处理功能。

ORACLE 数据库具有以下特点:

支持多用户,大事务量的事务处理;

数据安全性和完整性控制;

支持分布式数据处理;

可移植性,具有跨平台特性.

2.Oracle数据库体系结构

数据库:

​ Oracle 数据库是数据的物理存储。存储包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实Oracle 数据库是一个操作系统只有一个库,Oracle数据库本身只有一个大的数据库。

实例:

​ 一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。其实Oracle实例就是为解决一台服务器上运行多个数据库的问题,一个实例就相当于是一个mysql数据库,创建多个Oracle数据库实例就相当于是多个mysql数据库。

数据文件(dbf):

​ 数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数 据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

表空间:

​ 表空间是Oracle对物理数据库上相关数据文件(ORA 或者DBF文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表。



用户:

​ 用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE的用户与MYSQL的数据库概念类似,每建立一个应用需要创建一个用户,Oracle创建表属于某个用户,而mysql创建创建的表属于某个数据库。



3. Oracle中SQL语法

3.1 操作表空间

创建表空间:

-- 语法:
create tablespace 表空间名称 datafile '表空间下文件存储文件名' size 表空间初始大小 autoextend on next 存储空间递增大小;
-- 案例:
create tablespace waterboss datafile 'c:\waterboss.dbf' size 100m autoextend on next 10m;
-- waterboss:表空间名称
-- datafile:用于设置物理文件名称,文件扩展名为dbf
-- size:用于设置表空间的初始大小,创建后不管已存储文件大小,该文件都会占用100兆
-- autoextend on:用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
-- next:用于设置扩容的空间大小


删除表空间:

--语法:删除表空间,会删除表空间,但不会删除表空间的文件
drop tablespace somnus; --删除指定名称的表空间


3.2 操作用户及赋权

创建用户及赋权:

-- 语法:创建用户
create user 用户名 identified by 密码 default tablespace 表空间名;
-- 案例:
create user wateruser identified by itcast default tablespace waterboss;
-- wateruser:为创建的用户名
-- identified by:用于设置用户的密码
-- default tablesapce:用于指定默认表空间名称,不指定时,默认是属于temp表空间
-- 语法:用户赋权,用户创建之后必须进行赋权才能进行操作
grant 权限类别 to 用户名;
-- 案例:
grant dba to wateruser; -- 将dba的权限赋给wateruser


删除用户:

-- 语法:删除用户
drop user somnus; -- 删除名称为somnus的用户


3.3 数据类型

字符型:字符型数据必须使用单引号括起来,不能使用双引号

CHAR : 固定长度的字符类型,最多存储2000个字节,设定长度后,取出的数据的长度都是设定的长度。

VARCHAR2 :可变长度的字符类型,最多存储4000个字节。

LONG : 大文本类型。最大可以存储2个G。

数值型

NUMBER : 数值类型,默认长度是18。

例如:NUMBER(5) 最大可以存的数为99999

NUMBER(5,2) 最大可以存的数为999.99

日期型

DATE:日期时间型,精确到秒。有一个系统的时间变量(sysdate),获取当前的系统时间,时间运算时默认是天数,不能使用字符串形式的日期。

TIMESTAMP:精确到秒的小数点后9位。

二进制型(大数据类型)

CLOB : 存储字符,最大可以存4个G。

BLOB:存储图像、声音、视频等二进制数据,最多可以
4000
存4个G。

3.4 操作表

创建表:和mysql语句大致相同,定时时的数据类型不同

--语法:
CREATE TABLE 表名称(
字段名 类型(长度) primary key,
字段名 类型(长度),
.......
);
--案例:
create table t_owners (
id number primary key, -- 主键
name varchar2(30), -- 业主名称
addressid number, -- 地址编号
housenumber varchar2(30), -- 门牌号
watermeter varchar2(30), -- 水表编号
adddate date, -- 添加日期
ownertypeid number -- 业主类型编号,最后一个没有逗号
);


修改表:

--增加字段语法:和mysql语句相同
ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...);
--案例:
ALTER TABLE T_OWNERS ADD (
REMARK VARCHAR2(20), -- 描述
OUTDATE DATE -- 删除日期
);
-- 修改字段语法:和mysql有点区别(alter table 表名 modify 字段名 字段类型(长度)  约束条件)
ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...);
-- 案例:
ALTER TABLE T_OWNERS MODIFY (
REMARK CHAR(20),
OUTDATE TIMESTAMP
);
-- 修改字段名语法:和mysql有点区别(alter table 表名 change 旧字段名 新字段名  字段类型(长度)  约束)
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名;
-- 案例:
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE;
-- 删除字段名语法:和mysql有点区别(alter table 表名 drop 字段名)
ALTER TABLE 表名称 DROP COLUMN 列名; -- 删除一个字段
ALTER TABLE 表名称 DROP (列名 1,列名 2...); -- 删除多个字段
-- 案例:
ALTER TABLE T_OWNERS DROP COLUMN REMARK;


删除表:

-- 语法:
DROP TABLE 表名称;


3.5 数据增删改

插入数据:

-- 语法:使用plsql工具或直接使用Oracle提供的工具时,执行INSERT后一定要再执行commit提交事务
INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...);
-- 案例:语句和mysql相同,mysql默认是自动提交事务,Oracle不会自动提交事务,则执行完Oracle语句后要进行提交事务
insert into T_OWNERS VALUES (1,'somnus',1,'2-2','5678',sysdate,1);


修改数据:

-- 语法:执行UPDATE后一定要再执行commit提交事务,语句和mysql相同
UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件;
-- 案例:
update T_OWNERS set adddate=adddate-3 where id=1; -- 日期可以进行加减,以天数为计算单位
commit; -- 提交事务


删除数据:

-- 语法:和mysql的语句相同
DELETE FROM 表名  WHERE  删除条件; -- 方式1,指定条件时删除指定数据,没有条件时删除所有的数据
TRUNCATE TABLE 表名称; -- 方式2,删除表中的所有数据
--truncat与delete删除数据的区别:
1. delete 删除的数据可以回滚(rollback);
2. delete 删除可能产生碎片,并且不释放空间;
3. truncate 是先摧毁表结构,再重构表结构.


4. JDBC连接Oracle数据库

JDBC连接Oracle数据库和连接mysql数据库的方式相同,只是驱动包不相同,其余的操作均相同。

JDBC连接Oracle数据库的驱动包:
ojdbc14.jar


JDBC 驱动为:
oracle.jdbc.OracleDriver


连接URL( 瘦连接 ):
jdbc:oracle:thin:@虚拟机的IP:1521:orcl


Oracle连接的方式的区别:

# 连接方式:一般使用瘦连接方式
1. 瘦连接(thin):本地需要安装任何的软件即可连接数据库进行连接
2. 胖连接      :在本地需要安装与数据库相关的软件才能对数据库进行操作


注意事项:使用JDBC连接数据库后,操作DML语句时,不需要手动提交事务,Oracle封装的执行DML语句的方法具有自动提交事务的操作。

5. Oracle数据库管理

Oracle数据的管理必须在安装Oracle数据库的服务器上进行操作。远程是无法进行操作的。在服务器端的cmd窗口中进行命令的操作。

数据库的导入与导出:导入时如果表存在则会直接跳过,不会将将数据进行导入,即便表是空的,也不会导入数据;导入时可以选择性的导入数据。

整个数据库的导出:

-- 语法:使用系统管理员system身份进行导入导出,在哪个路径下运行的cmd窗口,导出的文件就在当前的目录下
exp system/密码 full=y -- 不指定导出的文件名,导出的文件名为EXPDAT.DMP
exp system/用户名 file=文件名 full=y -- 指定导出的文件名


整个数据库的导入:

-- 语法:导入的文件一般在当前目录下
imp system/itcast full=y -- 不指定file参数,则默认用当前目录下备份文件EXPDAT.DMP进行导入
imp system/itcast full=y file=water.dmp --指定file参数,则按照file指定的备份文件进行恢复


按用户导出数据:

-- 语法:
exp 用户名/密码 owner=用户名 file=导出的文件名.dmp


按用户导入数据:

-- 语法:导入的文件只要包含要导入用户数据的文件即可,如:可以使用导出的全局数据库文件,只导入该用户的数据
imp 用户名/密码 file=文件名.dmp fromuser=用户名


按表导出数据:

-- 语法:可以导出指定用户下的多个表的数据
exp 用户名/密码 file=文件名.dmp tables=表名1,表名


按表导入数据:

-- 语法:导入指定用户名下的多个表的数据,导入的文件只要包含要导入用户数据的文件即可
imp 用户名/密码 file=文件名.dmp tables=表名1,表名2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 oracle