|
Заполнение таблицы данными. |
Как раскрутить сайт:Каталог - это...Поисковик - это... Поисковики 1993г Поисковики 1994г Список каталогов Каталоги для PR Каталоги белые Каталоги белые Белые каталоги ссылок Белые каталоги ссылок Каталоги Протокол HTTP 1.1 Сайты сателлиты Yandex бан Ошибки начинающих Ошибки webмастера Что Гугл знает? О сайте из Google robots.txt Социалки Расчет PageRank Как раскрутить сайт Причины игнора сайта Фильтры Гугла Хороший дизайн Залог хорошего сайта Софт вебмастеру Выбрать хостинг Платформы хостинга Виртуальный сервер Продвижение сайта Секреты раскрутки 1 Секреты раскрутки 2 Раскруточные мифы Оптимизация под каталоги Заработать на сайте Размещение банеров Защита сайта Спам в поздравлениях SEO продвижение Раскрутка Дорвеями Секреты Гугла Ссылки google ТОП-10 Сниппеты Ключевые слова Редирект Грязная линковка SEO слэнг Подробно о PR Бан партнерки О поисковых системах Внутренние факторы Внешние факторы Индексация сайта Фильтры Различия поисковых Semonitor Сохранить позиции после редизайна Секреты Гугла |
|
Заполнение таблицы данными.(окончание)
Далее надо найти первичный ключ для книги Inthe Night Kitchen. SELECT book_id FROM book WHERE title = 'In the Night Kitchen'; B ответ будет получено значение, равное 2. Теперь надо создать запись в таблице lоаn, используя два полученных ранее первичных ключа и функцию MysQL. INSERT loan (book_id, person_id, date_lent) VALUES (2, 1, '2005-07-25'); B некоторых случаях приходится использовать один и тот же первичный ключ несколько раз. Вместо того чтобы повторно извлекать его, можно запомнить его в пользовательской переменной. Пользовательская переменная - это имя (представленное в специальном формате), связанное c фрагментом данных. Основная форма записи таких переменных - @ имя. Имя может содержать буквы от a до z (нижнего или верхнего регистра), цифры от 0 до 9, символ $, точку и знак подчеркивания. Переменную можно использовать в любом контексте, допускающем указание числового или строкового значения. Для присвоения значения пользовательской переменной используется оператор : =. Например: SЕLЕСТ @fish := 'Herring'; Применяя оператор SELECT к пользoвательскoй переменной, можно получить связанное с ней значение. SELECT @fish; Теперь, зная o наличии новой возможности, можно переписать запросы с тем, чтобы упростить их выполнение и уменьшить вероятность ошибки. SELECT @person_id := person id FROM person WHERE name = 'Carl'; SELECT @book_id book_id FROM book WHERE title = 'In the Night Kitchen'; SELECT @date :_ '2005-07-25'; INSERT loan (book_id, person_id, date_lent) VALUES (@book_id, @person_id, @date); Заметьте, что имена переменных использованы вместо литерaлoв.Такой подход позволяет повторно зaдавать одно и тo жe выражение INSERT при заполнении таблицы loan. При этом нaдо лишь изменять выражение WHERE. Предпринимая дальнейшие шаги пo оптимизации, можно объединить все запросы, предназначенные для извлечения данных. SELECT @book_id := book_id, @person_id := person_id, @date '2005-07-25' FROM book, person WHERE book.title = 'In the Night Kitchen' AND person.name = 'Carl'; Запрос SELECT подобного типа называется объединением. Объединения позволяют извлекать данные из двух или более таблиц посредством одного оператора SELECT. B нашем случае мы лишь сочетаем три отдельных запроса в одном, объединяющем две таблицы. Дополнительную информацию об объединениях (и подчиненных запросах) можно получить, обратившись к главе 9. Заметьте, что перед именем столбца указывается имя таблицы, в данном случае это выражение book.tit1е . Несмотря на то что MySQL может определить, какой таблице принaдлежит тот или иной столбец, при внесении изменений в таблицу запрос может стать неоднозначным. Теперь запишем запрос INSERT в том виде, в котором он был указан ранее. INSERT loan (book_id, person_id, date_lent) VALUES (@book_id, @person_id, @date); B качестве последнего шага оптимизации объединим отдельные запросы в один, сочетающий в себе выражения INSERT и SELECT. Синтаксис остается несложным. Мы заменили выражение VALUES запроса INSERT выражением SELECT, которое, как видно из следующего фрагмента кода, возвращает корректные данные: INSERT loan (book_id, person id, date_lent) SELECT book_id, person_id, '2005-07-25' FROM book, person WHERE book.title = 'In the Night Kitchen' AND person.name = 'Carl'; Это позволяет обойтись без пользовательских переменных и исключить промежуточные запросы. Почему же не использовать этот запрос c самого начала? Для тек, кто только начинает знакомство c базами данных, он может оказаться слишком сложным. Лишь разобравшись в работе простых запросов, можно переходить к сложным, состоящим, по сути, из нескольких более простых. Если вы испытываете затруднения, пытаясь понять приведенный выше пример, вспомните следующее: сложные запросы могут оказаться набором простых; выполнить задачу можно различными способами. Если вы не имеете достаточного опыта, продолжайте работать c простыми запрoсами. Ошибку в простом запросе намного легче найти и устранить, чем в сложном. Пер. с англ. - М.: ООО "И.Д.Вильямс", 2006. |
Основы MySQL:ВведениеСхема MySQL Управление базами Создание баз Создание таблиц Создание столбцов Идентификаторы Хранение данных Включение даты Импорт данных Включение данных Простые запросы Устранение повторов Обработка значений Значения NULL Обработка данных Оновление значений Безопасность Удаление записей
Спонсор сайта:
Установка паролей Установка привилегий Клиентская часть Параметры соединения MySQL АРI Запросы АРI АРI для Perl РНР АРI Расширенные запросы Ключевое слово JOIN Вложенные запросы Выбор результатов Проблемы MySQL Восстановление базы Частые ошибки Кол-во соединений Подготовка к работе В курс дела Имена столбцов
Реклама:
Внесение данных Внесение данных 2 Особенности таблиц Еще о таблицах |