TiDB で SQL を探索する

TiDB は MySQL と互換性があり、ほとんどの場合 MySQL ステートメントを直接使用できます。サポートされていない機能については、 MySQLとの互換性参照してください。

SQL を試して、MySQL クエリと TiDB の互換性をテストするには、 TiDB プレイグラウンド試すことができます。また、最初に TiDB クラスターをデプロイし、その中で SQL ステートメントを実行することもできます。

このページでは、DDL、DML、CRUD 操作などの基本的なTiDB SQLステートメントについて説明します。TiDB ステートメントの完全なリストについては、 TiDB SQL構文図参照してください。

カテゴリー

SQL は関数に応じて次の 4 つのタイプに分けられます。

  • DDL (データ定義言語): データベース、テーブル、ビュー、インデックスなどのデータベース オブジェクトを定義するために使用されます。

  • DML (データ操作言語): アプリケーション関連のレコードを操作するために使用されます。

  • DQL (データ クエリ言語): 条件付きフィルタリング後にレコードをクエリするために使用されます。

  • DCL (データ制御言語): アクセス権限とセキュリティ レベルを定義するために使用されます。

一般的な DDL 機能は、オブジェクト (テーブルやインデックスなど) の作成、変更、削除です。対応するコマンドはCREATEALTERDROPです。

データベースの表示、作成、削除

TiDB のデータベースは、テーブルやインデックスなどのオブジェクトのコレクションと考えることができます。

データベースのリストを表示するには、次SHOW DATABASESステートメントを使用します。

SHOW DATABASES;

mysqlという名前のデータベースを使用するには、次のステートメントを使用します。

USE mysql;

データベース内のすべてのテーブルを表示するには、次SHOW TABLESステートメントを使用します。

SHOW TABLES FROM mysql;

データベースを作成するには、 CREATE DATABASEステートメントを使用します。

CREATE DATABASE db_name [options];

samp_dbという名前のデータベースを作成するには、次のステートメントを使用します。

CREATE DATABASE IF NOT EXISTS samp_db;

データベースが存在する場合にエラーを防ぐためにIF NOT EXISTS追加します。

データベースを削除するには、次DROP DATABASEステートメントを使用します。

DROP DATABASE samp_db;

テーブルを作成、表示、削除する

テーブルを作成するには、 CREATE TABLEステートメントを使用します。

CREATE TABLE table_name column_name data_type constraint;

たとえば、番号、名前、誕生日などのフィールドを含むperson名前のテーブルを作成するには、次のステートメントを使用します。

CREATE TABLE person ( id INT(11), name VARCHAR(255), birthday DATE );

テーブルを作成するステートメント (DDL) を表示するには、次SHOW CREATEステートメントを使用します。

SHOW CREATE table person;

テーブルを削除するには、 DROP TABLEステートメントを使用します。

DROP TABLE person;

インデックスの作成、表示、削除

インデックスは、インデックス付き列のクエリを高速化するために使用されます。値が一意でない列のインデックスを作成するには、次CREATE INDEXステートメントを使用します。

CREATE INDEX person_id ON person (id);

または、次ALTER TABLEステートメントを使用します。

ALTER TABLE person ADD INDEX person_id (id);

値が一意の列に一意のインデックスを作成するには、次CREATE UNIQUE INDEXステートメントを使用します。

CREATE UNIQUE INDEX person_unique_id ON person (id);

または、次ALTER TABLEステートメントを使用します。

ALTER TABLE person ADD UNIQUE person_unique_id (id);

テーブル内のすべてのインデックスを表示するには、 SHOW INDEXステートメントを使用します。

SHOW INDEX FROM person;

インデックスを削除するには、 DROP INDEXまたはALTER TABLEステートメントを使用します。 DROP INDEX ALTER TABLEにネストできます。

DROP INDEX person_id ON person;
ALTER TABLE person DROP INDEX person_unique_id;

注記:

DDL 操作はトランザクションではありません。DDL 操作を実行するときにCOMMITステートメントを実行する必要はありません。

データの挿入、更新、削除

一般的な DML 機能は、テーブル レコードの追加、変更、および削除です。対応するコマンドはINSERTUPDATE 、およびDELETEです。

テーブルにデータを挿入するには、 INSERTステートメントを使用します。

INSERT INTO person VALUES(1,'tom','20170912');

いくつかのフィールドのデータを含むレコードをテーブルに挿入するには、次INSERTステートメントを使用します。

INSERT INTO person(id,name) VALUES('2','bob');

テーブル内のレコードの一部のフィールドを更新するには、次UPDATEステートメントを使用します。

UPDATE person SET birthday='20180808' WHERE id=2;

テーブル内のデータを削除するには、次DELETEステートメントを使用します。

DELETE FROM person WHERE id=2;

注記:

フィルターとしてWHERE節を使用しないUPDATEおよびDELETEステートメントは、テーブル全体に対して動作します。

クエリデータ

DQL は、1 つまたは複数のテーブルから必要なデータ行を取得するために使用されます。

テーブル内のデータを表示するには、 SELECTステートメントを使用します。

SELECT * FROM person;

特定の列をクエリするには、 SELECTキーワードの後に​​列名を追加します。

SELECT name FROM person;
+------+ | name | +------+ | tom | +------+ 1 rows in set (0.00 sec)

WHERE句を使用して、条件に一致するすべてのレコードをフィルタリングし、結果を返します。

SELECT * FROM person where id<5;

ユーザーの作成、承認、削除

DCL は通常、ユーザーの作成や削除、ユーザー権限の管理に使用されます。

ユーザーを作成するには、 CREATE USERステートメントを使用します。次の例では、 tiuserという名前のユーザーとパスワード123456を作成します。

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

tiuser samp_dbデータベース内のテーブルを取得する権限を付与するには:

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

tiuserの権限を確認するには:

SHOW GRANTS for tiuser@localhost;

tiuser削除するには:

DROP USER 'tiuser'@'localhost';

このページは役に立ちましたか?