Лабораторная № 4 «Занесение информации с использованием монитора MySQL» по Базам данных (Шурыгин В. Н.)

Кирилл Николоев сб, 25.03.2017 22:30

Основная цель: добавление информации в базу данных в режиме монитора. заполнение таблиц базы данных books в режиме монитора и в пакетном режиме, создание пакетных файлов для заполнения таблиц базы данных.

1. Теоретическая часть Существует три основных способа занесения информации в таблицы базы данных: Занесение данных с использованием команды INSERT с данными, которые непосредственно должны быть занесены в таблицу;

Загрузка данных из пакетного файла; Занесение данных с помощью команды INSERT из других таблиц текущей (или некоторой другой) базы данных. Рассмотрим первый способ. Команда INSERT … VALUES. Непосредственное занесение данных в таблицы

Команда INSERT позволяет вносить записи, определяемые конкретными значениями полей в заданные таблицы. Формат команды показан ниже: INSERT INTO VALUES ( [, …]) Здесь table-name – имя таблицы, – значения соответствующих полей в порядке записи (угловые скобки ”” служат для выделения синтаксического элемента команды).

Рассмотрим таблицу CUSTOMERS, схема которой представлена ниже: CUSTOMERS(CustomerID, Name, CompanyID, Address, City) Поля таблицы имеют конкретный тип и при занесении записи задаются конкретными значениями. Покажем использование команды INSERT для внесения в эту таблицу одной записи.

INSERT INTO customers VALUES (NULL,'Julie Smith',1,'25 Oak Street','Airport West'); Поясним использование команды. Имя таблицы, в которую заносятся данные, – customers, заносимые значения указываются после ключевого слова VALUES в круглых скобках. Порядок следования значений соответствует схеме таблицы.

Первое поле в схеме – CustomerID, это первичный ключ, значения которого в различных строках таблицы должны быть различными. Значение, которое заносится командой в это поле – NULL (трактуется как неопределенное значение). При определении таблицы CUSTOMERS этому полю был назначен атрибут auto_increment, а тип значений, хранимых в поле, был определен как беззнаковый целый. Если выполняется попытка занести в поле с таким атрибутом значение NULL, то MySQL помещает в него первое не использованное ранее целое значение, больше не имеющегося в столбце. Таким способом формируется значение первичного ключа таблицы CUSTOMERS. Оставшиеся поля заполняются значениями, явно указанными в приведенной команде INSERT.

Последовательность команд INSERT позволяет занести произвольное количество записей в таблицу. Например, следующая команда добавляет к таблице CUSTOMERS еще одну строку: INSERT INTO customers VALUES (NULL,'Alan Wong',2,'1/47 Haines Avenue','Box Hill' );

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

INSERT INTO customers VALUES (NULL,'Julie Smith',1,'25 Oak Street','Airport West'), (NULL,'Alan Wong',2,'1/47 Haines Avenue','Box Hill' ); Показанная выше команда позволяет добавить в таблицу CUSTOMERS две записи. Заметьте, что формат представления значений полей записей точно такой же, как и ранее, а описание отдельных записей отделяется друг от друга запятыми.

ВНИМАНИЕ! Если попытаться выполнить указанную команду после того, как записи о заказчиках Julie Smith и Alan Wong уже внесены в базу данных (в результате выполнения предыдущих двух команд), то mysql выдаст предупреждения (Warnings) о дублировании записей

mysql> INSERT INTO customers VALUES -> (NULL,'Julie Smith',1,'25 Oak Street','Airport West'), -> (NULL,'Alan Wong',2,'1/47 Haines Avenue','Box Hill'); Query OK, 2 rows affected (0.48 sec)

Records: 2 Duplicates: 0 Warnings: 0 НО!!! Дублирующие данные mysql все равно добавит в таблицу. Это является следствием использования столбца CustomerID с атрибутами not null и auto_increment (записи с различными значениями первичного ключа считаются различными).

Если дублирующие записи появились, их придется удалить. 2. Практическая часть 1. Выполним команду, вносящую данные в таблицу customers: INSERT INTO customers VALUES(NULL,’Julie Smith’,1,’25 Oak Street’,’Airport West’);

Рисунок1 2. Получаем сообщение об ошибке, в котором говорится о несоответствии столбцов в таблице и вводимыми данными. Для исправления ошибки, добавим в таблицу customers еще одно дополнительное поле CompanyID(после поля Name) необходимое для приведения данной таблицы в 3 НФ, для этого сначала удалим имеющуюся таблицу customers при помощи команды DROP TABLE… и создадим новую, с необходимыми изменениями, при помощи команды CREATE TABLE…

Рисунок 2. 3. Теперь еще раз выполняем команду внесения данных в таблицу customers: INSERT INTO customers VALUES(NULL,’Julie Smith’,1,’25 Oak Street’,’Airport West’); Рисунок 3. Команда была выполнена успешно.

Скачать файлы

Похожие документы