В этой статье представлено краткое руководство по миграции прикладных систем на основе баз данных MySQL в базы данных GBase (GBase 8c). Для получения подробной информации о конкретных аспектах обеих баз данных читатели могут обратиться к официальной документации MySQL (https://dev.mysql.com/doc/) и руководству пользователя GBase 8c. Из-за обширного контента, связанного с базовым сопоставлением типов данных MySQL и другими аспектами процесса миграции, это не будет подробно рассмотрено в этой статье. Если интересно, оставьте комментарий, и мы обсудим это в следующий раз.
И в MySQL, и в GBase 8c оператор CREATE DATABASE используется для создания базы данных. Конкретные синтаксические различия заключаются в следующем:
Операция | Оператор MySQL SQL | Оператор SQL GBase 8c |
---|---|---|
СОЗДАТЬ БАЗУ ДАННЫХ | Пример CREATE DATABASE НАБОР СИМВОЛОВ utf8mb4 COLLATE utf8mb4_unicode_ci; | Пример CREATE DATABASE OWNER gbase КОДИРОВАНИЕ '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 | Оператор SQL GBase 8c | Инструмент GBase 8c gsql |
---|---|---|---|
Просмотреть базы данных | ПОКАЗАТЬ БАЗЫ ДАННЫХ; или ПОКАЗАТЬ пример БАЗЫ ДАННЫХ; | ВЫБРАТЬ * ИЗ pg_database; | \л или \л |
Переключить базу данных | ИСПОЛЬЗОВАТЬ пример; | Переподключитесь для переключения, эта функция не использует SQL для переключения | \c пример |
Удалить базу данных | Пример УДАЛЕНИЯ БАЗЫ ДАННЫХ; | Пример УДАЛЕНИЯ БАЗЫ ДАННЫХ; | Никто |
И MySQL, и GBase 8c поддерживают создание таблиц с помощью оператора CREATE TABLE. Конкретные синтаксические различия заключаются в следующем:
Операция | Оператор MySQL SQL | Оператор SQL GBase 8c |
---|---|---|
Создание таблиц с помощью 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 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" ПЕРВИЧНЫЙ КЛЮЧ ("id") ); КОММЕНТАРИЙ НА КОЛОННЕ "my_table"."id " IS 'id'; КОММЕНТАРИЙ К СТОЛБЦУ "my_table"."user_id" IS 'ID пользователя'; КОММЕНТАРИЙ К КОЛОНЦУ "my_table"."name" IS 'Name'; КОММЕНТАРИЙ К КОЛОННЕ " my_table"."address" IS "Адрес"; КОММЕНТАРИЙ К КОЛОННЕ "my_table"."passwd" IS "Пароль"; |
Создание таблиц с помощью 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 не поддерживает установку наборов символов на уровне таблицы, поэтому предложения CHARSET в операторах MySQL следует удалить при переходе на GBase 8c.
(3) СОЗДАТЬ ТАБЛИЦУ КАК\AS
GBase 8c также поддерживает синтаксис CREATE TABLE LIKE\AS, но использование предложения LIKE отличается от MySQL. В GBase 8c предложение LIKE должно быть заключено в «()», и оно не копирует аннотации COMMENT автоматически из исходных столбцов таблицы.
И MySQL, и GBase 8c поддерживают представления, а основной метод создания аналогичен. Однако важно отметить, что в GBase 8c по правилу по умолчанию прямое изменение данных в представлении не поддерживается.
Операция | Оператор MySQL SQL | Оператор SQL GBase 8c |
---|---|---|
Создание представления | СОЗДАТЬ ПРОСМОТР v_my_table КАК ВЫБРАТЬ * FROM my_table; | СОЗДАТЬ ПРОСМОТР v_my_table КАК ВЫБРАТЬ * FROM my_table; |
Изменение данных с помощью представления | INSERT INTO v_my_table(user_id, имя, адрес) VALUES(2222, 'bbb', 'xxxx'); | Поддерживается, но требует изменения ПРАВИЛА по умолчанию |
Удаление просмотра | УДАЛИТЬ ПРОСМОТР v_my_table; | УДАЛИТЬ ПРОСМОТР v_my_table; |
И MySQL, и GBase 8c поддерживают функцию индексирования, но есть небольшие различия в операциях создания и удаления. Основные синтаксические различия заключаются в следующем:
Операция | Оператор MySQL SQL | Оператор SQL GBase 8c |
---|---|---|
Создание индекса |
СОЗДАТЬ ИНДЕКС i_user_id ИСПОЛЬЗОВАНИЕ BTREE НА my_table (user_id); или СОЗДАТЬ ИНДЕКС i_user_id НА my_table (user_id) С ИСПОЛЬЗОВАНИЕМ BTREE; |
СОЗДАТЬ ИНДЕКС i_user_id НА my_table, ИСПОЛЬЗУЯ BTREE (user_id); |
Индекс падения | УДАЛИТЬ ИНДЕКС i_user_id НА my_table; | УДАЛИТЬ ИНДЕКС i_user_id; |
На что следует обратить внимание при переносе операторов создания и удаления индекса:
(1) Позиция USING index_type
В MySQL предложение USING index_type может появляться либо до, либо после предложения table_name(col_name), как показано:
... ИСПОЛЬЗОВАНИЕ индексного_типа имя_таблицы(имя_столбца) ...
ИЛИ
... имя_таблицы(имя_столбца) ИСПОЛЬЗОВАНИЕ тип_индекса ...
Однако в GBase 8c предложение USING index_type должно быть помещено в середину предложения table_name(col_name):
... имя_таблицы ИСПОЛЬЗУЕТ тип_индекса (имя_столбца) ...
(2) ПЕРЕДАЧА ИНДЕКСА НА таблице
В GBase 8c при удалении объекта индекса вам не нужно указывать предложение таблицы ON. Этот пункт следует удалить во время миграции.
(3) Другие объекты недвижимости
GBase 8c не поддерживает свойства FULLTEXT и SPATIAL при создании объектов индекса. Эти свойства необходимо удалить во время миграции.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3