Лабораторная работа
«Оператор SELECT»
Часть1
Оператор SELECT имеет следующий формат:
SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2>...]}
FROM <таблица1> [, < таблица2>...]
[WHERE <условия_поиска>]
[GROUP BY столбец [COLLATE collation} [,столбец! [COLLATE collation]...]
[HAVING < условия поиска >]
[UNION <оператор select>]
[PLAN <план выполнения_запроса>]
[ORDER BY <список_столбцов>]
Простейший вид оператора SELECT
В простейшем случае оператор SELECT имеет вид:
SELECT {* | <значение1> [, <значение2>...]}
FROM <таблица1>
После ключевого слова FROM приводится список ТБД, из которых будет происходить выборка данных.
После ключевого слова SELECT приводится список значений. В большинстве случаев это имена столбцов таблиц, перечисленных после слова FROM. Звездочка '*' указывает, что в результат выполнения запроса нужно включить все столбцы той или иной таблицы.
Пример. Выдать набор данных, состоящий из всех столбцов и всех записей из таблицы RASHOD.
SELECT *
FROM RASHOD
что эквивалентно
SELECT N_RASH, DAT_RASH, KOLVO, TOVAR, POKUP
FROM RASHOD
|
|
Использование предложения WHERE
С использованием предложения WHERE оператор SELECT имеет следующий формат:
SELECT {* | <значение1> [, <значение2>...]}
FROM <таблица1> [, < таблица2>...]
WHERE <условия поиска>
В набор данных, который возвращается как результат выполнения оператора SELECT, будут включаться только те записи, которые удовлетворяют условию поиска. Пока разберем два простейших условия поиска.
Сравнение значения столбца с константой
При сравнении значения столбца с константой условие поиска имеет вид
<имя столбца> <оператор> константа
где в качестве оператора могут выступать операции отношения
= равно < меньше > больше
<= меньше или равно или!> не больше (т.е. меньше или равно)
>= больше или равно или!< не меньше (т.е. больше или равно)
<> не равно или!= не равно
В качестве константы могут выступать строковые и числовые значения.
Пример. Показать все операции отпуска товаров объемом 20 единиц
SELECT *
FROM RASHOD R
WHERE KOLVO=20
Сравнение значения столбца из одной таблицы со значением столбца из другой таблицы (внутреннее соединение)
При сравнении значения столбца одной таблицы со значением столбца из другой таблицы условие поиска имеет вид
<имя столбца таблицы 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