Часть 3. Выбор строк с указанием критериев поиска (WHERE)
Предложение WHERE применяется для выбора записей, соответствующих определенным критериям. Критерий поиска состоит из одного или нескольких предикатов. Предикат задает проверку, выполняемую для каждой записи таблицы. Результат проверки может принимать одно из трех значений: «true», «false», «unknown». Команда извлекает для вывода только те строки из таблицы, для которых результат проверки равен «true». В таблице 1 приведен синтаксис различных видов сравнения.
Таблица 1
Точное совпадение значений одного из полей
Задание: вывести список названий издательств (поле Title_book) из таблицы Books, которые находятся в(поле Publish) из таблицы Publishing_house.
SELECT books.title_book, publishing_house.publish
FROM books INNERJOIN publishing_house
ON books.code_publish = publishing_house.code_publish
WHERE publishing_house.publish='Лань'
Использование вложенного запроса
Задание:: Найти название книг, автором которых является Толстой
SELECT title_book
FROM books
WHERE code_author=(SELECT code_author
FROM authors
WHERE name_author='Толстой')
Этот запрос работает если вложенный подзапрос выдает одно число. Если в базе данных есть несколько записей, соответствующих фамилия писателя «Толстой» то запрос завершится с ошибкой в этом случае лучше использовать конструкцию In:
|
|
SELECT title_book
FROM books
WHERE code_author IN(SELECT code_author
FROM authors
WHERE name_author='Пушкин')
Точное несовпадение значений одного из полей
Задание: Вывести список названий издательств (поле Publish) из таблицы Publishing_house, которые не находятся в городе ‘Москва’ (условие по полю City).
SELECT Publish
FROM Publishing_house
WHERE City <>'Москва'
Самостоятельно:
· Вывести список названий книг (поле Title_book) из таблицы Books,которые выпущены любыми издательствами, кроме издательства ‘Питер-Софт’ (поле Publish из таблицы Publishing_house).
Выбор записей по диапазону значений (Between)
Задание: Вывести фамилии, имена, отчества авторов (поле Name_author) из таблицы Authors, у которых дата рождения (поле Birthday) находится в диапазоне 01.01.1840 – 01.06.1860.
SELECT name_author
FROM Authors
WHERE Birthday BETWEEN'01.01.1940'AND'01.01.1960'
Самостоятельно:
· Вывести список названий книг (поле Title_book из таблицы Books)и количество экземпляров (поле Amount из таблицы Purchases),которые были закуплены в период с 12.03.2003 по 15.06.2003 (условие по полю Date_order из таблицы Purchases).
· Вывести список названий книг (поле Title_book) и количество страниц (поле Pages) из таблицы Books, у которых объем в страницах укладывается в диапазон 200 – 300 (условие по полю Pages).
· Вывести список фамилий, имен, отчеств авторов (поле Name_author) из таблицы Authors, у которых фамилия начинается на одну из букв диапазона ‘В’ – ‘Г’ (условие по полю Name_author).