From f4289cf7e000fb114ee5b0a63d7693b7f0586f40 Mon Sep 17 00:00:00 2001 From: pepezzzz <35323945+pepezzzz@users.noreply.github.com> Date: Thu, 21 May 2020 21:50:59 +0800 Subject: [PATCH 1/3] Add files via upload --- basic-sql-operations.md | 193 ++++++++++++++-------------------------- 1 file changed, 69 insertions(+), 124 deletions(-) diff --git a/basic-sql-operations.md b/basic-sql-operations.md index 29d8b5d06a5c..8aca7bfd84dc 100644 --- a/basic-sql-operations.md +++ b/basic-sql-operations.md @@ -1,244 +1,194 @@ ---- -title: TiDB 中的基本 SQL 操作 -category: how-to -aliases: ['/docs-cn/dev/how-to/get-started/explore-sql/'] ---- +SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。 -# TiDB 中的基本 SQL 操作 + SQL 语言通常按照功能划分成以下的 4 个部分: -成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且[大多数情况下](/mysql-compatibility.md)可以直接执行 MySQL 语句。 + DDL,Data Definition Language,数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。 -本文介绍 CRUD 操作等基本的 SQL 语句。完整的 SQL 语句列表,参见 [TiDB SQL 语法详解](https://pingcap.github.io/sqlgram/)。 + DML,Data Manipulation Language,数据操作语言,用来操作和业务相关的记录。 -## 创建、查看和删除数据库 + DQL,Data Query Language,数据查询语言,用来查询经过条件筛选的记录。 -使用 `CREATE DATABASE` 语句创建数据库。语法如下: - -{{< copyable "sql" >}} - -```sql -CREATE DATABASE db_name [options]; -``` + DCL,Data Control Language,数据控制语言,用来定义访问权限和安全级别。 -例如,要创建一个名为 `samp_db` 的数据库,可使用以下语句: +常用的 DDL 功能是对象(如表、索引等)的创建、属性修改和删除,对应的命令分别是 CREATE、ALTER 和 DROP。 -{{< copyable "sql" >}} +## 查看、创建和删除数据库 -```sql -CREATE DATABASE IF NOT EXISTS samp_db; -``` +TiDB 语境中的 Database 或者说数据库,可以认为是表和索引等对象的集合。 -使用 `SHOW DATABASES` 语句查看数据库: + 使用 `SHOW DATABASES` 语句查看系统中数据库列表: {{< copyable "sql" >}} ```sql SHOW DATABASES; ``` - -使用 `DROP DATABASE` 语句删除数据库,例如: - +使用名为 `mysql` 的数据库: {{< copyable "sql" >}} ```sql -DROP DATABASE samp_db; +use mysql; ``` - -## 创建、查看和删除表 - -使用 `CREATE TABLE` 语句创建表。语法如下: - +使用 `SHOW TABLES` 语句查看数据库中的所有表。例如: {{< copyable "sql" >}} ```sql -CREATE TABLE table_name column_name data_type constraint; +SHOW TABLES FROM mysql; ``` - -例如: - +使用 `CREATE DATABASE` 语句创建数据库。语法如下: {{< copyable "sql" >}} ```sql -CREATE TABLE person ( - number INT(11), - name VARCHAR(255), - birthday DATE - ); +CREATE DATABASE db_name [options]; ``` - -如果表已存在,添加 `IF NOT EXISTS` 可防止发生错误: - +例如,要创建一个名为 `samp_db` 的数据库,可使用以下语句: {{< copyable "sql" >}} ```sql -CREATE TABLE IF NOT EXISTS person ( - number INT(11), - name VARCHAR(255), - birthday DATE -); +CREATE DATABASE IF NOT EXISTS samp_db; ``` - -使用 `SHOW CREATE` 语句查看建表语句。例如: +添加 `IF NOT EXISTS` 可防止发生错误。 +使用 `DROP DATABASE` 语句删除数据库。例如: {{< copyable "sql" >}} ```sql -SHOW CREATE table person; +DROP DATABASE samp_db; ``` +## 创建、查看和删除表 -使用 `SHOW FULL COLUMNS` 语句查看表的列。 例如: +使用 `CREATE TABLE` 语句创建表。语法如下: {{< copyable "sql" >}} ```sql -SHOW FULL COLUMNS FROM person; +CREATE TABLE table_name column_name data_type constraint; ``` - -使用 `DROP TABLE` 语句删除表。例如: - +例如,要创建一个名为 `person` 的表,包括编号、名字、生日等字段,可使用以下语句: {{< copyable "sql" >}} ```sql -DROP TABLE person; +CREATE TABLE person ( + id INT(11), + name VARCHAR(255), + birthday DATE + ); ``` - -或者 - +使用 `SHOW CREATE` 语句查看建表语句,即 DDL。例如: {{< copyable "sql" >}} ```sql -DROP TABLE IF EXISTS person; +SHOW CREATE table person; ``` - -使用 `SHOW TABLES` 语句查看数据库中的所有表。例如: - +使用 `DROP TABLE` 语句删除表。例如: {{< copyable "sql" >}} ```sql -SHOW TABLES FROM samp_db; +DROP TABLE person; ``` - ## 创建、查看和删除索引 -对于值不唯一的列,可使用 `CREATE INDEX` 或 `ALTER TABLE` 语句。例如: +索引通常用于加速索引列上的查询。对于值不唯一的列,可使用 `CREATE INDEX` 或 `ALTER TABLE` 语句创建普通索引。例如: {{< copyable "sql" >}} ```sql -CREATE INDEX person_num ON person (number); +CREATE INDEX person_id ON person (id); ``` - 或者 - {{< copyable "sql" >}} ```sql -ALTER TABLE person ADD INDEX person_num (number); +ALTER TABLE person ADD INDEX person_id (id); ``` - 对于值唯一的列,可以创建唯一索引。例如: - {{< copyable "sql" >}} ```sql -CREATE UNIQUE INDEX person_num ON person (number); +CREATE UNIQUE INDEX person_unique_id ON person (id); ``` - 或者 - {{< copyable "sql" >}} ```sql -ALTER TABLE person ADD UNIQUE person_num (number); +ALTER TABLE person ADD UNIQUE person_unique_id (id); ``` - 使用 `SHOW INDEX` 语句查看表内所有索引: - {{< copyable "sql" >}} ```sql SHOW INDEX from person; ``` - 使用 `ALTER TABLE` 或 `DROP INDEX` 语句来删除索引。与 `CREATE INDEX` 语句类似,`DROP INDEX` 也可以嵌入 `ALTER TABLE` 语句。例如: - {{< copyable "sql" >}} ```sql -DROP INDEX person_num ON person; +DROP INDEX person_id ON person; ``` - {{< copyable "sql" >}} - ```sql -ALTER TABLE person DROP INDEX person_num; +ALTER TABLE person DROP INDEX person_unique_id; ``` +注意:DDL 操作不是事务,在执行 DDL 时,不需要对应 COMMIT 语句。 +常用的 DML 功能是对表记录的新增、修改和删除,对应的命令分别是 INSERT、UPDATE 和 DELETE。 -## 增删改查数据 +## 记录的增删改 -使用 `INSERT` 语句向表内插入数据。例如: +使用 `INSERT` 语句向表内插入表记录。例如: {{< copyable "sql" >}} ```sql INSERT INTO person VALUES("1","tom","20170912"); ``` - -使用 `SELECT` 语句检索表内数据。例如: - +使用 `INSERT` 语句向表内插入包含部分字段数据的表记录。例如: {{< copyable "sql" >}} ```sql -SELECT * FROM person; -``` - -``` -+--------+------+------------+ -| number | name | birthday | -+--------+------+------------+ -| 1 | tom | 2017-09-12 | -+--------+------+------------+ +INSERT INTO person(id,name) VALUES("2","bob"); ``` - -使用 `UPDATE` 语句修改表内数据。例如: - +使用 `UPDATE` 语句向表内修改表记录的部分字段数据。例如: {{< copyable "sql" >}} ```sql -UPDATE person SET birthday='20171010' WHERE name='tom'; +UPDATE person SET birthday="20180808" WHERE id=2; ``` - +使用 `DELETE` 语句向表内删除部分表记录。例如: {{< copyable "sql" >}} ```sql -SELECT * FROM person; +DELETE FROM person WHERE id=2; ``` +注意:UPDATE 和 DELETE 操作如果不带 WHERE 过滤条件是对全表进行操作。 +DQL 数据查询语言是从一个表或多个表中检索出想要的数据行,通常是业务开发的核心内容。 -``` -+--------+------+------------+ -| number | name | birthday | -+--------+------+------------+ -| 1 | tom | 2017-10-10 | -+--------+------+------------+ -``` +## 查询数据 -使用 `DELETE` 语句删除表内数据: +使用 `SELECT` 语句检索表内数据。例如: {{< copyable "sql" >}} ```sql -DELETE FROM person WHERE number=1; +SELECT * FROM person; ``` - +在 SELECT 后面加上要查询的列名。例如: {{< copyable "sql" >}} ```sql -SELECT * FROM person; +SELECT name FROM person; ++------+ +| name | ++------+ +| tom | ++------+ ``` +使用 WHERE 子句,对所有记录进行是否符合条件的筛选后再返回。例如: +{{< copyable "sql" >}} +```sql +SELECT * FROM person where id<5; ``` -Empty set (0.00 sec) -``` +常用的 DCL 功能是创建或删除用户,和对用户权限的管理。 ## 创建、授权和删除用户 @@ -249,27 +199,22 @@ Empty set (0.00 sec) ```sql CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456'; ``` - 授权用户 `tiuser` 可检索数据库 `samp_db` 内的表: - {{< copyable "sql" >}} ```sql GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost'; ``` - 查询用户 `tiuser` 的权限: - {{< copyable "sql" >}} ```sql SHOW GRANTS for tiuser@localhost; ``` - 删除用户 `tiuser`: - {{< copyable "sql" >}} ```sql DROP USER 'tiuser'@'localhost'; ``` + From 02188f3bcb587bf97adf73fbe90410a587abb0d8 Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 22 May 2020 12:30:34 +0800 Subject: [PATCH 2/3] update format --- basic-sql-operations.md | 78 +++++++++++++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/basic-sql-operations.md b/basic-sql-operations.md index 8aca7bfd84dc..197038ec3ecc 100644 --- a/basic-sql-operations.md +++ b/basic-sql-operations.md @@ -1,14 +1,22 @@ -SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。 +--- +title: SQL 基本操作 +category: how-to +aliaes: ['/docs-cn/dev/how-to/get-started/explore-sql/'] +--- - SQL 语言通常按照功能划分成以下的 4 个部分: +# SQL 基本操作 - DDL,Data Definition Language,数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。 +SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。 - DML,Data Manipulation Language,数据操作语言,用来操作和业务相关的记录。 +SQL 语言通常按照功能划分成以下的 4 个部分: - DQL,Data Query Language,数据查询语言,用来查询经过条件筛选的记录。 +DDL,Data Definition Language,数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。 - DCL,Data Control Language,数据控制语言,用来定义访问权限和安全级别。 +DML,Data Manipulation Language,数据操作语言,用来操作和业务相关的记录。 + +DQL,Data Query Language,数据查询语言,用来查询经过条件筛选的记录。 + +DCL,Data Control Language,数据控制语言,用来定义访问权限和安全级别。 常用的 DDL 功能是对象(如表、索引等)的创建、属性修改和删除,对应的命令分别是 CREATE、ALTER 和 DROP。 @@ -16,38 +24,48 @@ SQL 是一门声明性语言,它是数据库用户与数据库交互的方式 TiDB 语境中的 Database 或者说数据库,可以认为是表和索引等对象的集合。 - 使用 `SHOW DATABASES` 语句查看系统中数据库列表: +使用 `SHOW DATABASES` 语句查看系统中数据库列表: {{< copyable "sql" >}} ```sql SHOW DATABASES; ``` + 使用名为 `mysql` 的数据库: + {{< copyable "sql" >}} ```sql use mysql; ``` + 使用 `SHOW TABLES` 语句查看数据库中的所有表。例如: + {{< copyable "sql" >}} ```sql SHOW TABLES FROM mysql; ``` + 使用 `CREATE DATABASE` 语句创建数据库。语法如下: + {{< copyable "sql" >}} ```sql CREATE DATABASE db_name [options]; ``` + 例如,要创建一个名为 `samp_db` 的数据库,可使用以下语句: + {{< copyable "sql" >}} ```sql CREATE DATABASE IF NOT EXISTS samp_db; ``` + 添加 `IF NOT EXISTS` 可防止发生错误。 + 使用 `DROP DATABASE` 语句删除数据库。例如: {{< copyable "sql" >}} @@ -55,6 +73,7 @@ CREATE DATABASE IF NOT EXISTS samp_db; ```sql DROP DATABASE samp_db; ``` + ## 创建、查看和删除表 使用 `CREATE TABLE` 语句创建表。语法如下: @@ -64,7 +83,9 @@ DROP DATABASE samp_db; ```sql CREATE TABLE table_name column_name data_type constraint; ``` + 例如,要创建一个名为 `person` 的表,包括编号、名字、生日等字段,可使用以下语句: + {{< copyable "sql" >}} ```sql @@ -74,18 +95,23 @@ CREATE TABLE person ( birthday DATE ); ``` + 使用 `SHOW CREATE` 语句查看建表语句,即 DDL。例如: + {{< copyable "sql" >}} ```sql SHOW CREATE table person; ``` + 使用 `DROP TABLE` 语句删除表。例如: + {{< copyable "sql" >}} ```sql DROP TABLE person; ``` + ## 创建、查看和删除索引 索引通常用于加速索引列上的查询。对于值不唯一的列,可使用 `CREATE INDEX` 或 `ALTER TABLE` 语句创建普通索引。例如: @@ -95,41 +121,55 @@ DROP TABLE person; ```sql CREATE INDEX person_id ON person (id); ``` -或者 + +或者: + {{< copyable "sql" >}} ```sql ALTER TABLE person ADD INDEX person_id (id); ``` + 对于值唯一的列,可以创建唯一索引。例如: + {{< copyable "sql" >}} ```sql CREATE UNIQUE INDEX person_unique_id ON person (id); ``` -或者 + +或者: + {{< copyable "sql" >}} ```sql ALTER TABLE person ADD UNIQUE person_unique_id (id); ``` + 使用 `SHOW INDEX` 语句查看表内所有索引: + {{< copyable "sql" >}} ```sql SHOW INDEX from person; ``` + 使用 `ALTER TABLE` 或 `DROP INDEX` 语句来删除索引。与 `CREATE INDEX` 语句类似,`DROP INDEX` 也可以嵌入 `ALTER TABLE` 语句。例如: + {{< copyable "sql" >}} ```sql DROP INDEX person_id ON person; ``` + {{< copyable "sql" >}} + ```sql ALTER TABLE person DROP INDEX person_unique_id; ``` + 注意:DDL 操作不是事务,在执行 DDL 时,不需要对应 COMMIT 语句。 + 常用的 DML 功能是对表记录的新增、修改和删除,对应的命令分别是 INSERT、UPDATE 和 DELETE。 ## 记录的增删改 @@ -141,25 +181,33 @@ ALTER TABLE person DROP INDEX person_unique_id; ```sql INSERT INTO person VALUES("1","tom","20170912"); ``` + 使用 `INSERT` 语句向表内插入包含部分字段数据的表记录。例如: + {{< copyable "sql" >}} ```sql INSERT INTO person(id,name) VALUES("2","bob"); ``` + 使用 `UPDATE` 语句向表内修改表记录的部分字段数据。例如: + {{< copyable "sql" >}} ```sql UPDATE person SET birthday="20180808" WHERE id=2; ``` + 使用 `DELETE` 语句向表内删除部分表记录。例如: + {{< copyable "sql" >}} ```sql DELETE FROM person WHERE id=2; ``` + 注意:UPDATE 和 DELETE 操作如果不带 WHERE 过滤条件是对全表进行操作。 + DQL 数据查询语言是从一个表或多个表中检索出想要的数据行,通常是业务开发的核心内容。 ## 查询数据 @@ -171,7 +219,9 @@ DQL 数据查询语言是从一个表或多个表中检索出想要的数据行 ```sql SELECT * FROM person; ``` + 在 SELECT 后面加上要查询的列名。例如: + {{< copyable "sql" >}} ```sql @@ -182,12 +232,15 @@ SELECT name FROM person; | tom | +------+ ``` + 使用 WHERE 子句,对所有记录进行是否符合条件的筛选后再返回。例如: + {{< copyable "sql" >}} ```sql SELECT * FROM person where id<5; ``` + 常用的 DCL 功能是创建或删除用户,和对用户权限的管理。 ## 创建、授权和删除用户 @@ -199,22 +252,27 @@ SELECT * FROM person where id<5; ```sql CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456'; ``` + 授权用户 `tiuser` 可检索数据库 `samp_db` 内的表: + {{< copyable "sql" >}} ```sql GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost'; ``` + 查询用户 `tiuser` 的权限: + {{< copyable "sql" >}} ```sql SHOW GRANTS for tiuser@localhost; ``` + 删除用户 `tiuser`: + {{< copyable "sql" >}} ```sql DROP USER 'tiuser'@'localhost'; ``` - From efb7fc420f6bf1b2f77ca2432a664acbd315e44e Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 22 May 2020 12:34:10 +0800 Subject: [PATCH 3/3] Update basic-sql-operations.md --- basic-sql-operations.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/basic-sql-operations.md b/basic-sql-operations.md index 197038ec3ecc..48ef149c3345 100644 --- a/basic-sql-operations.md +++ b/basic-sql-operations.md @@ -1,22 +1,26 @@ --- title: SQL 基本操作 category: how-to -aliaes: ['/docs-cn/dev/how-to/get-started/explore-sql/'] +aliases: ['/docs-cn/dev/how-to/get-started/explore-sql/'] --- # SQL 基本操作 -SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。 +成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且[大多数情况下](/mysql-compatibility.md)可以直接执行 MySQL 语句。 + +SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。完整的 SQL 语句列表,参见 [TiDB SQL 语法详解](https://pingcap.github.io/sqlgram/)。 + +## 分类 SQL 语言通常按照功能划分成以下的 4 个部分: -DDL,Data Definition Language,数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。 +- DDL (Data Definition Language):数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。 -DML,Data Manipulation Language,数据操作语言,用来操作和业务相关的记录。 +- DML (Data Manipulation Language):数据操作语言,用来操作和业务相关的记录。 -DQL,Data Query Language,数据查询语言,用来查询经过条件筛选的记录。 +- DQL (Data Query Language):数据查询语言,用来查询经过条件筛选的记录。 -DCL,Data Control Language,数据控制语言,用来定义访问权限和安全级别。 +- DCL (Data Control Language):数据控制语言,用来定义访问权限和安全级别。 常用的 DDL 功能是对象(如表、索引等)的创建、属性修改和删除,对应的命令分别是 CREATE、ALTER 和 DROP。