В некоторых случаях нам может потребоваться скопировать определенную таблицу из той же или другой базы данных. Например, при выполнении резервного копирования или миграции нам может потребоваться восстановить таблицу без восстановления всей базы данных.
В этой статье будет рассмотрено, как скопировать таблицу из базы данных в другую таблицу с помощью предложений CREATE и SELECT в MySQL.
Первый случай, когда нам нужно скопировать таблицу, – это копирование определенных данных из существующей таблицы в новую. Например, в образце базы данных maxel мы можем скопировать конкретную информацию из таблицы film в новую таблицу с именем film_revised.
Рассмотрим приведенный ниже запрос для выполнения такой операции:
CREATE DATABASE copy_tb; use copy_tb; CREATE table film_revised SELECT title, release_year, length, rating FROM maxel.film;
После выполнения вышеуказанного запроса мы можем просмотреть данные, хранящиеся в таблице, с помощью оператора выбора MySQL, как показано в выходных данных ниже:
mysql> SELECT * FROM film_revised LIMIT 10; +------------------+--------------+--------+--------+ | title | release_year | length | rating | +------------------+--------------+--------+--------+ | ACADEMY DINOSAUR | 2006 | 86 | PG | | ACE GOLDFINGER | 2006 | 48 | G | | ADAPTATION HOLES | 2006 | 50 | NC-17 | | AFFAIR PREJUDICE | 2006 | 117 | G | | AFRICAN EGG | 2006 | 130 | G | | AGENT TRUMAN | 2006 | 169 | PG | | AIRPLANE SIERRA | 2006 | 62 | PG-13 | | AIRPORT POLLOCK | 2006 | 54 | R | | ALABAMA DEVIL | 2006 | 114 | PG-13 | | ALADDIN CALENDAR | 2006 | 63 | NC-17 | +------------------+--------------+--------+--------+ 10 rows in set (0.00 sec)
Как видите, мы можем создавать новые таблицы с выбранной информацией из существующих таблиц, не изменяя данные в исходной базе данных.
Чтобы скопировать таблицу + данные и все связанные объекты, мы используем оператор LIKE, за которым следует оператор INSERT, как показано в запросе ниже:
CREATE TABLE film_copy LIKE maxel.film; INSERT film_copy SELECT * FROM maxel.film;
Вышеупомянутый запрос скопирует все из исходной таблицы в новую, включая индексы, первичные ключи, ограничения и другие объекты, связанные с исходной таблицей.
Если вам нужно скопировать таблицу из разных баз данных, вы можете ссылаться на базу данных, используя запись с точкой (.).
Например, начните с создания новой базы данных как:
CREATE DATABASE IF NOT EXISTS multi_db;
Затем используйте синтаксис, показанный ранее, чтобы скопировать таблицу из старой базы данных в новую. см. запрос ниже:
CREATE TABLE multi_db.new_tb LIKE maxel.film; INSERT multi_db.new_tb SELECT * FROM maxel.film;
Это скопирует таблицу film из базы данных maxel в новую и отобразит результат, как показано ниже:
Query OK, 1000 rows affected (0.03 sec) Records: 1000 Duplicates: 0 Warnings: 0
Вы можете использовать оператор SELECT, чтобы убедиться, что данные были успешно скопированы.
В этой краткой статье было рассмотрено, как использовать операторы MySQL CREATE TABLE и SELECT для копирования определенных столбцов из таблицы в новую таблицу.
Мы также рассмотрели, как скопировать все данные, включая объекты, связанные с исходной таблицей, в новую таблицу.
Наконец, мы обсудили, как копировать таблицы из одной базы данных в другую.