ORACLE 数据库系统以分布式数据库为核心的一组软件产品
Oracle 数据库是数据的物理存储。
Oracle 数据库的概念和其它数据库不一样,Oracle 就只有一个大数据库。
一个数据库可以有多个实例,开多个Oracle进程。
数据文件是数据库的物理存储单位。
一个数据文件只能属于一个表空间。
对物理数据库上相关数据文件的逻辑映射。
用户是在表空间下建立的。用户登陆后只能看到和操作自己的表。
Oracle的用户与 mysql 的数据库类似,每建立一个应用需要创建一个用户。
sqlplus 用户名/密码
1、在虚拟机打开Net Manager
软件
2、选择本地-监听程序-LISTENER
,添加地址,ip为本机ip,端口号为1521
3、重启服务OracleOraDB19Home1TNSListener
4、在Navicat中选择Oracle数据库连接
5、成功连接
create tablespace waterboss;
datafile 'c:\dbf\waterboss.dbf';
size 100m;
autoextend on;
next 10m;
waterboss
为表空间名称datafile
用于设置物理文件名称size
用于设置表空间的初始大小autoextend on
用于设置自动增长,如果存储量超过初始大小,则开始自动扩容next
用于设置扩容的空间大小
oracle_12
版本的特性,在CDB容器中用户名必须加c##
前缀才能创建成功。
create user c##wateruser
identified by rexhao
default tablespace waterboss
wateruser
为创建的用户名identified by
用于设置用户的密码default tablesapce
用于指定默认表空间名称grant dba to c##wateruser
给用户 c##wateruser
赋予 DBA 权限后即可登陆
drop user 用户名 cascade
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)
最大可以存的数为 99999NUMBER(5,2)
最大可以存的数为 999.993、日期型
- DATE:日期时间型,精确到秒
- TIMESTAMP:精确到秒的小数点后 9 位
4、二进制型(大数据类型)
- CLOB:存储字符,最大可以存 4 个 G
- BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G
-- 追加字段
ALTER TABLE T_OWNERS ADD
(
REMARK VARCHAR2(20),
OUTDATE DATE
)
-- 修改字段
ALTER TABLE T_OWNERS MODIFY
(
REMARK CHAR(20),
OUTDATE TIMESTAMP
)
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
-- 修改字段名
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE
-- 删除一个字段
ALTER TABLE 表名称 DROP COLUMN 列名
-- 删除多个字段
ALTER TABLE 表名称 DROP (列名1,列名2...)
DROP TABLE 表名称
INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值1,值2,...)
执行 INSERT
后一定要再执行 commit
提交事务
Navicat软件会自动提交事务
UPDATE 表名 SET 列名1=值1,列名2=值2,....WHERE 修改条件
执行 UPDATE
后一定要再执行 commit
提交事务
DELETE FROM 表名 WHERE 删除条件
TRUNCATE TABLE 表名称
执行 DELETE
后一定要再执行 commit
提交事务
比较 truncat 与 delete 实现数据删除?
- delete 删除的数据可以 rollback
- delete 删除可能产生碎片,并且不释放空间
- truncate 是先摧毁表结构,再重构表结构
SELECT * FROM 表名
JDBC 驱动:oracle.jdbc.OracleDriver
连接字符串(瘦连接):jdbc:oracle:thin:@虚拟机的 IP:1521:orcl
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();
}
}
}
}
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);
}
}
}
整库导出命令
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
指定的备份文件进行恢复
### 按用户导出
exp system/123.COM owner=wateruser file=wateruser.dmp
### 按用户导入
imp system/123.COM file=wateruser.dmp fromuser=wateruser
### 按表导出
exp wateruser/itcast file=a.dmp tables=t_account,a_area
### 按表导入
imp wateruser/itcast file=a.dmp tables=t_account,a_area
用 tables
参数指定需要导出的表,如果有多个表用逗号分割即可