This commit is contained in:
2021-11-14 15:52:46 +08:00
parent 915c231124
commit 1e344dc204
112 changed files with 1039 additions and 1039 deletions

View File

@@ -6,7 +6,7 @@ tags: ["oracle"]
categories: ["database"]
---
# 字符型
## 字符型
类型 | 大小 | 描述
---- | ---- | ----
varchar2 | 0~4000 | 可变长度字符串
@@ -15,26 +15,26 @@ char | 0~2000 | 定长字符型数据
nchar | 0~1000 | Unicode字符集定长字符型数据
long | 0~2GB | 变长字符串
# 数字型
## 数字型
类型 | 进制 | 描述
---- | ---- | ----
number(p,s) | 十进制 | p最大精度38位s小数位数
float | 二进制 | 126位整数
# 日期
## 日期
类型 | 大小 | 描述
---- | ---- | ----
date | 公元前4712-1-1~9999-12-31 | 存储日期和时间
timestamp | 公元前4712-1-1~9999-12-31 | 精确到小数秒,显示上下午
# 其他数据类型
## 其他数据类型
类型 | 大小 | 描述
---- | ---- | ----
blob | 4GB | 二进制
clob | 4GB | 字符串
bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
# 创建表
## 创建表
```sql
CREATE TABLE table_name
(
@@ -49,7 +49,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
DROP TABLE table_name;
```
# 删除表
## 删除表
```bash
DROP TABLE table_name;
# 执行最快删除数据、结构、索引、约束、触发器和索引存储过程和索引invalid状态直接生效不可回滚不释放空间
@@ -59,7 +59,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
# 执行最慢只删除数据commit 后生效,可回滚,不释放空间
```
# 操作表列
## 操作表列
```sql
ALTER TABLE table_name
ADD column_name datatype [NULL|NOT NULL]
@@ -68,93 +68,93 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
-- 删除列时通常追加 CASCADE CONSTRAINTS ,以删除于该列有关的约束
```
# 操作主键
## 操作主键
```sql
ALTER TABLE table_name
ADD CONSTRAINTS constraint_name PRIMARY KEY(column_name)
|DROP CONSTRAINTS constraint_name;
```
# 操作外键
## 操作外键
```sql
ALTER TABLE table_name
ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCE table_name(column_name) ON DELETE CASCADE
|DROP CONSTRAINT constraint_name;
```
# 操作CHECK约束
## 操作CHECK约束
```sql
ALTER TABLE table_name
ADD CONSTRAINT constraint_name CHECK(condition)
|DROP CONSTRAINT constraint_name;
```
# 操作UNIQUE约束
## 操作UNIQUE约束
```sql
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE(column_name)
|DROP CONSTRAINT constraint_name;
```
# 添加数据
## 添加数据
```sql
INSERT INTO table_name(column_name1,column_name2,...)
VALUES(data1,data2,...)
|SELECT column_name1,column_name2...FROM table_name2;
```
# 修改数据
## 修改数据
```sql
UPDATE table_name SET column_name1=data1,column_name2=data2,...[WHERE condition];
```
# 删除数据
## 删除数据
```sql
DELETE FROM table_name [WHERE condition];
TRUNCATE TABLE table_name;
```
# 查询数据
## 查询数据
```sql
SELECT column_name1,column_name2,...FROM table_name [WHERE condition];
```
# MERGE语句
## MERGE语句
```sql
MERGE INTO table_name1 USING table_name2 ON(condition) WHEN MATCHED THEN ... WHEN NOT MATCHED THEN ...;
```
# SELECT 语句
## SELECT 语句
```sql
SELECT [DISTINCT|ALL] select_list FROM table_list [WHERE ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...];
```
# select_list
## select_list
```sql
*|[schema.] {table|view} .*|expr[ [AS ]c_alias]
```
# expr
## expr
```sql
"||" 连接的字符串 | 函数
```
# ORDER BY ...
## ORDER BY ...
```sql
{expr|positon|c_alias} {ASC|DESC} {NULLS FIRST|NULLS LAST}[ {expr|positon|c_alias} {ASC|DESC} {NULLS FIRST|NULLS LAST},...]
```
# 模糊查询关键字like
## 模糊查询关键字like
```sql
'_'替代一个字符,'%'替代多个字符
```
# 从给定值中选取查询
## 从给定值中选取查询
```sql
IN(data1,data2,...)
```
# 连接
## 连接
```sql
-- 连接,只能查询匹配记录
SELECT select_list FROM table_name1 INNER JOIN table_name2 ON condition;
@@ -166,7 +166,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
SELECT select_list FROM table_name1 FULL JOIN table_name2 ON condition;
```
# 内置函数
## 内置函数
```sql
ABS(n) -- n绝对值
MOD(n2,n1) -- n2对n1取余
@@ -220,17 +220,17 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
DECODE(expr,search,result[,search1,result1...]) -- expr结果是search返回result
```
# 查看所有默认表空间
## 查看所有默认表空间
```sql
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
```
# 查看指定用户默认表空间
## 查看指定用户默认表空间
```sql
SELECT DEFAULT_STAPCE,USERNAME FROM DBA_USERS WHERE USERNAME='username';
```
# 创建表空间
## 创建表空间
```sql
CREATE TABLESPACE tablespace_name
DATAFILE filename
@@ -242,54 +242,54 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
[AUTOALLOCATE|UNIFORM. [SIZE integer[K|M]]]];
```
# 重命名表空间
## 重命名表空间
```sql
ALTER TABLESPACE oldname RENAME TO newname;
```
# 修改表空间大小
## 修改表空间大小
```sql
ALTER DATABASE DATAFILE filename RESIZE size;
```
# 增加表空间大小
## 增加表空间大小
```sql
ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size;
```
# 设置表空间读写状态
## 设置表空间读写状态
```sql
ALTER TABLESPACE tablespace_name READ {ONLY|WRITE};
```
# 设置表空间可用状态
## 设置表空间可用状态
```sql
ALTER TABLESPACE tablespace_name {ONLINE|OFFLINE [NORMAL|TEMPORARY|IMMEDIATE]};
```
# 创建大文件表空间
## 创建大文件表空间
```sql
CREATE BIGFILE TABLESPACE tablespace_name DATAFILE filename SIZE size;
```
# 删除表空间
## 删除表空间
```sql
DROP TABLESPACE tablespace_name
[INCLUDING CONTENTS AND DATAFILES] 数据文件删除
[CASCADE CONSTRAINTS]; 完整性删除
```
# 查看表空间大小
## 查看表空间大小
```sql
SELECT TABLESPACE_NAME,FILE_NAME,BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME=tablespace_name;
```
# 查看表空间剩余 空间
## 查看表空间剩余 空间
```sql
SELECT TABLESPACE_NAME,BYTES FROM DBA_FREE_SPACES;
```
# 创建/修改用户
## 创建/修改用户
```sql
CREATE|ALTER
USER user_name
@@ -301,12 +301,12 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
[ACCOUNT LOCK|UNLOCK]; 默认锁定状态
```
# 删除用户
## 删除用户
```sql
DROP USER user_name CASCADE;
```
# 授予系统权限
## 授予系统权限
```sql
GRANT
system_privileges|ALL PRIVILEGES 权限
@@ -314,7 +314,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
[WITH ADMIN OPTION]; 授予其他用户或角色系统权限
```
# 授予对象权限
## 授予对象权限
```sql
GRANT
object_privilege|ALL 权限
@@ -324,13 +324,13 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
[WITH THE GRANT ANY OBJECT]; 授予其他用户或角色对象权限
```
# 撤销系统权限
## 撤销系统权限
```sql
REVOKE system_privilege FROM
user|role;
```
# 撤销对象权限
## 撤销对象权限
```sql
REVOKE
object_privilege |ALL
@@ -339,14 +339,14 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
[CASCADE CONSTRAINTS];
```
# 数据字典
## 数据字典
数据 | 字典
---- | ----
系统权限 | DBA_SYS_PRIVS
对象权限 | DBA_TAB_PRIVS
用户角色 | DBA_ROLE_PRIVS
# 创建角色
## 创建角色
```sql
CREATE|ALTER //创建/修改
ROLE role_name
@@ -363,17 +363,17 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
SET ROLE NONE -- 设置所有角色失效
```
# 删除角色
## 删除角色
```sql
DROP ROLE role_name;
```
# 脱机备份(冷备份)/恢复
## 脱机备份(冷备份)/恢复
```sql
关闭数据库服务后直接复制需要的文件,包括数据文件和控制文件
```
# 联机备份(热备份)
## 联机备份(热备份)
```sql
ARCHIVE LOG LIST 查看本机数据库的日志状态
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE; 设置日志模式为归档
@@ -386,7 +386,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
ALTER TABLESPACE tablespace_name END BACKUP; 结束备份操作
```
# 恢复
## 恢复
```sql
ALTER SYSTEM ARCHIVE LOG CURRENT; 归档当前日志
ALTER SYSTEM SWITCH LOGFILE; 切换日志文件
@@ -397,49 +397,49 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
ALTER DATABASE DATAFILE file_id ONLINE; 设置数据文件联机
```
# EXP工具导出数据
## EXP工具导出数据
```bash
exp db_user/password 登陆数据库的用户名和密码非SYS
```
# EXP工具直接导出表
## EXP工具直接导出表
```bash
exp db_user/password file="filename.dmp" tables="table_name,..."
```
# EXP工具导出表空间
## EXP工具导出表空间
```bash
exp db_user/password file="filename.dmp" tablespaces="tablespaces_name"
```
# EXPDP导出数据
## EXPDP导出数据
```sql
CREATE DIRECTORY directory_name AS 'file_name'; 目录名称 文件名称
GRANT READ,WRITE ON DIRECTORY directory_name TO db_user; 授权用户使用该目录
#expdp db_user/password directory=directory_name dumpfile=file_name tables=table_name;
```
# IMP导入数据
## IMP导入数据
```sql
imp db_user/password
```
# IMP直接导入表
## IMP直接导入表
```sql
imp db_user/password file="filename.dmp" tables="table_name,..."
```
# IMPDP导入数据
## IMPDP导入数据
```sql
impdp db_user_password
```
# IMPDP直接导入表
## IMPDP直接导入表
```bash
impdp db_user/password directory=dir dumpfile=filename.dmp tables=table_name;
```
# RMAN工具配置
## RMAN工具配置
```sql
CONN /AS SYSDBA; 连接恢复目录数据库
CREATE USER rman_user IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name; 创建恢复用户
@@ -449,7 +449,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
CREATE CATALOG; 创建恢复目录
```
# RMAN工具使用
## RMAN工具使用
```sql
#rman target db_user/password@servicename catalog rman_user/password 连接恢复目录数据库
CONNECT TARGET db_user/password@servicename; 连接目标数据库
@@ -457,7 +457,7 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
REGISTER database; 在恢复目录数据库中注册数据库
```
# 手动分配通道
## 手动分配通道
```sql
关闭目标数据库启动到mount状态运行
run
@@ -468,27 +468,27 @@ bfile | 视操作系统 | 存储非结构化数据到数据库外的文件中
}
```
# 自动分配通道
## 自动分配通道
```sql
CONFIGURE DEVICE TYPE {sbt|disk} PARALLELISM n; 指定通道类型和名称
CONFIGURE DEFAULT DEVICE TYPE {sbt|disk}; 指定默认设备类型
BACKUP [level] [backup type] [option];
```
# BACKUP 参数
## BACKUP 参数
```sql
level 备份增量1、2、3、4或者FULL全备份
backup type 对象类型database、datafile、tablespace、controlfilecopy、archivelog all
option channel备份使用的通道 maxsetsize定义备份集的最大值
```
# RESTORE还原
## RESTORE还原
```sql
RESTORE database_object;
database_object: DATABASE(mount),TABLESPACE(open),DATAFILE,CONTROLFILE(mount),ARCHIVELOG,SPFILE(mount)
```
# RECOVER同步恢复
## RECOVER同步恢复
```sql
RECOVER database_object;
database_object: DATABASE(mount),TABLESPACE(open),DATAFILE