Skip to content

Commit

Permalink
dev/reference/sql: add sql statements (#1425)
Browse files Browse the repository at this point in the history
* dev/reference/sql: add sql statements

* dev/reference/sql: fix aliases in sql statements

* Apply suggestions from code review

Co-Authored-By: bb7133 <bb7133@gmail.com>

* dev/reference/sql: improve wording

* Apply suggestions from code review

Co-Authored-By: Calvin Weng <wenghao@pingcap.com>

* dev/reference/sql: improve wording based on Calvin's suggestions

* dev/reference/sql: fix wording

* dev/reference/sql: fix alias format

* dev/reference/sql: address comments & fix format

* dev/reference/sql: add SELECT syntax description

* Apply suggestions from code review

Co-Authored-By: Lilian Lee <lilin@pingcap.com>

* dev/reference/sql: fix links

* Update dev/reference/sql/statements/begin.md

Co-Authored-By: Lilian Lee <lilin@pingcap.com>

* Update dev/reference/sql/statements/kill.md

Co-Authored-By: Lilian Lee <lilin@pingcap.com>

* Update TOC
  • Loading branch information
TomShawn authored and lilin90 committed Jun 19, 2019
1 parent 1f85ad5 commit 1c3d389
Show file tree
Hide file tree
Showing 443 changed files with 5,039 additions and 1,087 deletions.
76 changes: 72 additions & 4 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,78 @@
- [其它函数](dev/reference/sql/functions-and-operators/miscellaneous-functions.md)
- [精度数学](dev/reference/sql/functions-and-operators/precision-math.md)
+ SQL 语句
- [数据定义语句 (DDL)](dev/reference/sql/statements/ddl.md)
- [数据操作语句 (DML)](dev/reference/sql/statements/dml.md)
- [Prepared SQL 语句语法](dev/reference/sql/statements/prepare.md)
- [实用工具语句](dev/reference/sql/statements/util.md)
- [`ADD COLUMN`](dev/reference/sql/statements/add-column.md)
- [`ADD INDEX`](dev/reference/sql/statements/add-index.md)
- [`ADMIN`](dev/reference/sql/statements/admin.md)
- [`ALTER TABLE`](dev/reference/sql/statements/alter-table.md)
- [`ALTER USER`](dev/reference/sql/statements/alter-user.md)
- [`ANALYZE TABLE`](dev/reference/sql/statements/analyze-table.md)
- [`BEGIN`](dev/reference/sql/statements/begin.md)
- [`COMMIT`](dev/reference/sql/statements/commit.md)
- [`CREATE DATABASE`](dev/reference/sql/statements/create-database.md)
- [`CREATE INDEX`](dev/reference/sql/statements/create-index.md)
- [`CREATE TABLE LIKE`](dev/reference/sql/statements/create-table-like.md)
- [`CREATE TABLE`](dev/reference/sql/statements/create-table.md)
- [`CREATE USER`](dev/reference/sql/statements/create-user.md)
- [`CREATE VIEW`](dev/reference/sql/statements/create-view.md)
- [`DEALLOCATE`](dev/reference/sql/statements/deallocate.md)
- [`DELETE`](dev/reference/sql/statements/delete.md)
- [`DESC`](dev/reference/sql/statements/desc.md)
- [`DESCRIBE`](dev/reference/sql/statements/describe.md)
- [`DO`](dev/reference/sql/statements/do.md)
- [`DROP COLUMN`](dev/reference/sql/statements/drop-column.md)
- [`DROP DATABASE`](dev/reference/sql/statements/drop-database.md)
- [`DROP INDEX`](dev/reference/sql/statements/drop-index.md)
- [`DROP TABLE`](dev/reference/sql/statements/drop-table.md)
- [`DROP USER`](dev/reference/sql/statements/drop-user.md)
- [`DROP VIEW`](dev/reference/sql/statements/drop-view.md)
- [`EXECUTE`](dev/reference/sql/statements/execute.md)
- [`EXPLAIN ANALYZE`](dev/reference/sql/statements/explain-analyze.md)
- [`EXPLAIN`](dev/reference/sql/statements/explain.md)
- [`FLUSH PRIVILEGES`](dev/reference/sql/statements/flush-privileges.md)
- [`FLUSH STATUS`](dev/reference/sql/statements/flush-status.md)
- [`FLUSH TABLES`](dev/reference/sql/statements/flush-tables.md)
- [`GRANT <privileges>`](dev/reference/sql/statements/grant-privileges.md)
- [`INSERT`](dev/reference/sql/statements/insert.md)
- [`KILL [TIDB]`](dev/reference/sql/statements/kill.md)
- [`LOAD DATA`](dev/reference/sql/statements/load-data.md)
- [`MODIFY COLUMN`](dev/reference/sql/statements/modify-column.md)
- [`PREPARE`](dev/reference/sql/statements/prepare.md)
- [`RENAME INDEX`](dev/reference/sql/statements/rename-index.md)
- [`RENAME TABLE`](dev/reference/sql/statements/rename-table.md)
- [`REPLACE`](dev/reference/sql/statements/replace.md)
- [`REVOKE <privileges>`](dev/reference/sql/statements/revoke-privileges.md)
- [`ROLLBACK`](dev/reference/sql/statements/rollback.md)
- [`SELECT`](dev/reference/sql/statements/select.md)
- [`SET [NAMES|CHARACTER SET]`](dev/reference/sql/statements/set-names.md)
- [`SET PASSWORD`](dev/reference/sql/statements/set-password.md)
- [`SET TRANSACTION`](dev/reference/sql/statements/set-transaction.md)
- [`SET [GLOBAL|SESSION] <variable>`](dev/reference/sql/statements/set-variable.md)
- [`SHOW CHARACTER SET`](dev/reference/sql/statements/show-character-set.md)
- [`SHOW COLLATION`](dev/reference/sql/statements/show-collation.md)
- [`SHOW [FULL] COLUMNS FROM`](dev/reference/sql/statements/show-columns-from.md)
- [`SHOW CREATE TABLE`](dev/reference/sql/statements/show-create-table.md)
- [`SHOW CREATE USER`](dev/reference/sql/statements/show-create-user.md)
- [`SHOW DATABASES`](dev/reference/sql/statements/show-databases.md)
- [`SHOW ENGINES`](dev/reference/sql/statements/show-engines.md)
- [`SHOW ERRORS`](dev/reference/sql/statements/show-errors.md)
- [`SHOW [FULL] FIELDS FROM`](dev/reference/sql/statements/show-fields-from.md)
- [`SHOW GRANTS`](dev/reference/sql/statements/show-grants.md)
- [`SHOW INDEXES [FROM|IN]`](dev/reference/sql/statements/show-indexes.md)
- [`SHOW INDEX [FROM|IN]`](dev/reference/sql/statements/show-index.md)
- [`SHOW KEYS [FROM|IN]`](dev/reference/sql/statements/show-keys.md)
- [`SHOW PRIVILEGES`](dev/reference/sql/statements/show-privileges.md)
- [`SHOW [FULL] PROCESSSLIST`](dev/reference/sql/statements/show-processlist.md)
- [`SHOW SCHEMAS`](dev/reference/sql/statements/show-schemas.md)
- [`SHOW [FULL] TABLES`](dev/reference/sql/statements/show-tables.md)
- [`SHOW TABLE STATUS`](dev/reference/sql/statements/show-table-status.md)
- [`SHOW [GLOBAL|SESSION] VARIABLES`](dev/reference/sql/statements/show-variables.md)
- [`SHOW WARNINGS`](dev/reference/sql/statements/show-warnings.md)
- [`START TRANSACTION`](dev/reference/sql/statements/start-transaction.md)
- [`TRACE`](dev/reference/sql/statements/trace.md)
- [`TRUNCATE`](dev/reference/sql/statements/truncate.md)
- [`UPDATE`](dev/reference/sql/statements/update.md)
- [`USE`](dev/reference/sql/statements/use.md)
- [约束](dev/reference/sql/constraints.md)
- [生成列](dev/reference/sql/generated-columns.md)
- [字符集](dev/reference/sql/character-set.md)
Expand Down
82 changes: 82 additions & 0 deletions dev/reference/sql/statements/add-column.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
title: ADD COLUMN
summary: TiDB 数据库中 ADD COLUMN 的使用概况。
category: reference
---

# ADD COLUMN

`ALTER TABLE.. ADD COLUMN` 语句用于在已有表中添加列。在 TiDB 中,`ADD COLUMN` 为在线操作,不会阻塞表中的数据读写。

## 语法图

**AlterTableStmt:**

![AlterTableStmt](/media/sqlgram/AlterTableStmt.png)

**AlterTableSpec:**

![AlterTableSpec](/media/sqlgram/AlterTableSpec.png)

**ColumnKeywordOpt:**

![ColumnKeywordOpt](/media/sqlgram/ColumnKeywordOpt.png)

**ColumnDef:**

![ColumnDef](/media/sqlgram/ColumnDef.png)

**ColumnPosition:**

![ColumnPosition](/media/sqlgram/ColumnPosition.png)

## 示例

```sql
mysql> CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY auto_increment);
Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO t1 VALUES (NULL);
Query OK, 1 row affected (0.02 sec)

mysql> SELECT * FROM t1;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)

mysql> ALTER TABLE t1 ADD COLUMN c1 INT NOT NULL;
Query OK, 0 rows affected (0.28 sec)

mysql> SELECT * FROM t1;
+----+----+
| id | c1 |
+----+----+
| 1 | 0 |
+----+----+
1 row in set (0.00 sec)

mysql> ALTER TABLE t1 ADD c2 INT NOT NULL AFTER c1;
Query OK, 0 rows affected (0.28 sec)

mysql> SELECT * FROM t1;
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | 0 | 0 |
+----+----+----+
1 row in set (0.00 sec)
```

## MySQL 兼容性

* 不支持同时添加多列。
* 不支持将新添加的列设为 `PRIMARY KEY`
* 不支持将新添加的列设为 `AUTO_INCREMENT`

## 另请参阅

* [ADD INDEX](/dev/reference/sql/statements/add-index.md)
* [CREATE TABLE](/dev/reference/sql/statements/create-table.md)
80 changes: 80 additions & 0 deletions dev/reference/sql/statements/add-index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: ADD INDEX
summary: TiDB 数据库中 ADD INDEX 的使用概况。
category: reference
---

# ADD INDEX

`ALTER TABLE.. ADD INDEX` 语句用于在已有表中添加一个索引。在 TiDB 中,`ADD INDEX` 为在线操作,不会阻塞表中的数据读写。

## 语法图

**AlterTableStmt:**

![AlterTableStmt](/media/sqlgram/AlterTableStmt.png)

**AlterTableSpec:**

![AlterTableSpec](/media/sqlgram/AlterTableSpec.png)

**ColumnKeywordOpt:**

![ColumnKeywordOpt](/media/sqlgram/ColumnKeywordOpt.png)

**ColumnDef:**

![ColumnDef](/media/sqlgram/ColumnDef.png)

**ColumnPosition:**

![ColumnPosition](/media/sqlgram/ColumnPosition.png)

## 示例

```sql
mysql> CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY auto_increment, c1 INT NOT NULL);
Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO t1 (c1) VALUES (1),(2),(3),(4),(5);
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3;
+---------------------+----------+------+-------------------------------------------------------------+
| id | count | task | operator info |
+---------------------+----------+------+-------------------------------------------------------------+
| TableReader_7 | 10.00 | root | data:Selection_6 |
| └─Selection_6 | 10.00 | cop | eq(test.t1.c1, 3) |
| └─TableScan_5 | 10000.00 | cop | table:t1, range:[-inf,+inf], keep order:false, stats:pseudo |
+---------------------+----------+------+-------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql> ALTER TABLE t1 ADD INDEX (c1);
Query OK, 0 rows affected (0.30 sec)

mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3;
+-------------------+-------+------+-----------------------------------------------------------------+
| id | count | task | operator info |
+-------------------+-------+------+-----------------------------------------------------------------+
| IndexReader_6 | 10.00 | root | index:IndexScan_5 |
| └─IndexScan_5 | 10.00 | cop | table:t1, index:c1, range:[3,3], keep order:false, stats:pseudo |
+-------------------+-------+------+-----------------------------------------------------------------+
2 rows in set (0.00 sec)
```

## MySQL 兼容性

* 不支持 `FULLTEXT``HASH``SPATIAL` 索引。
* 不支持降序索引(类似于 MySQL 5.7)。
* 目前尚不支持同时添加多个索引。
* 无法向表中添加 `PRIMARY KEY`

## 另请参阅

* [CREATE INDEX](/dev/reference/sql/statements/create-index.md)
* [DROP INDEX](/dev/reference/sql/statements/drop-index.md)
* [RENAME INDEX](/dev/reference/sql/statements/rename-index.md)
* [ADD COLUMN](/dev/reference/sql/statements/add-column.md)
* [CREATE TABLE](/dev/reference/sql/statements/create-table.md)
* [EXPLAIN](/dev/reference/sql/statements/explain.md)
Loading

0 comments on commit 1c3d389

Please sign in to comment.