Cette rubrique présente les instructions SQL courantes pour PolarDB-X 1.0, notamment la gestion des bases de données et des tables, les opérations sur les colonnes et les index, la manipulation des données ainsi que la gestion des utilisateurs.
Les instructions SQL se classent en quatre catégories :
DDL (Data Definition Language) : permet de définir et modifier les structures de la base de données (bases de données, tables, colonnes et index). Instructions principales :
CREATE,ALTER,DROP,SHOW.DML (Data Manipulation Language) : sert à insérer, mettre à jour et supprimer des enregistrements. Instructions principales :
INSERT,UPDATE,DELETE.DQL (Data Query Language) : permet d'interroger des enregistrements. Instruction principale :
SELECT.DCL (Data Control Language) : gère l'accès des utilisateurs et leurs permissions. Instructions principales :
CREATE USER,GRANT,DROP USER.
Consulter les bases de données
Exécutez SHOW DATABASES pour lister toutes les bases de données :
SHOW DATABASES;
Le résultat obtenu ressemble à ceci :
+--------------------+
| Database |
+--------------------+
| information_schema |
| sample_db |
+--------------------+
Gérer les tables
Créer une table
PolarDB-X prend en charge deux types de tables :
Table partitionnée : répartit les données sur plusieurs shards de base de données à l'aide d'une fonction de hachage. Ce type convient aux tables volumineuses nécessitant une mise à l'échelle horizontale.
CREATE TABLE multi_db_single_tbl(
id int auto_increment,
name varchar(30),
primary key(id)
) dbpartition by hash(id);
La clause dbpartition by hash(id) partitionne la table en hachant la colonne id sur les différents shards de la base de données.
Table unique : stocke toutes les données dans un seul shard. Privilégiez ce format pour les petites tables de référence ou celles ne nécessitant pas de partitionnement.
CREATE TABLE single_tbl(
id int,
name varchar(30),
primary key(id)
);
Consulter la définition d'une table
Exécutez SHOW CREATE TABLE pour afficher l'instruction ayant servi à créer une table :
-- View a partitioned table
SHOW CREATE TABLE multi_db_single_tbl;
-- View a single table
SHOW CREATE TABLE single_tbl;
Lister toutes les tables
Exécutez SHOW TABLES pour obtenir la liste de toutes les tables de la base de données actuelle :
SHOW TABLES;
Le résultat obtenu ressemble à ceci :
+----------------------+
| Tables_in_sample_db |
+----------------------+
| multi_db_single_tbl |
| single_tbl |
+----------------------+
Supprimer une table
Exécutez DROP TABLE pour supprimer une table ainsi que toutes ses données :
-- Drop a partitioned table
DROP TABLE multi_db_single_tbl;
-- Drop a single table
DROP TABLE single_tbl;
Gérer les colonnes
Utilisez ALTER TABLE pour ajouter, modifier ou supprimer des colonnes.
Ajouter une colonne :
ALTER TABLE multi_db_single_tbl ADD COLUMN textcol text;
Modifier le type de données d'une colonne :
ALTER TABLE multi_db_single_tbl MODIFY COLUMN textcol varchar(40);
Supprimer une colonne :
ALTER TABLE multi_db_single_tbl DROP COLUMN textcol;
Gérer les index locaux
Créer un index local
Vous avez le choix entre les deux instructions suivantes :
CREATE INDEX idx_name ON multi_db_single_tbl (name);
ALTER TABLE multi_db_single_tbl ADD INDEX idx_name(name);
Consulter les index d'une table
SHOW INDEX FROM multi_db_single_tbl;
Le résultat obtenu ressemble à ceci :
+---------------------+------------+----------+--------------+-------------+-----------+
| 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 |
+---------------------+------------+----------+--------------+-------------+-----------+
Supprimer un index local
Vous avez le choix entre les deux instructions suivantes :
DROP INDEX idx_name ON multi_db_single_tbl;
ALTER TABLE multi_db_single_tbl DROP INDEX idx_name;
Insérer, interroger, mettre à jour et supprimer des données
Insérer des données
Utilisez INSERT INTO pour ajouter des lignes à une table. Il est possible d'insérer une seule ligne ou plusieurs lignes en une seule instruction :
-- 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');
Interroger des données
Utilisez SELECT pour récupérer des lignes :
SELECT * FROM multi_db_single_tbl;
Mettre à jour des données
Utilisez UPDATE pour modifier des lignes existantes :
UPDATE multi_db_single_tbl SET name = 'zzz' WHERE id IN (100001, 100002, 100003, 100004);
Une instruction UPDATE sans clause WHERE modifie toutes les lignes de la table. Incluez toujours une clause WHERE pour cibler des lignes spécifiques.
Supprimer des données
Utilisez DELETE FROM pour retirer des lignes :
DELETE FROM multi_db_single_tbl WHERE id = 100002;
Une instruction DELETE sans clause WHERE supprime toutes les lignes de la table. Incluez toujours une clause WHERE pour cibler des lignes spécifiques.
Gérer les utilisateurs et les permissions
Créer un utilisateur
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
| Paramètre | Description |
|---|---|
username |
Nom du compte à créer |
host |
Hôte depuis lequel le compte peut se connecter. Utilisez % pour autoriser les connexions depuis n'importe quel hôte |
password |
Mot de passe du compte |
Exemple : création d'un compte nommé drdsuser avec le mot de passe Drds123456, autorisé à se connecter depuis n'importe quel hôte :
CREATE USER drdsuser@'%' IDENTIFIED BY 'Drds123456';
Accorder des permissions
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
| Paramètre | Description |
|---|---|
privileges |
Permissions à accorder, telles que SELECT, INSERT ou UPDATE. Utilisez ALL pour accorder toutes les permissions |
databasename |
Base de données cible. Utilisez * pour cibler toutes les bases de données |
tablename |
Table cible. Utilisez * pour cibler toutes les tables de la base de données |
username |
Compte auquel accorder les permissions |
host |
Hôte depuis lequel le compte peut se connecter. Utilisez % pour autoriser les connexions depuis n'importe quel hôte |
WITH GRANT OPTION |
(Facultatif) Autorise le compte à exécuter des instructions GRANT |
Exemple : attribution de toutes les permissions sur l'ensemble des tables de sample_db à l'utilisateur drdsuser se connectant depuis n'importe quel hôte :
GRANT ALL ON sample_db.* TO drdsuser@'%';
Consulter les permissions d'un utilisateur
SHOW GRANTS FOR 'username'@'host';
Supprimer un utilisateur
DROP USER 'username'@'host';