Сохраните эти SQL-операторы в текущем каталоге, в файле, названном create_tables.sql, и затем двигайтесь дальше и создайте базу данных и таблицы в ней. Готовый пример сценария содержит дополнительные строки, по умолчанию помеченные как комментарий, в них удаляются эти таблицы, если они уже существуют.
$ mysql -u rick -р
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> use blpcd;
Database changed
mysql> \. create_tables.sql
Query OK, 0 rows affected (6.04 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected (0.00. sec)
mysql>
Обратите внимание на применение команды \.для получения ввода из файла create_tables.sql.
Вы могли бы создать таблицы, выполнив операторы SQL или просто набирая данные с помощью обозревателя запросов MySQL Query Browser.
После того как таблицы созданы, их можно просмотреть, используя MySQL Administrator (рис. 8.9), в котором вы проверяете таблицу индексов базы данных blpcd(или схему, если вы предпочитаете этот термин).
Выбрав редактирование таблицы (щелчок правой кнопкой мыши или двойной щелчок мышью имени таблицы на вкладке Tables(Таблицы)) позволит увидеть дополнительные сведения о столбцах (рис. 8.10).
Рис. 8.9
Рис. 8.10
Вы заметили два значка ключа рядом со столбцами cd_idи track_idна рис. 8.10? Это означает, что они оба участвуют в формировании составного первичного ключа. Разрешив названию дорожки быть равным NULL(условие NOT NULLне проверяется), вы допускаете наличие нетипичной, но иногда встречающейся дорожки компакт-диска, не имеющей названия.
Теперь вам нужно вставить какие-нибудь данные. Лучший способ проверки любого проекта базы данных — вставка контрольных данных и проверка работоспособности проекта.
Далее мы продемонстрируем пример импорта тестовых данных, что не важно для понимания происходящего, т. к. все операции импорта в основном похожи — они загружают разные таблицы. Есть два важных аспекта, на которые здесь следует обратить внимание.
□ Сценарий удаляет любые имеющиеся данные, чтобы начать с "чистого листа".
□ В поля idвставляются значения вместо использования функции AUTO_INCREMENT. В данном случае это безопаснее, поскольку при вставках необходимо знать, какие значения применялись, чтобы убедиться в полной корректности отношений между разными данными, поэтому лучше ввести значения, чем разрешить средству AUTO_INCREMENTавтоматически сгенерировать их.
Этот файл назван insert_data.sql и может быть выполнен с помощью команды \., которую вы уже видели:
-- Удаляются существующие данные
delete from track;
delete from cd;
delete from artist;
-- Теперь данные вставляются
-- Сначала таблица artist (исполнители или группы)
insert into artist(id, name) values(1, 'Pink Floyd');
insert into artist(id, name) values(2, 'Genesis');
insert into artist(id, name) values(3, 'Einaudi');
insert into artist(id, name) values(4, 'Melanie C');
-- Затем таблица cd
insert into cd(id, title, artist_id, catalogue) values(1, 'Dark Side of the Moon', 1, 'B000024D4P');
insert into cd(id, title, artist_id, catalogue) values(2, 'Wish You Were Here', 1, 'B000024D4S');
insert into cd(id, title, artist_id, catalogue) values(3, 'A Trick of the Tail', 2, 'B000024EXM');
insert into cd(id, title, artist_id, catalogue) values(4, 'Selling England By the Pound', 2, 'B000024E9M');
insert into cd(id, title, artist_id, catalogue) values(5, 'I Giorni', 3, 'B000071WEV');
insert into cd(id, title, artist_id, catalogue) values(6, 'Northern Star', 4, 'B00004YMST');
--- Заполнение дорожек
insert into track(cd_id, track_id, title) values(1, 1, 'Speak to me');
insert into track(cd_id, track_id, title) values(1, 2, 'Breathe');
и оставшиеся дорожки этого альбома и следующий альбом:
insert into track(cd_id, track_id, title) values(2, 1, 'Shine on you crazy diamond');
insert into track(cd_id, track_id, title) values(2, 2, 'Welcome to the machine');
insert into track(cd_id, track_id, title) values(2, 3, 'Have a cigar');
insert into track(cd_id, track_id, title) values(2, 4, 'Wish you were here');
insert into track(cd_id, track_id, title) values(2, 5, 'Shine on you crazy diamond pt.2');
и т.д.
insert into track(cd_id, track_id, title) values(5, 1, 'Melodia Africana (part 1)';
insert into track(cd_id, track_id, title) values(5, 2, 'I due fiumi');
insert into track(cd_id, track_id, title) values(5, 3, 'In un\'altra vita');
…до финальных дорожек:
insert into track(cd_id, track_id, title) values(6, 11, 'Closer');
insert into track(cd_id, track_id, title) values(6, 12, 'Feel The Sun');
Далее сохраните это в файле pop_tables.sql и выполните его, как и раньше, из командной строки монитора mysql с помощью команды \..
Читать дальше