この記事では、MySQL データベースに基づくアプリケーション システムを GBase データベース (GBase 8c) に移行するためのクイック ガイドを提供します。両方のデータベースの特定の側面の詳細については、MySQL 公式ドキュメント (https://dev.mysql.com/doc/) および GBase 8c ユーザー マニュアルを参照してください。 MySQL データ型の基本的なマッピングや移行プロセスのその他の側面には広範な内容が含まれるため、この記事では詳しく説明しません。ご興味がございましたら、コメントを残してください。次回話し合います。
MySQL と GBase 8c では、データベースの作成に CREATE DATABASE ステートメントが使用されます。具体的な構文の違いは次のとおりです:
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'; |
データベース作成のための SQL ステートメントの移行に関する考慮事項:
(1) MySQL と GBase 8c の両方で、データベースの作成時に文字セットと照合規則を指定できます。
MySQL とは異なり、GBase 8c では、ENCODING キーワードを使用して文字セットを指定し、LC_COLLATE および LC_CTYPE キーワードを使用して照合規則を指定します。
LC_COLLATE: このパラメータは、文字列の並べ替え順序に影響します (たとえば、ORDER BY を使用する場合やテキスト列のインデックスの順序)。
LC_CTYPE: このパラメータは、大文字、小文字、数字などの文字の分類に影響します。
(2) GBase 8c でデータベースを作成する場合、独自の追加属性を指定することもできます。共通の属性には次のものが含まれます:
OWNER: このパラメータはデータベースの所有者を指定します。指定しない場合、所有者はデフォルトで現在のユーザーになります。
CONNECTION LIMIT: このパラメータは、データベースが受け入れることができる同時接続の数を指定します。システム管理者はこの制限の影響を受けません。
(3) データベース構造
MySQL では、データベースとスキーマは同義であり、データベースは相互に参照できます。 GBase 8c では、データベースとスキーマは別個のオブジェクトです。単一のデータベースに複数のスキーマを含めることができ、データベース間で相互に参照することはできませんが、同じデータベース内のスキーマは相互に参照できます。
データベースを操作するためのさまざまな SQL ステートメントの比較:
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 と GBase 8c は両方とも、CREATE TABLE ステートメントを使用したテーブルの作成をサポートしています。具体的な構文の違いは次のとおりです:
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 ; |
テーブルを作成するために SQL ステートメントを移行する場合は、次の構文の変更が必要です。
(1) 命名規則と大文字小文字の区別
MySQL では、データベース、テーブル、フィールド名をバッククォート (``) で囲んでマークします。これは GBase 8c では許可されていません。代わりに、GBase 8c では二重引用符を使用するか、マークをまったく使用しません。
GBase 8c では、テーブル名とフィールド名が二重引用符で囲まれていない場合、テーブルの作成時に自動的に小文字に変換されます。大文字の名前を指定する必要がある場合は、名前を二重引用符で囲む必要があります。
(2) ストレージ エンジン関連の変更
GBase 8c に移行する場合は、MySQL ステートメントから ENGINE や TYPE などのストレージ エンジン関連の句を削除する必要があります。
GBase 8c はテーブル レベルでの文字セットの設定をサポートしていないため、GBase 8c に移行する場合は MySQL ステートメントの CHARSET 句を削除する必要があります。
(3) LIKEAS テーブルの作成
GBase 8c は CREATE TABLE LIKEAS 構文もサポートしていますが、LIKE 句の使用法は MySQL とは異なります。 GBase 8c では、LIKE 句は「()」で囲む必要があり、元のテーブル列から COMMENT アノテーションは自動的にコピーされません。
MySQL と GBase 8c は両方ともビューをサポートしており、基本的な作成方法は似ています。ただし、GBase 8c では、デフォルトのルールでは、ビュー内のデータの直接変更はサポートされていないことに注意することが重要です。
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; |
ビューの削除
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; |
インデックス作成および削除ステートメントを移行する際の注意点:
(1) USINGindex_type
の位置
MySQL では、次に示すように、USING Index_type 句は table_name(col_name) 句の前後に指定できます。
... USING Index_type table_name(col_name) ...
または
...テーブル名(列名) USING インデックスタイプ ...
ただし、GBase 8c では、USING Index_type 句を table_name(col_name) 句の途中に配置する必要があります。
... table_name USING Index_type (col_name) ...
(2) DROP INDEX ON テーブル
GBase 8c では、インデックス オブジェクトを削除するときに ON table 句を指定する必要はありません。この句は移行中に削除する必要があります。
(3) その他のプロパティ
GBase 8c は、インデックス オブジェクトの作成時に FULLTEXT プロパティと SPATIAL プロパティをサポートしません。これらのプロパティは移行中に削除する必要があります。
以上がMySQL から GBase への移行ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。