【Oracle】Oracle的安装与连接

Oracle基础

一、ORACLE 简介

1、oracle概述

ORACLE 数据库系统以分布式数据库为核心的一组软件产品

  1. 支持多用户、大事务量的事务处理
  2. 数据安全性和完整性控制
  3. 支持分布式数据处理
  4. 可移植性强,跨平台
2、oracle体系架构
1)数据库

Oracle 数据库是数据的物理存储。

Oracle 数据库的概念和其它数据库不一样,Oracle 就只有一个大数据库。

2)实例

一个数据库可以有多个实例,开多个Oracle进程。

3)数据文件dbf

数据文件是数据库的物理存储单位。

一个数据文件只能属于一个表空间。

4)表空间

对物理数据库上相关数据文件的逻辑映射。

5)用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表。

Oracle的用户与 mysql 的数据库类似,每建立一个应用需要创建一个用户。

3、命令行界面
sqlplus 用户名/密码

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、删除用户
drop user 用户名 cascade
5、创建表
CREATE TABLE 表名称(字段名 类型(长度) primary key,字段名 类型(长度),
);
create table t_owners
(id number primary key,		-- 主键name varchar2(30),			-- 业主名称addressid number,			-- 地址 IDhousenumber varchar2(30),	-- 门牌号watermeter varchar2(30),	-- 水表编号adddate date,				-- 登记日期ownertypeid number			-- 业主类型 ID
);

Oracle 数据类型

1、字符型

  1. CHAR:固定长度的字符类型(空格补全),最多存储 2000 个字节
  2. VARCHAR2:可变长度的字符类型,最多存储 4000 个字节
  3. LONG:大文本类型,最大可以存储 2 个 G

2、数值型

NUMBER:数值类型

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

3、日期型

  1. DATE:日期时间型,精确到秒
  2. TIMESTAMP:精确到秒的小数点后 9 位

4、二进制型(大数据类型)

  1. CLOB:存储字符,最大可以存 4 个 G
  2. 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、删除表
DROP TABLE 表名称

三、数据的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 实现数据删除?

  1. delete 删除的数据可以 rollback
  2. delete 删除可能产生碎片,并且不释放空间
  3. truncate 是先摧毁表结构,再重构表结构
4、查询数据
SELECT * FROM 表名

四、JDBC 连接 ORACLE

1、引入驱动包

JDBC 驱动:oracle.jdbc.OracleDriver

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

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=yexp system/123.COM file=文件名 full=y

添加参数 full=y 就是整库导出

执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件

指定备份文件的名称,则添加 file 参数

整库导入命令

imp system/123.COM full=yimp 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 参数指定需要导出的表,如果有多个表用逗号分割即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338574.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux系统编程——Linux目录结构

Linux的文件系统呈现为一种树状结构,以根目录/为最顶层,其下分布着各种不同的子目录,每个目录都有其特定的用途和功能。下面是Linux目录结构的详细介绍: 1. 根目录 / 根目录是整个文件系统的基础。所有的目录和文件都从这里开始…

常用的网站

PIXEL MOTION 注册-YesPMP平台 模型下载 - Ourblender - 专业的三维素材库 Vega AI 创作平台 夏沫的AI小站 Tripo AI B站视频下载工具 | 极简纯净

优化CentOS 7.6的HTTP隧道代理网络性能

在CentOS 7.6上,通过HTTP隧道代理优化网络性能是一项复杂且细致的任务。首先,我们要了解HTTP隧道代理的工作原理:通过建立一个安全的隧道,HTTP隧道代理允许用户绕过某些网络限制,提高数据传输的速度和安全性。然而&…

SpringBoot集成Skywalking实现分布式链路追踪

官方网址: Apache SkyWalking官方文档: SkyWalking 极简入门 | Apache SkyWalking下载地址:Downloads | Apache SkyWalking Agent:以探针的方式进行请求链路的数据采集,并向管理服务上报; OAP-Service&am…

观成科技-加密C2框架EvilOSX流量分析

工具简介 EvilOSX是一款开源的,由python编写专门为macOS系统设计的C2工具,该工具可以利用自身释放的木马来实现一系列集成功能,如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信,通信内容为特…

万界星空科技家具制造业MES系统解决方案

家具行业专业化生产和信息化管理程度较低。随着企业规模的迅速扩大,家具行业中用现有的凭手工发放图纸、制作bom、发放工艺说明文件越来越难以适应现代家具行业、已经成为家具行业快速发展的瓶颈。必须通过实施万界星空科技MES生产管理软件,实现部门之间…

旧衣回收小程序,降低企业商家成本,推动行业发展!

随着大众环保意识的增加,人们对于闲置衣服的处理方式也从丢弃转向回收,旧衣服回收行业受到了大家的关注,成为了新的商业发展模式。 在当下科技发展的背景下,旧衣回收从回收箱演变到了线上预约上门回收,旧衣回收小程序…

DevEco Studio for Mac:zsh: command not found: ohpm

一、检查是否配置有ohpm环境 1、新打开一个终端输入export,查看是否有 ohpm路径: 二、如果没有找到ohpm路径,开始配置环境 。 1、查找本机ohpm路径,并记录ohpm解释器的路径: 2、打开终端工具,执行命令 ech…

【精简】Vue 一个@click时间绑定多个点击事件

一、方案 多个方法之间使用逗号分隔&#xff08;经测试其实逗号和分号都可以&#xff09; <el-buttonclick"m1(),m2()">m1(){console.log("11");},m2(){console.log("22")},二、效果 三、猜想 经过debugger测试 好像m1和m2执行是按clic…

多线程任务管理:深入学习CompletionService的应用

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们都知道&#xff0c;在现代软件开发中&#xff0c;特别是对于Java程序员来说&#xff0c;高效地处理并发任务是一个非常关键的技能。就像在繁忙的餐厅里&#xff0c;多个厨师同时烹饪不同的菜肴一样&#xff…

嵌出式学习又一天

关于485通讯 485属于串口通信&#xff0c;属于物理层的&#xff0c;规定为2线&#xff0c;半双工的多点通信标准&#xff0c;它的电气特性不一样&#xff0c;用缆线两端电压差值来表示传递信号&#xff0c;rs485仅仅规定了接收端和发送端的电气特性&#xff0c;没有规定任何数据…

vue前端开发自学demo-input标签数据双向绑定

vue前端开发自学demo-input标签数据双向绑定&#xff01;今天为大家 展示的内容是&#xff0c;前端开发常见的&#xff0c;form表单里面的&#xff0c;一些输入数据的元素&#xff0c;动态绑定数据的案例。比如input,以及checkbox的状态绑定案例。 首先&#xff0c;老规矩&…