すべてのプロダクト
Search
ドキュメントセンター

PolarDB:基本的な SQL 操作

最終更新日:Mar 29, 2026

このトピックでは、PolarDB-X 1.0 の一般的な SQL ステートメントについて説明します。これには、データベースとテーブルの管理、カラムとインデックスの操作、データ処理、ユーザー管理が含まれます。

SQL ステートメントは、次の4つのカテゴリに分類されます。

  • DDL (データ定義言語): データベース、テーブル、カラム、インデックスなどのデータベース構造を定義および変更します。主要なステートメント: CREATEALTERDROPSHOW

  • DML (データ操作言語): レコードを挿入、更新、削除します。主要なステートメント: INSERTUPDATEDELETE

  • DQL (データクエリ言語): レコードをクエリします。主要なステートメント: SELECT

  • DCL (データ制御言語): ユーザーアクセスと権限を管理します。主要なステートメント: CREATE USERGRANTDROP 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;
パラメーター説明
privilegesSELECTINSERTUPDATE など、付与する権限。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';