重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

TiDBでSQLを探索する

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

SQLを試し、MySQLクエリとのTiDBの互換性をテストするには、次のようにしますTiDBをインストールせずに、Webブラウザで直接実行します 。また、最初にTiDBクラスタをデプロイしてから、そのクラスターでSQLステートメントを実行することもできます。

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

カテゴリー

SQLは、その機能に応じて次の4つのタイプに分類されます。

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

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

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

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

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

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

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;

たとえば、number、name、birthdayなどのフィールドを含む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 INDEXALTER TABLEにネストできます:

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

ノート:

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

データの挿入、更新、および削除

一般的なDML機能は、テーブルレコードの追加、変更、および削除です。対応するコマンドはINSERT 、およびUPDATE 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ステートメントを使用します。次の例では、パスワード123456を使用してtiuserという名前のユーザーを作成します。

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

samp_dbデータベース内のテーブルを取得する特権をtiuserに付与するには、次のようにします。

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

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

SHOW GRANTS for tiuser@localhost;

tiuserを削除するには:

DROP USER 'tiuser'@'localhost';