このトピックでは、PolarDB-X 1.0 の一般的な SQL ステートメントについて説明します。これには、データベースとテーブルの管理、カラムとインデックスの操作、データ処理、ユーザー管理が含まれます。
SQL ステートメントは、次の4つのカテゴリに分類されます。
DDL (データ定義言語): データベース、テーブル、カラム、インデックスなどのデータベース構造を定義および変更します。主要なステートメント:
CREATE、ALTER、DROP、SHOW。DML (データ操作言語): レコードを挿入、更新、削除します。主要なステートメント:
INSERT、UPDATE、DELETE。DQL (データクエリ言語): レコードをクエリします。主要なステートメント:
SELECT。DCL (データ制御言語): ユーザーアクセスと権限を管理します。主要なステートメント:
CREATE USER、GRANT、DROP USER。
データベースの表示
SHOW DATABASES を実行して、すべてのデータベースを一覧表示します。
SHOW DATABASES;出力は次のようになります。
+--------------------+
| Database |
+--------------------+
| information_schema |
| sample_db |
+--------------------+テーブルの管理
テーブルの作成
PolarDB-X は、次の2種類のテーブルタイプをサポートしています。
パーティションテーブル — ハッシュ関数を使用して、複数のデータベースシャードにデータを分散します。水平スケーリングの恩恵を受ける大規模なテーブルにこれを使用します。
CREATE TABLE multi_db_single_tbl(
id int auto_increment,
name varchar(30),
primary key(id)
) dbpartition by hash(id);dbpartition by hash(id) 句は、id カラムをハッシュ化して、データベースシャード全体にテーブルをパーティション分割します。
単一テーブル — すべてのデータを単一のシャードに保存します。小規模な参照テーブルやパーティション分割を必要としないテーブルにこれを使用します。
CREATE TABLE single_tbl(
id int,
name varchar(30),
primary key(id)
);テーブル定義の表示
SHOW CREATE TABLE を実行して、テーブルの作成に使用されたステートメントを表示します。
-- View a partitioned table
SHOW CREATE TABLE multi_db_single_tbl;
-- View a single table
SHOW CREATE TABLE single_tbl;すべてのテーブルを一覧表示
SHOW TABLES を実行して、現在のデータベース内のすべてのテーブルを一覧表示します。
SHOW TABLES;出力は次のようになります。
+----------------------+
| Tables_in_sample_db |
+----------------------+
| multi_db_single_tbl |
| single_tbl |
+----------------------+テーブルの削除
DROP TABLE を実行して、テーブルとそのすべてのデータを削除します。
-- Drop a partitioned table
DROP TABLE multi_db_single_tbl;
-- Drop a single table
DROP TABLE single_tbl;カラムの管理
ALTER TABLE を使用して、カラムの追加、変更、または削除を行います。
カラムの追加:
ALTER TABLE multi_db_single_tbl ADD COLUMN textcol text;カラムのデータ型の変更:
ALTER TABLE multi_db_single_tbl MODIFY COLUMN textcol varchar(40);カラムの削除:
ALTER TABLE multi_db_single_tbl DROP COLUMN textcol;ローカルインデックスの管理
ローカルインデックスの作成
次のいずれかのステートメントを使用します。
CREATE INDEX idx_name ON multi_db_single_tbl (name);ALTER TABLE multi_db_single_tbl ADD INDEX idx_name(name);テーブルのインデックスの表示
SHOW INDEX FROM multi_db_single_tbl;出力は次のようになります。
+---------------------+------------+----------+--------------+-------------+-----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Null |
+---------------------+------------+----------+--------------+-------------+-----------+
| multi_db_single_tbl | 0 | PRIMARY | 1 | id | |
| multi_db_single_tbl | 1 | idx_name | 1 | name | YES |
+---------------------+------------+----------+--------------+-------------+-----------+ローカルインデックスの削除
次のいずれかのステートメントを使用します。
DROP INDEX idx_name ON multi_db_single_tbl;ALTER TABLE multi_db_single_tbl DROP INDEX idx_name;データの挿入、クエリ、更新、削除
データの挿入
INSERT INTO を使用して、テーブルに行を追加します。単一行または複数行を1つのステートメントで挿入します。
-- Insert one row
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name');
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name');
-- Insert multiple rows at once
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name'), ('test_namexx');データのクエリ
SELECT を使用して、行を取得します。
SELECT * FROM multi_db_single_tbl;データの更新
UPDATE を使用して、既存の行を変更します。
UPDATE multi_db_single_tbl SET name = 'zzz' WHERE id IN (100001, 100002, 100003, 100004);WHERE 句のない UPDATE ステートメントは、テーブル内のすべての行を更新します。WHERE 句を常に含めて、特定の行を対象にしてください。
データの削除
DELETE FROM を使用して、行を削除します。
DELETE FROM multi_db_single_tbl WHERE id = 100002;WHERE 句のない DELETE ステートメントは、テーブル内のすべての行を削除します。WHERE 句を常に含めて、特定の行を対象にしてください。
ユーザーと権限の管理
ユーザーの作成
CREATE USER 'username'@'host' IDENTIFIED BY 'password';| パラメーター | 説明 |
|---|---|
username | 作成するアカウント名 |
host | アカウントが接続できるホスト。任意のホストからの接続を許可するには % を使用します |
password | アカウントのパスワード |
例: 任意のホストから接続できるパスワード Drds123456 を持つ drdsuser という名前のアカウントを作成します。
CREATE USER drdsuser@'%' IDENTIFIED BY 'Drds123456';権限の付与
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;| パラメーター | 説明 |
|---|---|
privileges | SELECT、INSERT、UPDATE など、付与する権限。ALL を使用してすべての権限を付与します |
databasename | ターゲットデータベース。* を使用してすべてのデータベースを対象とします |
tablename | ターゲットテーブル。データベース内のすべてのテーブルを対象とするには * を使用します |
username | 権限を付与するアカウント |
host | アカウントが接続できるホスト。任意のホストからの接続を許可するには % を使用します |
WITH GRANT OPTION | (オプション) アカウントに GRANT ステートメントを実行する権限を付与します |
例: 任意のホストから接続する drdsuser に、sample_db 内のすべてのテーブルに対するすべての権限を付与します。
GRANT ALL ON sample_db.* TO drdsuser@'%';ユーザー権限の表示
SHOW GRANTS FOR 'username'@'host';ユーザーの削除
DROP USER 'username'@'host';