Oracle根本
一、ORACLE 简介
1、oracle概述
ORACLE 数据库系统以分布式数据库为核心的一组软件产品
- 支持多用户、大事务量的事务处理
- 数据安全性和完备性控制
- 支持分布式数据处理
- 可移植性强,跨平台
2、oracle体系架构
1)数据库
Oracle 数据库是数据的物理存储。
Oracle 数据库的概念和其它数据库不一样,Oracle 就只有一个大数据库。
2)实例
一个数据库可以有多个实例,开多个Oracle进程。
3)数据文件dbf
数据文件是数据库的物理存储单元。
一个数据文件只能属于一个表空间。
4)表空间
对物理数据库上相关数据文件的逻辑映射。
5)用户
用户是在表空间下建立的。用户登岸后只能看到和操作自己的表。
Oracle的用户与 mysql 的数据库类似,每建立一个应用需要创建一个用户。
3、命令行界面
4、利用Navicat远程连接
1、在虚拟机打开Net Manager软件
2、选择当地-监听步伐-LISTENER,添加地址,ip为本机ip,端口号为1521
3、重启服务OracleOraDB19Home1TNSListener
4、在Navicat中选择Oracle数据库连接
5、成功连接
二、操作用户和表空间
1、创建表空间
- create tablespace waterboss;
- datafile 'c:\dbf\waterboss.dbf';
- size 100m;
- autoextend on;
- next 10m;
复制代码
- waterboss 为表空间名称
- datafile 用于设置物理文件名称
- size 用于设置表空间的初始大小
- autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
- next 用于设置扩容的空间大小
2、创建用户
oracle_12版本的特性,在CDB容器中用户名必须加c##前缀才气创建成功。
- create user c##wateruser
- identified by rexhao
- default tablespace waterboss
复制代码
- wateruser 为创建的用户名
- identified by 用于设置用户的密码
- default tablesapce 用于指定默认表空间名称
3、用户赋权
- grant dba to c##wateruser
复制代码 给用户 c##wateruser 赋予 DBA 权限后即可登岸
4、删除用户
5、创建表
- CREATE TABLE 表名称(
- 字段名 类型(长度) primary key,
- 字段名 类型(长度),
- );
复制代码- create table t_owners
- (
- id number primary key, -- 主键
- name varchar2(30), -- 业主名称
- addressid number, -- 地址 ID
- housenumber varchar2(30), -- 门牌号
- watermeter varchar2(30), -- 水表编号
- adddate date, -- 登记日期
- ownertypeid number -- 业主类型 ID
- );
复制代码 Oracle 数据类型
1、字符型
- CHAR:固定长度的字符类型(空格补全),最多存储 2000 个字节
- VARCHAR2:可变长度的字符类型,最多存储 4000 个字节
- LONG:大文本类型,最大可以存储 2 个 G
2、数值型
NUMBER:数值类型
- NUMBER(5) 最大可以存的数为 99999
- NUMBER(5,2) 最大可以存的数为 999.99
3、日期型
- DATE:日期时间型,精确到秒
- TIMESTAMP:精确到秒的小数点后 9 位
4、二进制型(大数据类型)
- CLOB:存储字符,最大可以存 4 个 G
- BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G
6、修改表
1)增加字段
- -- 追加字段
- ALTER TABLE T_OWNERS ADD
- (
- REMARK VARCHAR2(20),
- OUTDATE DATE
- )
复制代码 2)修改字段
- -- 修改字段
- ALTER TABLE T_OWNERS MODIFY
- (
- REMARK CHAR(20),
- OUTDATE TIMESTAMP
- )
复制代码 3)修改字段名
- ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
复制代码- -- 修改字段名
- ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE
复制代码 4)删除字段名
- -- 删除一个字段
- ALTER TABLE 表名称 DROP COLUMN 列名
- -- 删除多个字段
- ALTER TABLE 表名称 DROP (列名1,列名2...)
复制代码 7、删除表
三、数据的CRUD
1、添加数据
- INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值1,值2,...)
复制代码 执行 INSERT 后一定要再执行 commit 提交事务
Navicat软件会自动提交事务
2、修改数据
- UPDATE 表名 SET 列名1=值1,列名2=值2,....WHERE 修改条件
复制代码 执行 UPDATE 后一定要再执行 commit 提交事务
3、删除数据
- DELETE FROM 表名 WHERE 删除条件
- TRUNCATE TABLE 表名称
复制代码 执行 DELETE 后一定要再执行 commit 提交事务
比较 truncat 与 delete 实现数据删除?
- delete 删除的数据可以 rollback
- delete 删除大概产生碎片,并且不释放空间
- truncate 是先摧毁表结构,再重构表结构
4、查询数据
四、JDBC 连接 ORACLE
1、引入驱动包
JDBC 驱动:oracle.jdbc.OracleDriver
连接字符串(瘦连接):jdbc racle:thin 虚拟机的 IP:1521 rcl
2、BaseDao类
- package work.rexhao.dao;
- import java.sql.SQLException;
- public class BaseDao {
- static {
- try {
- Class.forName("oracle.jdbc.driver.OracleDriver");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static java.sql.Connection getConnection() throws SQLException {
- return java.sql.DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.61:1521:orcl", "c##wateruser", "rexhao");
- }
- public static void closeAll(java.sql.ResultSet rs, java.sql.Statement stmt, java.sql.Connection conn) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (stmt != null) {
- try {
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
复制代码 3、添加方法
- public class OwnersDao {
- public static void add(Owners owners) {
- java.sql.Connection conn = null;
- java.sql.PreparedStatement stmt = null;
- try {
- conn = BaseDao.getConnection();
- stmt = conn.prepareStatement("insert into T_OWNERS values( ?, ?,?,?,?,?,?)");
- stmt.setLong(1, owners.getId());
- stmt.setString(2, owners.getName());
- stmt.setLong(3, owners.getAddressid());
- stmt.setString(4, owners.getHousenumber());
- stmt.setString(5, owners.getWatermeter());
- stmt.setDate(6, new java.sql.Date(owners.getAdddate().getTime()));
- stmt.setLong(7, owners.getOwnertypeid());
- stmt.execute();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- BaseDao.closeAll(null, stmt, conn);
- }
- }
- }
复制代码 五、数据导出与导入
1、整库导出与导入
整库导出命令
- exp system/123.COM full=y
- exp system/123.COM file=文件名 full=y
复制代码 添加参数 full=y 就是整库导出
执行命令后会在当前目录下天生一个叫 EXPDAT.DMP,此文件为备份文件
指定备份文件的名称,则添加 file 参数
整库导入命令
- imp system/123.COM full=y
- imp system/123.COM full=y file=water.dmp
复制代码 此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 举行导入
如果指定 file 参数,则按照 file 指定的备份文件举行恢复
2、按用户导出与导入
- ### 按用户导出
- exp system/123.COM owner=wateruser file=wateruser.dmp
- ### 按用户导入
- imp system/123.COM file=wateruser.dmp fromuser=wateruser
复制代码 3、按表导出与导入
- ### 按表导出
- exp wateruser/itcast file=a.dmp tables=t_account,a_area
- ### 按表导入
- imp wateruser/itcast file=a.dmp tables=t_account,a_area
复制代码 用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |