Cet article fournit un guide rapide pour la migration des systèmes d'application basés sur des bases de données MySQL vers des bases de données GBase (GBase 8c). Pour des informations détaillées sur des aspects spécifiques des deux bases de données, les lecteurs peuvent se référer à la documentation officielle de MySQL (https://dev.mysql.com/doc/) et au manuel d'utilisation de GBase 8c. En raison du contenu étendu impliqué dans le mappage de base des types de données MySQL et d'autres aspects du processus de migration, cela ne sera pas abordé en détail dans cet article. Si vous êtes intéressé, veuillez laisser un commentaire et nous pourrons en discuter la prochaine fois.
Dans MySQL et GBase 8c, l'instruction CREATE DATABASE est utilisée pour créer une base de données. Les différences de syntaxe spécifiques sont les suivantes :
Operation | MySQL SQL Statement | GBase 8c SQL Statement |
---|---|---|
CREATE DATABASE | CREATE DATABASE example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | CREATE DATABASE example OWNER gbase ENCODING ‘UTF8’ LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8'; |
Considérations relatives à la migration des instructions SQL pour la création de bases de données :
(1) Dans MySQL et GBase 8c, vous pouvez spécifier le jeu de caractères et les règles de classement lors de la création d'une base de données.
Contrairement à MySQL, dans GBase 8c, le mot-clé ENCODING est utilisé pour spécifier le jeu de caractères, et les mots-clés LC_COLLATE et LC_CTYPE sont utilisés pour spécifier les règles de classement :
LC_COLLATE : ce paramètre affecte l'ordre de tri des chaînes (par exemple, lors de l'utilisation de ORDER BY, ainsi que l'ordre des index sur les colonnes de texte).
LC_CTYPE : ce paramètre affecte la classification des caractères, tels que les majuscules, les minuscules et les chiffres.
(2) Lors de la création d'une base de données dans GBase 8c, vous pouvez également spécifier des attributs supplémentaires uniques. Les attributs communs incluent :
OWNER : Ce paramètre précise le propriétaire de la base de données. S'il n'est pas spécifié, le propriétaire est par défaut l'utilisateur actuel.
LIMITATION DE CONNEXION : Ce paramètre spécifie le nombre de connexions simultanées que la base de données peut accepter. Les administrateurs système ne sont pas soumis à cette limite.
(3) Structure de la base de données
Dans MySQL, base de données et schéma sont synonymes, et les bases de données peuvent se référencer mutuellement. Dans GBase 8c, la base de données et le schéma sont des objets distincts. Une seule base de données peut contenir plusieurs schémas, et les bases de données ne peuvent pas se référencer les unes les autres, mais les schémas au sein de la même base de données le peuvent.
Comparaison de différentes instructions SQL pour le fonctionnement de la base de données :
Operation | MySQL SQL Statement | GBase 8c SQL Statement | GBase 8c gsql Tool |
---|---|---|---|
View Databases | SHOW DATABASES; or SHOW DATABASE example; | SELECT * FROM pg_database; | l or l+ |
Switch Database | USE example; | Reconnect to switch, this function does not use SQL to switch | c example |
Delete Database | DROP DATABASE example; | DROP DATABASE example; | None |
MySQL et GBase 8c prennent en charge la création de tables à l'aide de l'instruction CREATE TABLE. Les différences de syntaxe spécifiques sont les suivantes :
Operation | MySQL SQL Statement | GBase 8c SQL Statement |
---|---|---|
Creating Tables using CREATE TABLE | CREATE TABLE `my_table` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` int NOT NULL COMMENT 'User id', `name` varchar(50) DEFAULT NULL COMMENT 'Name', `address` varchar(50) DEFAULT NULL COMMENT 'Address', `password` varchar(20) DEFAULT 'passwd' COMMENT 'Password', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
CREATE TABLE "my_table" ( "id" SERIAL NOT NULL, "user_id" int NOT NULL, "name" varchar(50), "address" varchar(50), "passwd" varchar(20) DEFAULT 'password', CONSTRAINT "my_table_pkey" PRIMARY KEY ("id") ); COMMENT ON COLUMN "my_table"."id" IS 'id'; COMMENT ON COLUMN "my_table"."user_id" IS 'User id'; COMMENT ON COLUMN "my_table"."name" IS 'Name'; COMMENT ON COLUMN "my_table"."address" IS 'Address'; COMMENT ON COLUMN "my_table"."passwd" IS 'Password'; |
Creating Tables using CREATE TABLE ... LIKE | create table `my_table_like` like `my_table`; | create table my_table_like (like my_table); |
Creating Tables using CREATE TABLE ... AS | create table `my_table_as` as select * from `my_table`; | create table my_table_as as select * from my_table ; |
Lors de la migration des instructions SQL pour la création de tables, les modifications de syntaxe suivantes sont requises :
(1) Règles de dénomination et sensibilité à la casse
Dans MySQL, les noms de bases de données, de tables et de champs sont entourés de guillemets (« ») pour le marquage. Ceci n'est pas autorisé dans GBase 8c ; à la place, GBase 8c utilise soit des guillemets doubles, soit aucune marque.
Dans GBase 8c, si les noms de table et de champ ne sont pas mis entre guillemets, ils sont automatiquement convertis en minuscules lors de la création de la table. Si vous devez spécifier des noms en majuscules, vous devez mettre les noms entre guillemets doubles.
(2) Modifications liées au moteur de stockage
Lors de la migration vers GBase 8c, vous devez supprimer les clauses liées au moteur de stockage telles que ENGINE et TYPE des instructions MySQL.
GBase 8c ne prend pas en charge la définition de jeux de caractères au niveau de la table, donc les clauses CHARSET dans les instructions MySQL doivent être supprimées lors de la migration vers GBase 8c.
(3) CRÉER UNE TABLE LIKEAS
GBase 8c prend également en charge la syntaxe CREATE TABLE LIKEAS, mais l'utilisation de la clause LIKE diffère de celle de MySQL. Dans GBase 8c, la clause LIKE doit être placée entre "()", et elle ne copie pas automatiquement les annotations COMMENT des colonnes de la table d'origine.
MySQL et GBase 8c prennent en charge les vues et la méthode de création de base est similaire. Cependant, il est important de noter que dans GBase 8c, selon la règle par défaut, la modification directe des données dans une vue n'est pas prise en charge.
Operation | MySQL SQL Statement | GBase 8c SQL Statement |
---|---|---|
Creating a View | CREATE VIEW v_my_table AS SELECT * FROM my_table; | CREATE VIEW v_my_table AS SELECT * FROM my_table; |
Modifying Data Through a View | INSERT INTO v_my_table(user_id, name, address) VALUES(2222, 'bbb', 'xxxx'); | Supported, but requires adjusting the default RULE |
Dropping a View | DROP VIEW v_my_table; | DROP VIEW v_my_table; |
Supprimer une vue
Operation | MySQL SQL Statement | GBase 8c SQL Statement |
---|---|---|
Creating Index |
CREATE INDEX i_user_id USING BTREE ON my_table (user_id); or CREATE INDEX i_user_id ON my_table (user_id) USING BTREE; |
CREATE INDEX i_user_id ON my_table USING BTREE (user_id); |
Dropping Index | DROP INDEX i_user_id ON my_table; | DROP INDEX i_user_id; |
Points d'attention pour la migration des instructions de création et de suppression d'index :
(1) Position de USING index_type
Dans MySQL, la clause USING index_type peut apparaître avant ou après la clause table_name(col_name), comme indiqué :
... EN UTILISANT index_type table_name(col_name) ...
OU
... table_name(col_name) EN UTILISANT index_type ...
Cependant, dans GBase 8c, la clause USING index_type doit être placée au milieu de la clause table_name(col_name) :
... table_name USING index_type (col_name) ...
(2) DÉPOSER L'INDEX SUR la table
Dans GBase 8c, lors de la suppression d'un objet d'index, vous n'avez pas besoin de spécifier la clause ON table. Cette clause doit être supprimée lors de la migration.
(3) Autres propriétés
GBase 8c ne prend pas en charge les propriétés FULLTEXT et SPATIAL lors de la création d'objets d'index. Ces propriétés doivent être supprimées lors de la migration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!