未验证 提交 65e00203 编写于 作者: Z zhijiuxing-alt 提交者: GitHub

Remove oracle-related documents (#349)

上级 05a528a6
表操作
========================
本节主要提供数据库表的创建、修改和删除示例。
创建表
------------------------
使用 `CREATE TABLE` 语句在数据库中创建新表。
示例如下:
```sql
obclient> CREATE TABLE test (c1 int primary key, c2 VARCHAR(3)) REPLICA_NUM = 3, PRIMARY_ZONE = 'zone1';
```
更多 `CREATE TABLE` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [CREATE TABLE](../../11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/14.create-table-1.md)章节。
修改表
------------------------
使用 `ALTER TABLE` 语句来修改已存在的表的结构,包括修改表及表属性、新增列、修改列及属性、删除列等。
示例如下:
* 修改表 `test` 的字段 `c2` 的字段类型。
```sql
obclient> DESCRIBE test;
+-------+-------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+-------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | VARCHAR2(3) | YES | NULL | NULL | NULL |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
obclient> ALTER TABLE test MODIFY c2 CHAR(10);
Query OK, 0 rows affected (0.05 sec)
obclient> DESCRIBE test;
+-------+------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | CHAR(10) | YES | NULL | NULL | NULL |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
```
* 增加、删除列
1. 增加列前,执行 `DESCRIBE test;` 命令查看表信息。
```sql
obclient> DESCRIBE test;
+-------+--------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | VARCHAR2(3) | YES | NULL | NULL | NULL |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
```
2. 执行以下命令,增加 `c3` 列。
```sql
obclient> ALTER TABLE test ADD c3 int;
Query OK, 0 rows affected (0.05 sec)
```
3. 增加列后,执行 `DESCRIBE test;` 命令查看表信息。
```sql
obclient> DESCRIBE test;
+-------+--------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | VARCHAR2(3) | YES | NULL | NULL | NULL |
| C3 | NUMBER(38) | YES | NULL | NULL | NULL |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
```
4. 执行以下命令,删除 `c3` 列。
```sql
obclient> ALTER TABLE test DROP COLUMN c3;
Query OK, 0 rows affected (0.05 sec)
```
5. 删除列后,执行 `DESCRIBE test;` 命令查看表信息。
```sql
obclient> DESCRIBE test;
+-------+--------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | VARCHAR2(3) | YES | NULL | NULL | NULL |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
```
* 设置表 `test` 的副本数,并且增加列 `c5`
```sql
obclient> ALTER TABLE test SET REPLICA_NUM=2, ADD c5 INT;
Query OK, 0 rows affected (0.02 sec)
obclient> DESCRIBE test;
+-------+--------------+------+-----+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+-----+---------+-------+
| C1 | NUMBER(38) | NO | PRI | NULL | NULL |
| C2 | VARCHAR2(3) | YES | NULL | NULL | NULL |
| C5 | NUMBER(38) | YES | NULL | NULL | NULL |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
```
更多 `ALTER TABLE` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [ALTER TABLE](../../11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/5.alter-table-1.md)章节。
删除表
------------------------
使用 `DROP TABLE` 语句删除表。
示例如下:
```sql
obclient> DROP TABLE test;
Query OK, 0 rows affected (0.04 sec)
```
更多 `DROP TABLE` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [DROP TABLE](../../11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/24.drop-table-1.md)章节。
索引操作
=========================
索引是创建在表上并对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。
创建索引
-------------------------
使用 `CREATE INDEX` 语句创建表的索引。
示例:
1. 执行以下命令,创建表 test。
```sql
obclient> CREATE TABLE test (c1 int primary key, c2 VARCHAR(10));
```
2. 执行以下命令,创建表 `test` 的索引。
```sql
obclient> CREATE INDEX test_index ON test (c1, c2);
```
更多 `CREATE INDEX` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [CREATE INDEX](../../11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/8.create-index-1.md)章节。
查看索引
-------------------------
* 查看表的所有索引
```sql
obclient> SELECT * FROM all_indexes WHERE table_name='TEST';
```
<!-- -->
* 查看表索引的详细信息
```sql
obclient> SELECT * FROM user_ind_columns WHERE table_name='TEST';
```
删除索引
-------------------------
使用 `DROP INDEX` 语句删除表的索引。
示例:
删除索引 `test_index`
```sql
obclient> DROP INDEX test_index;
```
更多 `DROP INDEX` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [DROP INDEX](../../11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/19.drop-index-1.md)章节。
插入数据
=========================
使用 `INSERT` 语句添加一个或多个记录到表中。
示例如下:
假设有如下数据的表 `t1`
```sql
obclient> CREATE TABLE t1(c1 int primary key, c2 int);
Query OK, 0 rows affected (0.16 sec)
obclient> SELECT * FROM t1;
Empty set (0.02 sec)
```
* 单表插入:向表 `t1` 中插入一行数据
```sql
obclient> INSERT INTO t1 VALUES(1,1);
Query OK, 1 row affected (0.01 sec)
obclient> SELECT * FROM t1;
+----+------+
| c1 | c2 |
+----+------+
| 1 | 1 |
+----+------+
1 row in set (0.04 sec)
```
* 单表插入:直接向子查询中插入数据
```sql
obclient> INSERT INTO (SELECT * FROM t1) VALUES(1,1);
Query OK, 1 row affected (0.01 sec)
obclient> SELECT * FROM t1;
+----+------+
| C1 | C2 |
+----+------+
| 1 | 1 |
+----+------+
1 row in set (0.01 sec)
```
* 单表插入:包含 `RETURNING` 子句
```sql
obclient> INSERT INTO t1 VALUES(1,1) RETURNING c1;
+----+
| C1 |
+----+
| 1 |
+----+
1 row in set (0.02 sec)
obclient> SELECT * FROM t1;
+----+------+
| C1 | C2 |
+----+------+
| 1 | 1 |
+----+------+
1 row in set (0.01 sec)
```
更多 `INSERT` 语句相关的语法请参见《SQL 参考(Oracle 模式)》中 [INSERT](../../11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/2.INSERT-1.md)章节。
删除数据
=========================
使用 `DELETE` 语句删除数据。
示例如下:
1. 假设有如下所示数据的表 `t1`
```sql
obclient> CREATE TABLE t1(c1 int primary key, c2 int);
Query OK, 0 rows affected (0.16 sec)
obclient> INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(4,4);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM t1;
+----+------+
| c1 | c2 |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+----+------+
4 rows in set (0.06 sec)
```
2. 删除 `c1=2` 的行。
```sql
obclient> DELETE FROM t1 WHERE c1 = 2;
Query OK, 1 row affected (0.02 sec)
obclient> SELECT * FROM t1;
+----+------+
| c1 | c2 |
+----+------+
| 1 | 1 |
| 3 | 3 |
| 4 | 4 |
+----+------+
3 rows in set (0.01 sec)
```
更多 `DELETE` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [DELETE](../../11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/1.DELETE-1.md)章节。
更新数据
=========================
使用 `UPDATE` 语句修改表中的字段值。
示例如下:
1. 创建示例表 `t1`
```sql
obclient> CREATE TABLE t1(c1 int primary key, c2 int);
Query OK, 0 rows affected (0.16 sec)
obclient> INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(4,4);
Query OK, 4 rows affected (0.01 sec)
obclient> SELECT * FROM t1;
+----+------+
| c1 | c2 |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+----+------+
4 rows in set (0.06 sec)
```
2. 单表更新:将表 `t1``t1.c1=1` 对应的那一行数据的 `c2` 列值修改为 `100`
```sql
obclient> UPDATE t1 SET t1.c2 = 100 WHERE t1.c1 = 1;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
obclient> SELECT * FROM t1;
+----+------+
| c1 | c2 |
+----+------+
| 1 | 100 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+----+------+
4 rows in set (0.01 sec)
```
3. 单表更新:直接操作子查询,将子查询中 `v.c1=1` 对应的那一行数据的 `c2` 列值修改为 `100`
```sql
obclient> update (SELECT * FROM t1)v SET v.c2 = 100 WHERE v.c1 = 1;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
obclient> SELECT * FROM t1;
+----+------+
| C1 | C2 |
+----+------+
| 1 | 100 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+----+------+
4 rows in set (0.01 sec)
```
更多 `UPDATE` 语句相关的语法请参见《SQL 参考(Oracle 模式)》中 [UPDATE](../../11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/8.UPDATE-1.md)章节。
查询数据
=========================
使用 `SELECT` 语句查询表中的内容。
示例如下:
假设有如下所示数据的表 `a`
```sql
obclient> CREATE TABLE a (id int, name varchar(50), num int);
Query OK, 0 rows affected (0.07 sec)
obclient> INSERT INTO a VALUES(1,'a',100),(2,'b',200),(3,'a',50);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM a;
+------+------+------+
| ID | NAME | NUM |
+------+------+------+
| 1 | a | 100 |
| 2 | b | 200 |
| 3 | a | 50 |
+------+------+------+
3 rows in set (0.00 sec)
```
1. 从表 `a` 中读取 `name` 数据。
```sql
obclient> SELECT name FROM a;
+------+
| NAME |
+------+
| a |
| b |
| a |
+------+
3 rows in set (0.00 sec)
```
2. 在查询结果中对 `name` 进行去重处理。
```sql
obclient> SELECT DISTINCT name FROM a;
+------+
| NAME |
+------+
| a |
| b |
+------+
2 rows in set (0.00 sec)
```
3. 从表 `a` 中根据筛选条件 `name = 'a'`,输出对应的 `id``name``num`
```sql
obclient> SELECT id, name, num FROM a WHERE name = 'a';
+------+------+------+
| ID | NAME | NUM |
+------+------+------+
| 1 | a | 100 |
| 3 | a | 50 |
+------+------+------+
2 rows in set (0.01 sec)
```
更多 `SELECT` 语句相关的语法说明请参见《SQL 参考(Oracle 模式)》中 [SELECT](../../11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/7.SELECT-1.md)章节。
提交事务
=========================
使用 `COMMIT` 语句可以提交事务。
在提交事务(`COMMIT`)之前:
* 您的修改只对当前会话可见,对其他数据库会话均不可见。
* 您的修改没有持久化,您可以通过 `ROLLBACK` 语句撤销修改。
在提交事务(`COMMIT`)之后:
* 您的修改对所有数据库会话可见。
* 您的修改持久化成功,不能通过 `ROLLBACK` 语句回滚修改。
示例如下:
```sql
obclient> INSERT INTO t_insert(id,name) VALUES(4,'JP');
Query OK, 1 row affected (0.01 sec)
obclient> COMMIT;
Query OK, 0 rows affected (0.00 sec)
obclient> EXIT;
Bye
[user@host ~]$obclient -h192.168.1.101 -utpcc@obbmsql#obdemo -P2883 -p123456 TPCC
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient> SELECT * FROM t_insert;
+----+------+-------+---------------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+---------------------+
| 1 | CN | 10001 | 2020-04-02 17:52:31 |
| 2 | US | 10002 | 2020-04-02 17:52:38 |
| 3 | EN | 10003 | 2020-04-02 17:52:38 |
| 4 | JP | NULL | 2020-04-02 17:53:34 |
+----+------+-------+---------------------+
4 rows in set (0.00 sec)
```
更多事务控制语句相关的说明请参见 [关于事务控制语句](../../8.developer-guide-oracle-mode/3.about-dml-statements-and-transactions-1/2.about-transactional-control-statements-1.md)
回滚事务
=========================
使用 ROLLBACK 语句可以回滚事务。
回滚一个事务指将事务的修改全部撤销。可以回滚当前整个未提交的事务,也可以回滚到事务中任意一个保存点。如果要回滚到某个保存点,必须结合使用 `ROLLBACK ``TO SAVEPOINT` 语句。
其中:
* 如果回滚整个事务,则:
* 事务会结束
* 所有的修改会被丢弃
* 清除所有保存点
* 释放事务持有的所有锁
* 如果回滚到某个保存点,则:
* 事务不会结束
* 保存点之前的修改被保留,保存点之后的修改被丢弃
* 清除保存点之后的保存点(不包括保存点自身)
* 释放保存点之后事务持有的所有锁
示例如下:
回滚事务的全部修改。
```sql
obclient> SELECT * FROM t_insert;
+----+------+-------+---------------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+---------------------+
| 1 | CN | 10001 | 2020-04-02 17:52:31 |
| 2 | US | 10002 | 2020-04-02 17:52:38 |
| 3 | EN | 10003 | 2020-04-02 17:52:38 |
+----+------+-------+---------------------+
3 rows in set (0.00 sec)
obclient> INSERT INTO t_insert(id, name, value) VALUES(4,'JP',10004);
Query OK, 1 row affected (0.00 sec)
obclient> INSERT INTO t_insert(id, name, value) VALUES(5,'FR',10005),(6,'RU',10006);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM t_insert;
+----+------+-------+---------------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+---------------------+
| 1 | CN | 10001 | 2020-04-02 17:52:31 |
| 2 | US | 10002 | 2020-04-02 17:52:38 |
| 3 | EN | 10003 | 2020-04-02 17:52:38 |
| 4 | JP | 10004 | 2020-04-02 17:53:34 |
| 5 | FR | 10005 | 2020-04-02 17:54:53 |
| 6 | RU | 10006 | 2020-04-02 17:54:53 |
+----+------+-------+---------------------+
6 rows in set (0.00 sec)
obclient> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
obclient> SELECT * FROM t_insert;
+----+------+-------+---------------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+---------------------+
| 1 | CN | 10001 | 2020-04-02 17:52:31 |
| 2 | US | 10002 | 2020-04-02 17:52:38 |
| 3 | EN | 10003 | 2020-04-02 17:52:38 |
+----+------+-------+---------------------+
3 rows in set (0.00 sec)
```
更多事务控制语句相关的说明请参见 [关于事务控制语句](../../8.developer-guide-oracle-mode/3.about-dml-statements-and-transactions-1/2.about-transactional-control-statements-1.md)
...@@ -122,15 +122,6 @@ nav: ...@@ -122,15 +122,6 @@ nav:
- 查询数据: docs-cn/2.quickstart/6.basic-operations/7.query-data.md - 查询数据: docs-cn/2.quickstart/6.basic-operations/7.query-data.md
- 提交事务: docs-cn/2.quickstart/6.basic-operations/8.submit-transaction.md - 提交事务: docs-cn/2.quickstart/6.basic-operations/8.submit-transaction.md
- 回滚事务: docs-cn/2.quickstart/6.basic-operations/9.roll-back-transactions.md - 回滚事务: docs-cn/2.quickstart/6.basic-operations/9.roll-back-transactions.md
- 基本操作oracle模式:
- 表操作: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/1.table-operations-1.md
- 索引操作: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/2.index-operations-1.md
- 插入数据: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/3.insert-data-1.md
- 删除数据: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/4.delete-data-1.md
- 更新数据: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/5.update-data-1.md
- 查询数据: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/6.query-data-1.md
- 提交事务: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/7.submit-transaction-1.md
- 回滚事务: docs-cn/2.quickstart/7.basic-operation-oracle-mode-1/8.roll-back-transactions-1.md
- 性能白皮书: - 性能白皮书:
- OceanBase 数据库 TPC-H 测试: docs-cn/3.performance-white-paper/1.tpch-test-for-oceanbase.md - OceanBase 数据库 TPC-H 测试: docs-cn/3.performance-white-paper/1.tpch-test-for-oceanbase.md
- OceanBase TPC-H 性能测试报告: docs-cn/3.performance-white-paper/2.wtu4kv.md - OceanBase TPC-H 性能测试报告: docs-cn/3.performance-white-paper/2.wtu4kv.md
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册