【Oracle】Oracle的安装与连接
Oracle根本一、ORACLE 简介
1、oracle概述
ORACLE 数据库系统以分布式数据库为核心的一组软件产品
[*]支持多用户、大事务量的事务处理
[*]数据安全性和完备性控制
[*]支持分布式数据处理
[*]可移植性强,跨平台
2、oracle体系架构
1)数据库
Oracle 数据库是数据的物理存储。
Oracle 数据库的概念和其它数据库不一样,Oracle 就只有一个大数据库。
2)实例
一个数据库可以有多个实例,开多个Oracle进程。
3)数据文件dbf
数据文件是数据库的物理存储单元。
一个数据文件只能属于一个表空间。
4)表空间
对物理数据库上相关数据文件的逻辑映射。
https://i-blog.csdnimg.cn/blog_migrate/2bdf8aafebfec5d25091aa0bb4d88247.png
5)用户
用户是在表空间下建立的。用户登岸后只能看到和操作自己的表。
Oracle的用户与 mysql 的数据库类似,每建立一个应用需要创建一个用户。
https://i-blog.csdnimg.cn/blog_migrate/abc35054390c29f55b63ac1f342a7a89.png
3、命令行界面
sqlplus 用户名/密码
https://i-blog.csdnimg.cn/blog_migrate/58e61b58b972e14a12ce9842d936263f.png
4、利用Navicat远程连接
1、在虚拟机打开Net Manager软件
https://i-blog.csdnimg.cn/blog_migrate/3f0bb71b8952850f0bacef5edbc636c9.png
2、选择当地-监听步伐-LISTENER,添加地址,ip为本机ip,端口号为1521
https://i-blog.csdnimg.cn/blog_migrate/5e88e26d8aefcd17d28e8662d4acb6ad.png
3、重启服务OracleOraDB19Home1TNSListener
https://i-blog.csdnimg.cn/blog_migrate/963c40a7061be47fc0f5093cd99ed9b3.png
4、在Navicat中选择Oracle数据库连接
https://i-blog.csdnimg.cn/blog_migrate/d026dc1a71038be31f6159acf23ab0dc.png
5、成功连接
https://i-blog.csdnimg.cn/blog_migrate/56e10605a2f5aa537ff7b050ce8631df.png
二、操作用户和表空间
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, -- 地址 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、删除表
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 实现数据删除?
[*]delete 删除的数据可以 rollback
[*]delete 删除大概产生碎片,并且不释放空间
[*]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=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企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]