doc: docs/oracle.md (#617)

This commit is contained in:
jaywcjlove 2024-04-18 18:33:19 +08:00
parent 4e21fd05d1
commit 5c34078de5

View File

@ -8,14 +8,21 @@ Oracle 备忘清单
### SELECT 语句 ### SELECT 语句
```sql ```sql
SELECT * FROM beverages WHERE field1 = 'Kona' AND field2 = 'coffee' AND field3 = 122; SELECT *
FROM beverages
WHERE field1 = 'Kona'
AND field2 = 'coffee'
AND field3 = 122;
``` ```
<!--rehype:className=wrap-text--> <!--rehype:className=wrap-text-->
### SELECT INTO 语句 ### SELECT INTO 语句
```sql ```sql
SELECT name,address,phone_number INTO v_employee_name,v_employee_address,v_employee_phone_number FROM employee WHERE employee_id = 6; SELECT name, address, phone_number
INTO v_employee_name, v_employee_address, v_employee_phone_number
FROM employee
WHERE employee_id = 6;
``` ```
<!--rehype:className=wrap-text--> <!--rehype:className=wrap-text-->
@ -25,24 +32,35 @@ SELECT name,address,phone_number INTO v_employee_name,v_employee_address,v_emplo
使用 VALUES 关键字插入 使用 VALUES 关键字插入
```sql ```sql
INSERT INTO table_name VALUES ('Value1', 'Value2', ... ); INSERT INTO table_name
INSERT INTO table_name(Column1, Column2, ... ) VALUES ( 'Value1', 'Value2', ... ); VALUES ('Value1', 'Value2', ... );
INSERT INTO table_name (Column1, Column2, ... )
VALUES ( 'Value1', 'Value2', ... );
``` ```
<!--rehype:className=wrap-text--> <!--rehype:className=wrap-text-->
使用 SELECT 语句插入 使用 SELECT 语句插入
```sql ```sql
INSERT INTO table_name(SELECT Value1, Value2, ... from table_name ); INSERT INTO table_name
INSERT INTO table_name(Column1, Column2, ... ) ( SELECT Value1, Value2, ... from table_name ); SELECT Value1, Value2, ...
FROM table_name;
INSERT INTO table_name (Column1, Column2, ...)
SELECT Value1, Value2, ...
FROM table_name;
``` ```
<!--rehype:className=wrap-text--> <!--rehype:className=wrap-text-->
### DELETE 语句 ### DELETE 语句
```sql ```sql
DELETE FROM table_name WHERE some_column=some_value DELETE FROM table_name
DELETE FROM customer WHERE sold = 0; WHERE some_column = some_value;
DELETE FROM customer
WHERE sold = 0;
``` ```
### UPDATE 语句 ### UPDATE 语句
@ -384,7 +402,8 @@ CREATE TABLE table_name
column1 datatype null/not null, column1 datatype null/not null,
column2 datatype null/not null, column2 datatype null/not null,
... ...
CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE] CONSTRAINT constraint_name
CHECK (column_name condition) [DISABLE]
); );
``` ```
@ -410,7 +429,8 @@ CREATE TABLE table_name
column1 datatype null/not null, column1 datatype null/not null,
column2 datatype null/not null, column2 datatype null/not null,
... ...
CONSTRAINT constraint_name UNIQUE (column1, column2, column_n) CONSTRAINT constraint_name
UNIQUE (column1, column2, column_n)
); );
``` ```
@ -421,7 +441,8 @@ CREATE TABLE customer
( (
id integer not null, id integer not null,
name varchar2(20), name varchar2(20),
CONSTRAINT customer_id_constraint UNIQUE (id) CONSTRAINT customer_id_constraint
UNIQUE (id)
); );
``` ```
@ -431,14 +452,18 @@ CREATE TABLE customer
```sql ```sql
ALTER TABLE [table name] ALTER TABLE [table name]
ADD CONSTRAINT [constraint name] UNIQUE( [column name] ) USING INDEX [index name]; ADD CONSTRAINT [constraint name]
UNIQUE([column name])
USING INDEX [index name];
``` ```
例如: 例如:
```sql ```sql
ALTER TABLE employee ALTER TABLE employee
ADD CONSTRAINT uniqueEmployeeId UNIQUE(employeeId) USING INDEX ourcompanyIndx_tbs; ADD CONSTRAINT uniqueEmployeeId
UNIQUE(employeeId)
USING INDEX ourcompanyIndx_tbs;
``` ```
### 添加外部约束 ### 添加外部约束
@ -447,14 +472,19 @@ foregin 约束的语法是:
```sql ```sql
ALTER TABLE [table name] ALTER TABLE [table name]
ADD CONSTRAINT [constraint name] FOREIGN KEY (column,...) REFERENCES table [(column,...)] [ON DELETE {CASCADE | SET NULL}] ADD CONSTRAINT [constraint name]
FOREIGN KEY (column,...)
REFERENCES table [(column,...)]
[ON DELETE {CASCADE | SET NULL}];
``` ```
例如: 例如:
```sql ```sql
ALTER TABLE employee ALTER TABLE employee
ADD CONSTRAINT fk_departament FOREIGN KEY (departmentId) REFERENCES departments(Id); ADD CONSTRAINT fk_departament
FOREIGN KEY (departmentId)
REFERENCES departments(Id);
``` ```
### 删除约束 ### 删除约束
@ -482,13 +512,17 @@ INDEXES
```sql ```sql
CREATE [UNIQUE] INDEX index_name CREATE [UNIQUE] INDEX index_name
ON table_name (column1, column2, . column_n) ON table_name (
column1,
column2,
.
column_n
)
[ COMPUTE STATISTICS ]; [ COMPUTE STATISTICS ];
``` ```
`UNIQUE` 表示索引列中值的组合必须是唯一的 - `UNIQUE` 表示索引列中值的组合必须是唯一的
- `COMPUTE STATISTICS` 告诉 Oracle 在创建索引期间收集统计信息。然后优化器使用这些统计信息来选择执行语句时的最佳执行计划。例如:
`COMPUTE STATISTICS` 告诉 Oracle 在创建索引期间收集统计信息。 然后优化器使用这些统计信息来选择执行语句时的最佳执行计划。例如:
```sql ```sql
CREATE INDEX customer_idx CREATE INDEX customer_idx
@ -604,7 +638,8 @@ DBA 相关
创建用户的语法是: 创建用户的语法是:
```sql ```sql
CREATE USER username IDENTIFIED BY password; CREATE USER username
IDENTIFIED BY password;
``` ```
例如: 例如:
@ -642,53 +677,87 @@ ALTER USER brian IDENTIFIED BY brianpassword;
``` ```
### 查看表空间的名称以及大小 ### 查看表空间的名称以及大小
<!--rehype:wrap-class=col-span-2-->
```sql ```sql
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name; SELECT t.table_name,
ROUND(SUM(bytes / (1024 * 1024)), 0) AS ts_size
FROM dba_tablespaces t,
dba_data_files d
WHERE t.table_name = d.table_name
GROUP BY t.table_name;
``` ```
### 查看还没提交的事务 ### 查看还没提交的事务
```sql ```sql
select * from v$locked_object; select * from v$locked_object;
select * from v$transaction; select * from v$transaction;
``` ```
### 查看数据库库对象 ### 查看数据库库对象
<!--rehype:wrap-class=col-span-2-->
```sql ```sql
select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, OJIB status; SELECT owner, object_type, status, COUNT(*) AS count#
FROM all_objects
GROUP BY owner, object_type, status;
``` ```
### 查看数据库的版本 ### 查看数据库的版本
```sql ```sql
Select version FROM Product_component_version where SUBSTR(PRODUCT,1,6) = 'Oracle'; SELECT version
FROM Product_component_version
WHERE SUBSTR(PRODUCT, 1, 6) = 'Oracle';
``` ```
### 查看数据库的创建日期和归档方式 ### 查看数据库的创建日期和归档方式
```sql ```sql
select created, Log_Mode, Log_Mode From v$Database; SELECT created, Log_Mode, Log_Mode
FROM v$Database;
``` ```
### 查看控制文件 ### 查看控制文件
```sql ```sql
select name from v$controlfile; select name from v$controlfile;
``` ```
### 查看日志文件 ### 查看日志文件
```sql ```sql
select member from v$logfile; select member from v$logfile;
``` ```
### 查看表空间的使用情況 ### 查看表空间的使用情況
<!--rehype:wrap-class=col-span-2-->
```sql ```sql
select sum (bytes)/(1024*1024) as free_space, tablespace_name from dba_free_space group by tablespace_name; SELECT SUM(bytes)/(1024*1024) AS free_space,
tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
``` ```
### 捕捉运行很久的SOL ### 捕捉运行很久的SOL
```sql
column username format a12
column opname format a16
column progress format a8
select username,sid,opname,round(sofar* 100 / totalwork,0) || '%' as progress,time_remaining,sqL_text from v$session_longops,v$sql where time_remaining <> 0 and sql_address = address and sql_hash_value = hash_value ```sql
COLUMN username FORMAT A12
COLUMN opname FORMAT A16
COLUMN progress FORMAT A8
SELECT username,
sid,
opname,
ROUND(sofar * 100 / totalwork, 0) || '%' AS progress,
time_remaining,
sql_text
FROM v$session_longops, v$sql
WHERE time_remaining <> 0
AND sql_address = address
AND sql_hash_value = hash_value;
``` ```
另见 另见