Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 8.doc
Скачиваний:
10
Добавлен:
01.05.2025
Размер:
385 Кб
Скачать
☆

3. Отбор данных из таблиц

Отбор данных из таблиц заключается в получении из них полей и записей, удовлетворяющих заданным условиям. Результат выполнения запроса, на осно­вании которого отбираются записи, называют выборкой. Данные можно выби­рать из одной или нескольких таблиц с помощью оператора select .

3.1. Описание оператора select

Оператор select — важнейший оператор языка SQL. Он используется для отбо­ра записей, удовлетворяющих сложным критериям поиска, и имеет следующий формат:

SELECT [DISTINCT] {* | <Список полей>}

FROM <Список таблиц>

[WHERE <Условия отбора >]

[ORDER BY <Список полей для сортировки >]

[GROUP BY <Список полей для группирования >]

[HAVING <Условия группирования >]

[UNION <Вложенный оператор SELECT>]

Результат выполнения SQL-запроса, заданного оператором select, представляет собой выборку записей, отвечающих заданным в нем условиям. При рассмотре­нии оператора select будем предполагать, что SQL-запрос набран и выполнен с помощью компонента Query. В этом случае результатом выполнения запроса является соответствующий этому компоненту набор данных.

В таком результирующем наборе данных могут быть разрешены или запрещены повторяющиеся записи (т. е. имеющие одинаковые значения всех полей). Этим режимом управляет описатель distinct. Если он отсутствует, то в наборе дан­ных разрешаются повторяющиеся записи.

В оператор select обязательно включается список полей и операнд from, ос­тальные операнды могут отсутствовать. В списке операнда from перечисляются имена таблиц, для которых отбираются записи. Список должен содержать как минимум одну таблицу.

Список полей определяет состав полей результирующего набора данных, эти поля могут принадлежать разным таблицам. В списке должно быть задано хотя бы одно поле. Если в набор данных требуется включить все поля таблицы (таблиц), то вместо перечисления имен полей можно указать символ *. Если список содержит поля нескольких таблиц, то для указания принадлежности по­ля к той или иной таблице используют составное имя, включающее в себя имя таблицы и имя поля, разделенные точкой: <имя таблицы>. <Имя поля>.

Операнд where задает условия (критерии) отбора, которым должны удовлетво­рять записи в результирующем наборе данных. Выражение, описывающее усло­вия отбора, является логическим. Его элементами могут быть имена полей, опе­рации сравнения, арифметические и логические операции, скобки, специальные функции LIKE, NULL, IN и др.

Операнд group by позволяет выделять группы записей в результирующем наборе данных. Группой являются записи с одинаковыми значениями в полях, пере­численных за операндом group by. Выделение групп нужно для выполнения групповых операций над записями, например, для определения количества ка­кого-либо товара на складе.

Операнд having действует совместно с операндом group by и используется для отбора записей внутри групп. Правила записи условий группирования анало­гичны правилам формирования условий отбора в операнде where.

Операнд order by содержит список полей, определяющих порядок сортировки записей результирующего набора данных. По умолчанию сортировка по каждо­му полю выполняется в порядке возрастания значений; если необходимо задать для поля сортировку по убыванию, то после имени этого поля указывается опи­сатель DESC.

Операторы select могут иметь сложную структуру и быть вложенными друг в друга. Для объединения операторов используется операнд union, в котором рас­полагается вложенный оператор select, называемый также подзапросом. Резуль­тирующий набор данных представляют записи, отобранные в результате выпол­нения условий отбора, заданных операндами where обоих операторов.

Оператор select используется также внутри других операторов, например, опе­раторов модификации записей, обеспечивая для их выполнения требуемый от­бор записей.