Читать интересную книгу Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 153 154 155 156 157 158 159 160 161 ... 324

Выбрав редактирование таблицы (щелчок правой кнопкой мыши или двойной щелчок мышью имени таблицы на вкладке 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 с помощью команды ..

Примечание

Обратите внимание на то, что в cd_id=5 ("I Giorni") с track=3 название In un'altra vita содержит апостроф. Для вставки его в базу данных вы должны использовать обратный слэш ().

Теперь самое время убедиться в том, что ваши данные выглядят осмысленно. Для этого можно применить программу-клиент mysql в режиме командной строки и SQL-операторы. Начните с выбора двух первых дорожек из каждого альбома в вашей базе данных.

SELECT artist.name, cd.title AS "CD Title", track.track_id, track.title AS "Track" FROM artist, cd, track WHERE artist.id = cd.artist_id AND track.cd_id = cd.id AND track.track_id < 3

Если вы выполните этот оператор в MySQL Query Browser, то увидите, что данные выглядят нормально (рис. 8.11).

SQL-оператор на первый взгляд сложноват, но это можно исправить, рассматривая его последовательно по частям.

Если игнорировать части AS в операторе SELECT, его первая часть такова:

SELECT artist.name, cd.title, track.track_id, track.title

Она просто сообщает о том, какие столбцы вы хотите отобразить, используя форму записи имя_таблицы.имя_столбца.Рис. 8.11 

Части AS оператора SELECT

SELECT artist.name, cd.title AS "CD Title", track.track_id, and track.title AS "Track"

просто переименовывают столбцы в отображаемом выводе. Таким образом, заголовок столбца title из таблицы cd (cd.title) называется "CD Title", а столбец track.track.id — "Track". Подобное использование ключевого слова AS обеспечивает более дружественный по отношению к пользователю вывод. Вы практически никогда не будете применять эти имена при вызове SQL-операторов из другого языка программирования, но ключевое слово as полезно при работе с SQL-операторами из командной строки.

1 ... 153 154 155 156 157 158 159 160 161 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий