- •Лабораторная работа №2 sql: выборка данных.
- •Знакомство с Query Tool pgAdmin
- •Синтаксис инструкции select.
- •Выборка без использования предложения where. Простая выборка данных
- •Выборка null-значений
- •Выборка c использованием предложения where.
- •Использование between
- •Использование in
- •Использование like
- •Выборка null-значений
- •Ограничение максимального размера выборки
- •Использование данных типа timestamp
- •Выборка с упорядочением
- •Выборка и агрегирование данных.
- •Преобразование типов данных в инструкции select.
- •Задания для самостоятельной работы
- •Использование select для соединения двух и более таблиц. Декартово произведение таблиц
- •Соединение таблицы со своей копией
- •Вложенные подзапросы.
- •Простые вложенные подзапросы
- •Коррелированные вложенные подзапросы
- •Запросы, использующие exists в предложении where
- •Подзапросы c any и all
- •Использование with
- •Объединение двух или более запросов
- •Реализация операций реляционной алгебры c помощью предложения select.
- •Задания для самостоятельной работы
- •Контрольное задание
- •Требования к отчету:
- •Контрольные вопросы:
Выборка без использования предложения where. Простая выборка данных
По запросу
SELECT “Название”, “Адрес”
FROM “Поставщики”
будут выданы название и адрес поставщиков из таблицы Поставщики.
При необходимости получения полной информации о поставщиках запрос будет таким
SELECT “Код_поставщика”, “Название”, “Город”, “Адрес”, “Телефон”
FROM “Поставщики”
или можно заменить список столбцов символом «*», который служит кратким обозначением всех имен полей в таблице, указанной во фразе FROM, причем порядок вывода полей соответствует порядку, в котором эти поля определялись при создании таблицы.
Для исключения дубликатов и одновременного упорядочения перечня необходимо дополнить запрос ключевым словом DISTINCT (различный, различные). Если после DISTINCT указывается несколько столбцов, то SELECT выдаст строки, уникальные для указанного набора столбцов: Например, по запросу
SELECT DISTINCT “Автор”, “Название”
FROM “ Книги”
будут выданы все уникальные значения пары автор-название из таблицы Книги.
Выборка с использованием выражений
Из синтаксиса фразы SELECT видно, что в ней может содержаться не только перечень столбцов таблицы или символ «*», но и выражения. Следует иметь в виду, что вычисляемые столбцы не сохраняются в базе данных, а формируются во временной таблице, создаваемой при выполнении инструкции SELECT. Например, чтобы выдать список всех книг, их цен, размер 10% надбавки к ценам и новые цены, надо ввести запрос
SELECT “Код_книги”, “Цена” , Цена*0.1, Цена*1.1
FROM “Книги”
Как видно из приведенных примеров, при выводе результата запроса каждый столбец выводится с заголовком, совпадающим с его именем в таблице, а вычисляемые столбцы — с заголовком (No column name). Эти заголовки можно изменять с помощью псевдонимов. Например, в результате выполнения запроса
SELECT “Код_книги”, “Цена” AS “Старая цена”, “Цена”*0.1 AS “Надбавка”,
“Цена”*1.1 AS "Новая цена", “Остаток” AS "Имеется в наличии"
FROM “Книги”
будут выведены значения столбца Цена под псевдонимом Старая_цена, столбца Остаток под псевдонимом Имеется в наличии и значения двух вычисляемых столбцов под псевдонимами Надбавка и Новая цена.
Выражения могут состоять из отдельных числовых или текстовых констант, причем последние должны заключаться в одинарные кавычки. Текстовые константы обычно используются в виде пояснений к данным, выводимым в результате выполнения запроса, например:
SELECT DISTINCT 'Книга', "Код_книги", 'Цена', "Цена", 'uah'
FROM "Книги" ”
Выборка null-значений
Если в какой-либо из вводимых строк таблицы отсутствует значение для какого-либо столбца и для этого столбца допустимы NULL-значения, то СУБД введет в такое поле NULL-значение. NULL-значение используется для того, чтобы представить единым образом "неизвестные значения" для любых типов данных. При выводе NULL-значения на экран или печатающее устройство его код воспроизводится каким-либо специально заданным символом или набором символов, например, < NULL > или сочетанием -0-.
Как правило, в современных СУБД с помощью специальной команды можно установить один из режимов представления NULL-значений при выполнении числовых расчетов: запрет или разрешение замены NULL-значения нулем. В первом случае любое арифметическое выражение, содержащее неопределенный операнд, будет также иметь неопределенное значение (обычно устанавливается по умолчанию). Во втором случае результат вычислений будет иметь численное значение (если это значение попадает в диапазон представления соответствующего типа данных). Для проверки текущих установок СУБД введите в таблицу Книги строку с нулевым значением столбца Цена и затем запрос:
SELECT “Остаток” + 100
FROM “Книги”
Поскольку в SQL все NULL-значения рассматриваются обычно как равные (предикат NULL= NULL имеет значение «истина»), два неопределенных значения рассматриваются как дубликаты друг друга при исключении дубликатов и поэтому предложение SELECT DISTINCT даст в результате не более одного NULL-значения. Введите в таблицу Книги еще одну строку с нулевым значением столбца Цена и обратите внимание, сколько различных значений будут выведены при выполнении запроса:
SELECT DISTINCT “Цена”
FROM “Книги