TiDB 中的基本 SQL 操作

成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且大多数情况下可以直接执行 MySQL 语句。

本文介绍 CRUD 操作等基本的 SQL 语句。完整的 SQL 语句列表,参见 TiDB SQL 语法详解

创建、查看和删除数据库

使用 CREATE DATABASE 语句创建数据库。语法如下:

  1. CREATE DATABASE db_name [options];

例如,要创建一个名为 samp_db 的数据库,可使用以下语句:

  1. CREATE DATABASE IF NOT EXISTS samp_db;

使用 SHOW DATABASES 语句查看数据库:

  1. SHOW DATABASES;

使用 DROP DATABASE 语句删除数据库,例如:

  1. DROP DATABASE samp_db;

创建、查看和删除表

使用 CREATE TABLE 语句创建表。语法如下:

  1. CREATE TABLE table_name column_name data_type constraint;

例如:

  1. CREATE TABLE person (
  2. number INT(11),
  3. name VARCHAR(255),
  4. birthday DATE
  5. );

如果表已存在,添加 IF NOT EXISTS 可防止发生错误:

  1. CREATE TABLE IF NOT EXISTS person (
  2. number INT(11),
  3. name VARCHAR(255),
  4. birthday DATE
  5. );

使用 SHOW CREATE 语句查看建表语句。例如:

  1. SHOW CREATE table person;

使用 SHOW FULL COLUMNS 语句查看表的列。 例如:

  1. SHOW FULL COLUMNS FROM person;

使用 DROP TABLE 语句删除表。例如:

  1. DROP TABLE person;

或者

  1. DROP TABLE IF EXISTS person;

使用 SHOW TABLES 语句查看数据库中的所有表。例如:

  1. SHOW TABLES FROM samp_db;

创建、查看和删除索引

对于值不唯一的列,可使用 CREATE INDEXALTER TABLE 语句。例如:

  1. CREATE INDEX person_num ON person (number);

或者

  1. ALTER TABLE person ADD INDEX person_num (number);

对于值唯一的列,可以创建唯一索引。例如:

  1. CREATE UNIQUE INDEX person_num ON person (number);

或者

  1. ALTER TABLE person ADD UNIQUE person_num (number);

使用 SHOW INDEX 语句查看表内所有索引:

  1. SHOW INDEX from person;

使用 ALTER TABLEDROP INDEX 语句来删除索引。与 CREATE INDEX 语句类似,DROP INDEX 也可以嵌入 ALTER TABLE 语句。例如:

  1. DROP INDEX person_num ON person;
  2. ALTER TABLE person DROP INDEX person_num;

增删改查数据

使用 INSERT 语句向表内插入数据。例如:

  1. INSERT INTO person VALUES("1","tom","20170912");

使用 SELECT 语句检索表内数据。例如:

  1. SELECT * FROM person;
  2. +--------+------+------------+
  3. | number | name | birthday |
  4. +--------+------+------------+
  5. | 1 | tom | 2017-09-12 |
  6. +--------+------+------------+

使用 UPDATE 语句修改表内数据。例如:

  1. UPDATE person SET birthday='20171010' WHERE name='tom';
  2. SELECT * FROM person;
  3. +--------+------+------------+
  4. | number | name | birthday |
  5. +--------+------+------------+
  6. | 1 | tom | 2017-10-10 |
  7. +--------+------+------------+

使用 DELETE 语句删除表内数据:

  1. DELETE FROM person WHERE number=1;
  2. SELECT * FROM person;
  3. Empty set (0.00 sec)

创建、授权和删除用户

使用 CREATE USER 语句创建一个用户 tiuser,密码为 123456

  1. CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456';

授权用户 tiuser 可检索数据库 samp_db 内的表:

  1. GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost';

查询用户 tiuser 的权限:

  1. SHOW GRANTS for tiuser@localhost;

删除用户 tiuser

  1. DROP USER 'tiuser'@'localhost';