Topik ini mencakup pernyataan SQL umum untuk PolarDB-X 1.0, termasuk manajemen database dan tabel, operasi kolom dan indeks, manipulasi data, serta manajemen pengguna.
Pernyataan SQL terbagi menjadi empat kategori:
DDL (Data Definition Language): Mendefinisikan dan memodifikasi struktur database—meliputi database, tabel, kolom, dan indeks. Pernyataan utama:
CREATE,ALTER,DROP,SHOW.DML (Data Manipulation Language): Menyisipkan, memperbarui, dan menghapus data. Pernyataan utama:
INSERT,UPDATE,DELETE.DQL (Data Query Language): Mengkueri data. Pernyataan utama:
SELECT.DCL (Data Control Language): Mengelola akses pengguna dan izin. Pernyataan utama:
CREATE USER,GRANT,DROP USER.
Lihat database
Jalankan SHOW DATABASES untuk menampilkan daftar semua database:
SHOW DATABASES;Output-nya mirip dengan:
+--------------------+
| Database |
+--------------------+
| information_schema |
| sample_db |
+--------------------+Kelola tabel
Buat tabel
PolarDB-X mendukung dua jenis tabel:
Tabel partisi — mendistribusikan data ke beberapa shard database menggunakan fungsi hash. Gunakan jenis ini untuk tabel besar yang memperoleh manfaat dari skalabilitas horizontal.
CREATE TABLE multi_db_single_tbl(
id int auto_increment,
name varchar(30),
primary key(id)
) dbpartition by hash(id);Klausa dbpartition by hash(id) mempartisi tabel dengan melakukan penghashan pada kolom id di seluruh shard database.
Tabel tunggal — menyimpan semua data dalam satu shard. Gunakan jenis ini untuk tabel referensi kecil atau tabel yang tidak memerlukan partisi.
CREATE TABLE single_tbl(
id int,
name varchar(30),
primary key(id)
);Lihat definisi tabel
Jalankan SHOW CREATE TABLE untuk melihat pernyataan yang digunakan saat membuat tabel:
-- Lihat tabel partisi
SHOW CREATE TABLE multi_db_single_tbl;
-- Lihat tabel tunggal
SHOW CREATE TABLE single_tbl;Tampilkan daftar semua tabel
Jalankan SHOW TABLES untuk menampilkan daftar semua tabel dalam database saat ini:
SHOW TABLES;Output-nya mirip dengan:
+----------------------+
| Tables_in_sample_db |
+----------------------+
| multi_db_single_tbl |
| single_tbl |
+----------------------+Hapus tabel
Jalankan DROP TABLE untuk menghapus tabel beserta seluruh datanya:
-- Hapus tabel partisi
DROP TABLE multi_db_single_tbl;
-- Hapus tabel tunggal
DROP TABLE single_tbl;Kelola kolom
Gunakan ALTER TABLE untuk menambah, memodifikasi, atau menghapus kolom.
Tambah kolom:
ALTER TABLE multi_db_single_tbl ADD COLUMN textcol text;Modifikasi tipe data kolom:
ALTER TABLE multi_db_single_tbl MODIFY COLUMN textcol varchar(40);Hapus kolom:
ALTER TABLE multi_db_single_tbl DROP COLUMN textcol;Kelola indeks lokal
Buat indeks lokal
Gunakan salah satu pernyataan berikut:
CREATE INDEX idx_name ON multi_db_single_tbl (name);ALTER TABLE multi_db_single_tbl ADD INDEX idx_name(name);Lihat indeks pada tabel
SHOW INDEX FROM multi_db_single_tbl;Output-nya mirip dengan:
+---------------------+------------+----------+--------------+-------------+-----------+
| 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 |
+---------------------+------------+----------+--------------+-------------+-----------+Hapus indeks lokal
Gunakan salah satu pernyataan berikut:
DROP INDEX idx_name ON multi_db_single_tbl;ALTER TABLE multi_db_single_tbl DROP INDEX idx_name;Sisipkan, kueri, perbarui, dan hapus data
Sisipkan data
Gunakan INSERT INTO untuk menambahkan baris ke dalam tabel. Anda dapat menyisipkan satu baris atau beberapa baris dalam satu pernyataan:
-- Sisipkan satu baris
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name');
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name');
-- Sisipkan beberapa baris sekaligus
INSERT INTO multi_db_single_tbl (name) VALUES ('test_name'), ('test_namexx');Kueri data
Gunakan SELECT untuk mengambil baris:
SELECT * FROM multi_db_single_tbl;Perbarui data
Gunakan UPDATE untuk memodifikasi baris yang sudah ada:
UPDATE multi_db_single_tbl SET name = 'zzz' WHERE id IN (100001, 100002, 100003, 100004);Pernyataan UPDATE tanpa klausa WHERE akan memperbarui setiap baris dalam tabel. Selalu sertakan klausa WHERE untuk menargetkan baris tertentu.
Hapus data
Gunakan DELETE FROM untuk menghapus baris:
DELETE FROM multi_db_single_tbl WHERE id = 100002;Pernyataan DELETE tanpa klausa WHERE akan menghapus setiap baris dalam tabel. Selalu sertakan klausa WHERE untuk menargetkan baris tertentu.
Kelola pengguna dan izin
Buat pengguna
CREATE USER 'username'@'host' IDENTIFIED BY 'password';| Parameter | Deskripsi |
|---|---|
username | Nama akun yang akan dibuat |
host | Host tempat akun tersebut dapat terhubung. Gunakan % untuk mengizinkan koneksi dari host mana pun |
password | Kata sandi akun |
Contoh: Buat akun bernama drdsuser dengan kata sandi Drds123456 yang dapat terhubung dari host mana pun:
CREATE USER drdsuser@'%' IDENTIFIED BY 'Drds123456';Beri izin
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;| Parameter | Deskripsi |
|---|---|
privileges | Izin yang diberikan, seperti SELECT, INSERT, atau UPDATE. Gunakan ALL untuk memberikan semua izin |
databasename | Database target. Gunakan * untuk menargetkan semua database |
tablename | Tabel target. Gunakan * untuk menargetkan semua tabel dalam database |
username | Akun yang akan diberikan izin |
host | Host tempat akun tersebut dapat terhubung. Gunakan % untuk mengizinkan koneksi dari host mana pun |
WITH GRANT OPTION | (Opsional) Memberikan izin kepada akun untuk menjalankan pernyataan GRANT |
Contoh: Berikan semua izin pada semua tabel di sample_db kepada drdsuser yang terhubung dari host mana pun:
GRANT ALL ON sample_db.* TO drdsuser@'%';Lihat izin pengguna
SHOW GRANTS FOR 'username'@'host';Hapus pengguna
DROP USER 'username'@'host';