
- •Лабораторная работа «Оператор select»
- •1. Простейший вид оператора select
- •2. Использование предложения where
- •2.1. Сравнение значения столбца с константой
- •2.2. Сравнение значения столбца из одной таблицы со значением столбца из другой таблицы (внутреннее соединение)
- •3. Использование псевдонимов таблиц
- •4. Предложение order by - определение сортировки
- •5. Устранение повторяющихся значений
- •6. Расчет значений результирующих столбцов на основе арифметических выражений
- •7. Агрегатные функции
- •8. Предложение where : задание сложных условий поиска
- •8.1. Использование логических выражений
- •8.2. Сравнение столбца с результатом вычисления выражения
- •Задание:
- •Проверить выполнение всех перечисленных вариантов запросов к своей бд с помощью утилиты ibExpert.
- •Повторить п.1 с использованием утилиты sql ibExpert.
- •Результаты выполнения всех пунктов отразить в отчете.
Лабораторная работа «Оператор select»
часть1
Оператор SELECT имеет следующий формат:
SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2> ...]}
FROM <таблица1> [, < таблица2> ...]
[WHERE <условия_поиска>]
[GROUP BY столбец [COLLATE collation} [,столбец! [COLLATE collation] ...]
[HAVING < условия поиска >]
[UNION <оператор select>]
[PLAN <план выполнения_запроса>]
[ORDER BY <список_столбцов>]
1. Простейший вид оператора select
В простейшем случае оператор SELECT имеет вид:
SELECT {* | <значение1> [, <значение2> ...]}
FROM <таблица1>
После ключевого слова FROM приводится список ТБД, из которых будет происходить выборка данных.
После ключевого слова SELECT приводится список значений. В большинстве случаев это имена столбцов таблиц, перечисленных после слова FROM. Звездочка '*' указывает, что в результат выполнения запроса нужно включить все столбцы той или иной таблицы.
Пример. Выдать набор данных, состоящий из всех столбцов и всех записей из таблицы RASHOD.
SELECT *
FROM RASHOD
что эквивалентно
SELECT N_RASH, DAT_RASH, KOLVO, TOVAR, POKUP
FROM RASHOD
2. Использование предложения where
С использованием предложения WHERE оператор SELECT имеет следующий формат:
SELECT {* | <значение1> [, <значение2> ...]}
FROM <таблица1> [, < таблица2> ...]
WHERE <условия поиска>
В набор данных, который возвращается как результат выполнения оператора SELECT, будут включаться только те записи, которые удовлетворяют условию поиска. Пока разберем два простейших условия поиска.
2.1. Сравнение значения столбца с константой
При сравнении значения столбца с константой условие поиска имеет вид
<имя столбца> <оператор> константа
где в качестве оператора могут выступать операции отношения
= равно < меньше > больше
<= меньше или равно или !> не больше (т.е. меньше или равно)
>= больше или равно или !< не меньше (т.е. больше или равно)
<> не равно или != не равно
В качестве константы могут выступать строковые и числовые значения.
Пример. Показать все операции отпуска товаров объемом 20 единиц
SELECT *
FROM RASHOD R
WHERE KOLVO=20
2.2. Сравнение значения столбца из одной таблицы со значением столбца из другой таблицы (внутреннее соединение)
При сравнении значения столбца одной таблицы со значением столбца из другой таблицы условие поиска имеет вид
<имя столбца таблицы 1> <оператор> <имя столбца таблицы 2>
Пример. Выдать все записи о расходе товара из таблицы RASHOD. Для каждого товара выдать его цену из таблицы ТОVARY
SELECT RASHOD.*, TOVARY.ZENA
FROM RASHOD, TOVARY
WHERE RASHOD.TOVAR = TOVARY.TOVAR
При выполнении оператора SELECT для каждой записи из таблицы RASHOD ищется запись в таблице TOVARY, у которой значение в поле TOVAR совпадает со значением в поле TOVAR текущей записи таблицы RASHOD
При этом безразлично, в каком порядке перечислять таблицы в условии поиска, т.е безразлично, какая из таблиц будет упомянута слева, а какая справа. Таким образом, следующие условия поиска идентичны
RASHOD. TOVAR = TOVARY. TOVAR идентично условию
TOVARY.TOVAR = RASHOD.TOVAR
Такой способ соединения таблиц называется внутренним соединением
Пример. Выдать все записи о расходе товара из таблицы RASHOD Для каждого покупателя выдать его адрес из таблицы POKUPATELI
SELECT RASHOD.*, POKUPATELI.ADRES
FROM RASHOD, POKUPATELI
WHERE POKUPATELI.POKUP = RASHOD.POKUP