- •Практическая работа
- •Создание запроса
- •Что такое запрос?
- •Команда select
- •Выбирайте всегда самый простой способ
- •Просмотр только определенного столбца таблицы
- •Переупорядочение столбца
- •Удаление избыточных данных
- •Квалифицированный выбор при использовании предложений
- •Реляционные операторы
- •Булевы операторы
- •Оператор in
- •Оператор between
- •Оператор like
- •Null оператор
- •Использование not со специальными операторами
- •Практическая часть.
- •Контрольные вопросы
- •Практическая работа
- •Теоретическая часть Что такое агрегатные функции?
- •Как использовать агрегатные функции?
- •Специальные атрибуты count
- •Использование count со строками, а не значениями
- •Включение дубликатов
- •Агрегаты построенные на скалярном выражении
- •Предложение group by
- •Предложение having
- •Не делайте вложенных агрегатов
- •Формирование выводов запросов Скалярное выражение с помощью выбранных полей
- •Помещение текста в вашем выводе запроса
- •Упорядочение вывода полей
- •Упорядочение с помощью многочисленных столбцов
- •Упорядочение агрегатных групп
- •Упорядочение с помощью оператора null
- •Запрашивание многочисленных таблиц также как одной Объединение таблиц
- •Имена таблиц и столбцов
- •Создание объединения
- •Объединение таблиц через справочную целостность
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •Объединение более двух таблиц
- •Практическая часть
- •Контрольные вопросы:
- •Практическая работа
- •Теоретическая часть Объединение таблицы с собой Как делать объединение таблицы с собой?
- •Псевдонимы
- •Устранение избыточности
- •Проверка ошибок
- •Больше псевдонимов
- •Еще больше комплексных объединений
- •Вставка одного запроса внутрь другого Как работает подзапрос?
- •Значения, которые могут выдавать подзапросы
- •Distinct с подзапросами
- •Предикаты с подзапросами являются необратимыми
- •Использование агрегатных функций в подзапросах
- •Использование подзапросов которые выдают много строк с помощью оператора in
- •Подзапросы выбирают одиночные столбцы
- •Использование выражений в подзапросах
- •Подзапросы в предложении having
- •Практическая часть
- •Контрольные вопросы:
- •Практическая работа
- •Теоретическая и практическая часть Использование оператора exists
- •Как работает exists?
- •Выбор столбцов с помощью exists
- •Комбинация из exists и объединения
- •Использование not exists
- •Exists и агрегаты
- •Более удачный пример подзапроса
- •Использование операторов any, all, и some
- •Специальные операторы any или some
- •Использование операторов in или exists вместо оператора any
- •Как any может стать неоднозначным
- •Специальный оператор all
- •Равенства и неравенства
- •Правильное понимание any и all
- •Как any, all, и exist поступают с отсутствующими и неизвестными данными
- •Когда подзапрос возвращается пустым
- •Any и all вместо exists с пустым указателем (null)
- •Использование count вместо exists
- •Использование предложения union Объединение многочисленных запросов в один
- •Когда вы можете делать объединение между запросами ?
- •Union и устранение дубликатов
- •Использование строк и выражений с union
- •Использование union с order by
- •Внешнее объединение
- •Практическая часть
- •Контрольные вопросы:
- •Литература
Выбирайте всегда самый простой способ
Если вы хотите видеть каждый столбец таблицы, имеется необязательное сокращение которое вы можете использовать. Звездочка (*) может применяться для вывода полного списка столбцов следующим образом:
SELECT * FROM Salespeople;
Это приведет к тому же результату что и наша предыдущая команда.
Просмотр только определенного столбца таблицы
Команда SELECT способна извлечь строго определенную информацию из таблицы. Сначала, мы можем предоставить возможность увидеть только определенные столбцы таблицы. Это выполняется легко, простым исключением столбцов которые вы не хотите видеть, из части команды SELECT. Например, запрос
SELECT sname, comm FROM Salespeople;
будет производить вывод показанный на Рисунке 2.
Рисунок 2 Выбор определенных столбцов
Могут иметься таблицы которые имеют большое количество столбцов содержащих данные, не все из которых являются относящимися к поставленной задаче. Следовательно, вы можете найти способ подбора и выбора только полезных для Вас столбцов.
Переупорядочение столбца
Даже если столбцы таблицы, по определению, упорядочены, это не означает что вы будете восстанавливать их в том же порядке. Конечно, звездочка (*) покажет все столбцы в их естественном порядке, но если вы укажете столбцы отдельно, вы можете получить их в том порядке котором хотите. Давайте рассмотрим таблицу Продажи, содержащую дату приобретения(odate), номер продавца(snum), номер порядка(onum), и суммы приобретения(amt):
SELECT odate, snum, onum, amt FROM Orders;
Вывод этого запроса показан на Рисунке 3.
Рисунок 3 Реконструкция столбцов
Как вы можете видеть, структура информации в таблицах - это просто основа для активной перестройки структуры в SQL.
Удаление избыточных данных
DISTINCT (ОТЛИЧИЕ) - аргумент который обеспечивает Вас способом устранять двойные значения из вашего предложения SELECT. Предположим что вы хотите знать какие продавцы в настоящее время имеют свои Продаж в таблице Продажи. Под порядком (здесь и далее) будет пониматься запись в таблицу Продажи, регистрирующую приобретения сделанные в определенный день определенным заказчиком у определенного продавца на определенную сумму). Вам не нужно знать, сколько Продажи имеет каждый; вам нужен только список номеров продавцов (snum). Поэтому Вы можете ввести:
SELECT snum FROM Orders;
для получения вывода показанного в Рисунке 4
Рисунок 4 SELECT с дублированием номеров продавцов.
Для получения списка без дубликатов, для удобочитаемости, вы можете ввести следующее:
SELECT DISTINCT snum FROM Orders;
Вывод для этого запроса показан в Рисунке 5.
Рисунок 5 SELECT без дублирования
Квалифицированный выбор при использовании предложений
Таблицы имеют тенденцию становиться очень большими, поскольку с течением времени, все большее и большее количество строк в нее добавляется. Поскольку обычно из них только определенные строки интересуют вас в данное время, SQL дает возможность вам устанавливать критерии чтобы определить какие строки будут выбраны для вывода.
WHERE - предложение команды SELECT, которое позволяет вам устанавливать предикаты, условие которых может быть или верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы для которой такое утверждение верно. Например, предположим вы хотите видеть имена и комиссионные всех продавцов в Лондоне. Вы можете ввести такую команду:
SELECT sname, city FROM Salespeople WHERE city = ‘LONDON’;
Когда предложение WHERE представлено, программа базы данных просматривает всю таблицу по одной строке и исследует каждую строку чтобы определить верно ли утверждение. Следовательно, для записи Peel, программа рассмотрит текущее значение столбца city, определит что оно равно "London", и включит эту строку в вывод. Запись для Serres не будет включена, и так далее. Вывод для вышеупомянутого запроса показан в Рисунке 6.
Рисунок 6 SELECT c предложением WHERE
Давайте попробуем пример с числовым полем в предложении WHERE. Поле rating таблицы Заказчиков предназначено чтобы разделять заказчиков на группы основанные на некоторых критериях которые могут быть получены в итоге через этот номер. Возможно это - форма оценки кредита или оценки основанной на томе предыдущих приобретений. Такие числовые коды могут быть полезны в реляционных базах данных как способ подведения итогов сложной информации. Мы можем выбрать всех заказчиков с рейтингом 100, следующим образом:
SELECT * FROM Customers WHERE rating = 100;
Одиночные кавычки не используются здесь потому, что оценка - это числовое поле. Результаты запроса показаны в Рисунке 7.
Другими словами, вы можете использовать номера столбцов, устранять дубликаты, или переупорядочивать столбцы в команде SELECT которая использует WHERE. Однако, вы можете изменять порядок столбцов для имен только в предложении SELECT, но не в предложении WHERE.
Рисунок 7 SELECT с числовым полем в предикате
