この記事では、MySQL データベースに基づくアプリケーション システムを GBase データベース (GBase 8c) に移行するためのクイック ガイドを提供します。両方のデータベースの特定の側面の詳細については、MySQL 公式ドキュメント (https://dev.mysql.com/doc/) および GBase 8c ユーザー マニュアルを参照してください。 MySQL データ型の基本的なマッピングや移行プロセスのその他の側面には広範な内容が含まれるため、この記事では詳しく説明しません。ご興味がございましたら、コメントを残してください。次回話し合います。
MySQL と GBase 8c の両方で、データベースの作成に CREATE DATABASE ステートメントが使用されます。具体的な構文の違いは次のとおりです:
手術 | MySQL SQL ステートメント | GBase 8c SQL ステートメント |
---|---|---|
データベースを作成 | CREATE DATABASE の例 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | CREATE DATABASE の例 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文の比較:
手術 | MySQL SQL ステートメント | GBase 8c SQL ステートメント | GBase 8c gsql ツール |
---|---|---|---|
データベースを表示 | データベースを表示します。または SHOW DATABASE の例。 | SELECT * FROM pg_database; | \l または \l |
データベースを切り替える | 使用例; | スイッチに再接続します。この関数はスイッチに SQL を使用しません | \c 例 |
データベースを削除 | データベースのドロップの例; | データベースのドロップの例; | なし |
MySQL と GBase 8c は両方とも、CREATE TABLE ステートメントを使用したテーブルの作成をサポートしています。具体的な構文の違いは次のとおりです:
手術 | MySQL SQL ステートメント | GBase 8c SQL ステートメント |
---|---|---|
CREATE TABLE を使用したテーブルの作成 | CREATE TABLE `my_table` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` int NOT NULL COMMENT 'ユーザー ID', `name` varchar(50) DEFAULT NULL コメント '名前', `アドレス` varchar(50) デフォルト NULL コメント 'アドレス', `パスワード` varchar(20) デフォルト 'passwd' COMMENT 'パスワード', 主キー (`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" は 'アドレス'; 列 "my_table"."passwd" のコメントは 'パスワード'; |
CREATE TABLE ... LIKE を使用してテーブルを作成しています | テーブル `my_table_like` を `my_table` のように作成します; | テーブル my_table_like (my_table のような) を作成; |
CREATE TABLE ... AS | を使用したテーブルの作成テーブル `my_table_as` を select * from `my_table` として作成します; | テーブル my_table_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) \AS
のようなテーブルを作成します
GBase 8c は CREATE TABLE LIKE\AS 構文もサポートしていますが、LIKE 句の使用法は MySQL とは異なります。 GBase 8c では、LIKE 句は「()」で囲む必要があり、元のテーブル列から COMMENT 注釈が自動的にコピーされません。
MySQL と GBase 8c はどちらもビューをサポートしており、基本的な作成方法は似ています。ただし、GBase 8c では、デフォルトのルールでは、ビュー内のデータの直接変更はサポートされていないことに注意することが重要です。
手術 | MySQL SQL ステートメント | GBase 8c SQL ステートメント |
---|---|---|
ビューの作成 | CREATE VIEW v_my_table AS SELECT * FROM my_table; | CREATE VIEW v_my_table AS SELECT * FROM my_table; |
ビューを介したデータの変更 | INSERT INTO v_my_table(user_id, name, address) VALUES(2222, 'bbb', 'xxxx'); | サポートされていますが、デフォルトのルールを調整する必要があります |
ビューの削除 | ドロップビュー v_my_table; | ドロップビュー v_my_table; |
MySQL と GBase 8c は両方ともインデックス機能をサポートしていますが、作成と削除の操作には若干の違いがあります。基本的な構文の違いは次のとおりです:
手術 | MySQL SQL ステートメント | GBase 8c SQL ステートメント |
---|---|---|
インデックスを作成しています |
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); |
指数の下落 | 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 インデックス タイプ テーブル名(列名) ...
または
...テーブル名(列名) USING インデックスタイプ ...
ただし、GBase 8c では、USING Index_type 句を table_name(col_name) 句の途中に配置する必要があります。
...テーブル名 USING インデックスタイプ (列名) ...
(2) テーブルのインデックスをドロップ
GBase 8c では、インデックス オブジェクトを削除するときに ON table 句を指定する必要はありません。この句は移行中に削除する必要があります。
(3) その他のプロパティ
GBase 8c は、インデックス オブジェクトの作成時に FULLTEXT プロパティと SPATIAL プロパティをサポートしません。これらのプロパティは移行中に削除する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3