Временные таблицы MySQL и сеансовые данные

MySQLMySQLBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь работать с временными таблицами в MySQL, сосредоточившись на их создании и использовании в рамках сеанса. Вы начнете с подключения к серверу MySQL в качестве пользователя root и создания временной таблицы с именем temp_employees с столбцами id, name и department.

После создания временной таблицы вы подтвердите ее существование, описав ее структуру с помощью команды DESCRIBE. Это подтверждает создание таблицы и отображает определения ее столбцов, включая типы данных и ограничения. Затем лабораторное занятие приведет вас по шагам по вставке и запросу данных в временной таблице, демонстрируя ее полезность для манипуляции данными, специфичными для сеанса. Наконец, вы изучите область действия временных таблиц и узнаете, как явно удалить их.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/int("Integer Type") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/varchar("Variable Character Type") subgraph Lab Skills mysql/create_table -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} mysql/drop_table -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} mysql/select -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} mysql/insert -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} mysql/int -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} mysql/varchar -.-> lab-550917{{"Временные таблицы MySQL и сеансовые данные"}} end

Создание временной таблицы для использования в сеансе

На этом шаге вы научитесь создавать временные таблицы в MySQL. Временные таблицы полезны для хранения промежуточных результатов в рамках сеанса. Они автоматически удаляются при завершении сеанса. Это делает их идеальными для таких задач, как манипуляция данными и отчетность, где вам нужна временная рабочая область.

Сначала подключимся к серверу MySQL. Откройте терминал в виртуальной машине LabEx. Вы можете использовать следующую команду для подключения к серверу MySQL в качестве пользователя root. Вам будет предложено ввести пароль для пользователя root, который равен password.

mysql -u root -p

После ввода пароля вы должны увидеть приглашение MySQL: mysql>.

Теперь создадим временную таблицу. Синтаксис создания временной таблицы аналогичен созданию обычной таблицы, но с использованием ключевого слова TEMPORARY.

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

Эта команда создает временную таблицу с именем temp_employees с тремя столбцами: id, name и department. Столбец id является автоинкрементируемым первичным ключом.

Вы можете проверить, что таблица была создана, используя команду SHOW TABLES. Однако команда SHOW TABLES не покажет временные таблицы. Вместо этого вы можете попробовать описать таблицу:

DESCRIBE temp_employees;

Эта команда покажет структуру таблицы temp_employees, подтверждая, что она была создана. Вывод должен быть похож на следующий:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Это подтверждает, что временная таблица temp_employees была успешно создана в рамках текущего сеанса MySQL.

Вставка и запрос данных из временной таблицы

На этом шаге вы научитесь вставлять данные в временную таблицу, которую вы создали на предыдущем шаге, и затем запрашивать эти данные. Это продемонстрирует, как использовать временные таблицы для хранения и извлечения информации в рамках сеанса.

Продолжая с предыдущего шага, вы должны по-прежнему быть подключены к серверу MySQL с приглашением mysql>. Если вы не подключены, подключитесь снова с помощью следующей команды:

mysql -u root -p

Введите пароль password при запросе.

Теперь вставим некоторые данные в таблицу temp_employees. Используйте оператор INSERT INTO для добавления записей.

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

Эти команды вставляют три строки в таблицу temp_employees, содержащие имена и отделы для каждого сотрудника.

Чтобы убедиться, что данные были вставлены правильно, вы можете запросить таблицу с помощью оператора SELECT.

SELECT * FROM temp_employees;

Эта команда извлечет все столбцы и строки из таблицы temp_employees. Вывод должен быть похож на следующий:

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

Вы также можете использовать предложение WHERE для фильтрации данных. Например, чтобы выбрать только сотрудников из отдела 'Marketing':

SELECT * FROM temp_employees WHERE department = 'Marketing';

Вывод должен быть следующим:

+----+-------------+------------+
| id | name        | department |
+----+-------------+------------+
|  2 | Bob Johnson | Marketing  |
+----+-------------+------------+
1 row in set (0.00 sec)

Это демонстрирует, как вставлять данные в временную таблицу и запрашивать их с использованием стандартных SQL-команд. Данные будут доступны только в рамках текущего сеанса MySQL.

Проверка области действия временной таблицы

На этом шаге вы проверите область действия временной таблицы. Временные таблицы доступны только в рамках сеанса, в котором они были созданы. Чтобы продемонстрировать это, вы откроете новый сеанс MySQL и попытаетесь получить доступ к таблице temp_employees.

Сначала убедитесь, что вы по-прежнему подключены к серверу MySQL с предыдущих шагов. Если это так, оставьте этот терминал открытым.

Теперь откройте новое окно терминала в виртуальной машине LabEx. Вы можете сделать это, щелкнув правой кнопкой мыши на рабочем столе и выбрав "Открыть терминал здесь".

В этом новом терминале подключитесь к серверу MySQL в качестве пользователя root:

mysql -u root -p

Введите пароль password при запросе. Теперь у вас есть два отдельных сеанса MySQL.

В этом новом сеансе попробуйте выбрать данные из таблицы temp_employees:

SELECT * FROM temp_employees;

Вы должны увидеть сообщение об ошибке, похожее на следующее:

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Это сообщение об ошибке подтверждает, что таблица temp_employees, созданная в первом сеансе, не видна и недоступна в этом новом сеансе. Это происходит потому, что временные таблицы являются специфическими для сеанса.

Теперь попробуйте описать таблицу:

DESCRIBE temp_employees;

Вы также получите ошибку:

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Это дополнительно подтверждает, что временная таблица существует только в рамках сеанса, где она была создана. Закройте новое окно терминала и вернитесь в исходный терминал, где вы создали временную таблицу. Вы будете использовать этот терминал на следующем шаге.

Удаление временной таблицы

На этом шаге вы явно удалите временную таблицу, которую создали ранее. Хотя временные таблицы автоматически удаляются в конце сеанса, хорошей практикой является явное удаление их после завершения работы с ними. Это может помочь освободить ресурсы и избежать потенциальных конфликтов имен, если вам нужно будет создать таблицу с тем же именем позже в том же сеансе.

Убедитесь, что вы по-прежнему подключены к серверу MySQL в исходном сеансе терминала, где вы создали таблицу temp_employees. Если вы не подключены, подключитесь снова с помощью следующей команды:

mysql -u root -p

Введите пароль password при запросе.

Для удаления временной таблицы используйте оператор DROP TEMPORARY TABLE:

DROP TEMPORARY TABLE temp_employees;

Эта команда удалит таблицу temp_employees из текущего сеанса.

Чтобы убедиться, что таблица была удалена, попробуйте снова выбрать данные из нее:

SELECT * FROM temp_employees;

Вы должны увидеть то же сообщение об ошибке, что и на предыдущем шаге, когда вы пытались получить доступ к таблице из другого сеанса:

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Это подтверждает, что временная таблица была успешно удалена.

Теперь вы можете выйти из монитора MySQL, введя:

exit

Это отключит вас от сервера MySQL.

Резюме

В этом практическом занятии вы узнали, как создать временную таблицу в рамках сеанса MySQL. Это включает в себя подключение к серверу MySQL с использованием команды mysql -u root -p, а затем использование оператора CREATE TEMPORARY TABLE для определения структуры таблицы, включая имена столбцов, типы данных и ограничения, такие как первичные ключи и поля с автоинкрементом.

Вы также узнали, что стандартная команда SHOW TABLES не отображает временные таблицы. Вместо этого вы можете проверить создание временной таблицы, используя команду DESCRIBE для просмотра ее структуры и подтверждения определенных столбцов и их свойств.