СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Выборка данных из баз данных

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Выборка данных из баз данных»

Лекция 9. Выборка данных

Лекция 9. Выборка данных

 Команда SELECT состоит из семи основных частей: списка выборки и разделов FROM , WHERE , GROUP BY , HAVING , ORDER BY и COMPUTE – обязательным является лишь список выборки, при использовании же остальных частей необходимо их использовать в том порядке, в котором они приведены выше. Простая выборка данных SELECT [ALL | DISTINCT] [TOP n [PERCENT] СписокВыборки FROM ИмяТаблицы WHERE УсловиеОтбора  По умолчанию команда SELECT возвращает все записи, включая дубликаты, ч то  определяется ключевым словом ALL , которое может быть опущено. Для получения набора уникальных неповторяющихся записей необходимо указывать ключевое слово DISTINCT .  Использование ключевого слова TOP предписывает выводить не все записи итогового набора, а только n первых. Можно выбирать не фиксированное количество записей, а определенный процент от всех строк – для этого указывается ключевое слово PERCENT

Команда SELECT состоит из семи основных частей: списка выборки и

разделов FROM , WHERE , GROUP BY , HAVING , ORDER BY и COMPUTE –

обязательным является лишь список выборки, при использовании же остальных

частей необходимо их использовать в том порядке, в котором они приведены

выше.

Простая выборка данных

SELECT [ALL | DISTINCT] [TOP n [PERCENT] СписокВыборки

FROM ИмяТаблицы

WHERE УсловиеОтбора

По умолчанию команда SELECT возвращает все записи, включая дубликаты,

ч то определяется ключевым словом ALL , которое может быть опущено. Для

получения набора уникальных неповторяющихся записей необходимо указывать

ключевое слово DISTINCT .

Использование ключевого слова TOP предписывает выводить не все записи

итогового набора, а только n первых. Можно выбирать не фиксированное

количество записей, а определенный процент от всех строк – для этого

указывается ключевое слово PERCENT

Список выборки Список выборки может содержать включать следующие один или нескольк о элементов: | ИмяПоля | Выражение [ AS Псевдоним], [... n ].  Для выборки всех полей из таблицы в списке выборки необходимо указать звездочку (*).  Ключевое слово AS позволяет заменить в итоговом наборе данных обычные имена полей псевдонимами.

Список выборки

Список выборки может содержать включать следующие один или нескольк о

элементов:

| ИмяПоля | Выражение [ AS Псевдоним], [... n ].

Для выборки всех полей из таблицы в списке выборки необходимо указать

звездочку (*).

Ключевое слово AS позволяет заменить в итоговом наборе данных обычные

имена полей псевдонимами.

 Удобочитаемость получаемого набора данных может быть повышена путем его сортировки в возрастающем или убывающем порядке. Сортировка возможна по имени поля (даже если оно и не указано в списке выборки), по псевдониму или по позиции в списке выборки, которые указываются в разделе ORDER BY ИмяПоля [,… n ] [ ASC | DESC ].  По умолчанию сортировка осуществляется по возрастанию, что соответствует зарезервированному слову ASC , которое может опускаться, для сортировки в убывающем порядке указывается – DESC .  Для отображения, рассмотренного ранее, списка сотрудников упорядоченного в алфавитном порядке необходимо дополнить запрос: SELECT LastName+’ ‘+Substring(FirstName,1,1)+’.’ AS [ С отрудник],  ContactID FROM Person.Contact ORDER BY [Сотрудник] Условие отбора  Условие отбора определяет критерий отбора записей, включаемых в итоговый набор. В результат будут включены только те строки, которые соответствуют наложенным условиям.  Условия могут объединяться и с помощью логических операндов AND , OR и NOT

Удобочитаемость получаемого набора данных может быть повышена путем

его сортировки в возрастающем или убывающем порядке. Сортировка возможна

по имени поля (даже если оно и не указано в списке выборки), по псевдониму

или по позиции в списке выборки, которые указываются в разделе ORDER BY ИмяПоля [,… n ] [ ASC | DESC ].

По умолчанию сортировка осуществляется по возрастанию, что соответствует

зарезервированному слову ASC , которое может опускаться, для сортировки в

убывающем порядке указывается – DESC .

Для отображения, рассмотренного ранее, списка сотрудников

упорядоченного в алфавитном порядке необходимо дополнить запрос:

SELECT LastName+’ ‘+Substring(FirstName,1,1)+’.’ AS [ С отрудник],

ContactID

FROM Person.Contact

ORDER BY [Сотрудник]

Условие отбора

Условие отбора определяет критерий отбора записей, включаемых в

итоговый набор. В результат будут включены только те строки, которые

соответствуют наложенным условиям. Условия могут объединяться и с

помощью логических операндов AND , OR и NOT

 Эти два оператора сравнения могут быть заменены одним логическим оператором BETWEEN , с помощью которого можно получить ответ на вопрос, лежит ли величина в указанном диапазоне .  Для поиска по шаблону символьных строк используется логический о ператор  LIKE . В шаблоне могут использоваться следующие универсальные символы: % – подразумевает любую строку, состоящую из 0 и более символов; _ – ровно один символ; [ ] – любой символ из заданного множества (например, [ adfh ]) или диапазона (например, [0-9]), [^] – любой символ, не попадающий в заданный диапазон или множество.  Для определения соответствия выражения одному из перечисленных в заданном списке значений применяется логический оператор IN . Данный оператор всегда может быть записан и в виде группы условий, объединенных операндом OR .  Например, чтобы вывести имена сотрудников и их должностей, проживающих за пределами США, необходимо выполнить запрос: SELECT LastName, JobTitle FROM HumanResources.vEmployee WHERE CountryRegionName Not LIKE ‘%United States%’

Эти два оператора сравнения могут быть заменены одним логическим

оператором BETWEEN , с помощью которого можно получить ответ на вопрос,

лежит ли величина в указанном диапазоне .

Для поиска по шаблону символьных строк используется логический

о ператор LIKE .

В шаблоне могут использоваться следующие универсальные символы:

% – подразумевает любую строку, состоящую из 0 и более символов;

_ – ровно один символ;

[ ] – любой символ из заданного множества (например, [ adfh ]) или диапазона (например, [0-9]),

[^] – любой символ, не попадающий в заданный диапазон или множество.

Для определения соответствия выражения одному из перечисленных в

заданном списке значений применяется логический оператор IN . Данный

оператор всегда может быть записан и в виде группы условий, объединенных

операндом OR .

Например, чтобы вывести имена сотрудников и их должностей,

проживающих за пределами США, необходимо выполнить запрос:

SELECT LastName, JobTitle

FROM HumanResources.vEmployee

WHERE CountryRegionName Not LIKE ‘%United States%’

 Однако в список значений нельзя включать неопределенное значение NULL , для работы с такими значениями используется функция выборки IS NULL . Например, следующий запрос возвращает список товаров, у которых не указан цвет: SELECT [Name] FROM Production.Product WHERE Color IS NULL Выборка данных из нескольких таблиц  Такая выборка данных предполагает соединение нескольких таблиц для получения единого набора результатов, включающих записи и поля каждой таблицы. Соединение позволяет собрать данные, разделенные в процессе нормализации.  Существует три вида соединений: внутреннее, внешнее и перекрестное. Для объединения трех и более таблиц можно применять последовательность соединений.  Для соединения таблиц необходимо раздел FROM дополнить ключевыми словами JOIN , которое определяет соединяемые таблицы и метод соединения, и ON , указывающее общие для таблиц поля.

Однако в список значений нельзя включать неопределенное значение NULL ,

для работы с такими значениями используется функция выборки IS NULL .

Например, следующий запрос возвращает список товаров, у которых не указан

цвет:

SELECT [Name]

FROM Production.Product

WHERE Color IS NULL

Выборка данных из нескольких таблиц

Такая выборка данных предполагает соединение нескольких таблиц для

получения единого набора результатов, включающих записи и поля каждой

таблицы. Соединение позволяет собрать данные, разделенные в процессе

нормализации.

Существует три вида соединений: внутреннее, внешнее и перекрестное. Для

объединения трех и более таблиц можно применять последовательность

соединений.

Для соединения таблиц необходимо раздел FROM дополнить ключевыми

словами JOIN , которое определяет соединяемые таблицы и метод соединения,

и ON , указывающее общие для таблиц поля.

Внутреннее соединение  При таком виде соединения сравниваются значения общих полей двух таблиц, возвращаются только записи, удовлетворяющие критерию связывания в обеих таблицах. Записи, для которых не имеется пары в связанной таблице, в результат не включаются.  При левом соединении в результат будут включены все записи левой таблицы (имя которой расположено слева от JOIN ), независимо от того, есть для них соответствующая запись в правой таблице (имя таблицы расположено справа от JOIN ) или нет.  При правом соединении (ключевое слово RIGHT JOIN ) в результат включаются  все записи правой таблицы, независимо от того, есть для них соответствующая строка в левой таблице.

Внутреннее соединение

При таком виде соединения сравниваются значения общих полей двух

таблиц, возвращаются только записи, удовлетворяющие критерию

связывания в обеих таблицах. Записи, для которых не имеется пары в

связанной таблице, в результат не включаются.

При левом соединении в результат будут включены все записи левой таблицы

(имя которой расположено слева от JOIN ), независимо от того, есть для них

соответствующая запись в правой таблице (имя таблицы расположено справа от

JOIN ) или нет.

При правом соединении (ключевое слово RIGHT JOIN ) в результат

включаются все записи правой таблицы, независимо от того, есть для них

соответствующая строка в левой таблице.

 Перекрестные соединения  При таком соединении выводятся все комбинации записей таблиц, при этом не требуется указание совпадающих значений полей, поэтому условие ON опускается.  Оператор UNION объединяет результаты двух и более операторов SELECT и применяется в случае, когда данные нельзя получить при помощи одного запроса. SELECT ... UNION [ ALL ] SELECT ... [,...]  Имена полей итогового набора берутся из первого запроса, поэтому создание псевдонимов полей выполняется в нем. Для получения отсортированного набора данных раздел ORDER BY указывается после последнего оператора SELECT .

Перекрестные соединения

При таком соединении выводятся все комбинации записей таблиц, при этом

не требуется указание совпадающих значений полей, поэтому условие ON

опускается.

Оператор UNION объединяет результаты двух и более операторов SELECT

и применяется в случае, когда данные нельзя получить при помощи одного

запроса.

SELECT ...

UNION [ ALL ]

SELECT ...

[,...]

Имена полей итогового набора берутся из первого запроса, поэтому создание

псевдонимов полей выполняется в нем. Для получения отсортированного

набора данных раздел ORDER BY указывается после последнего оператора

SELECT .

 Подзапрос – это оператор SELECT , включенный в другие запросы .  Существует два вида подзапросов.  Вложенные  подзапросы – возвращают единственное значение либо список значений. Вложенный запрос выполняется один раз, а затем результирующее значение используется во внешнем запросе.  Связанные подзапросы – используются данные внешнего запроса, причем связанный запрос выполняется один раз для каждой записи внешнего запроса.  Для группировки записей по полям или выражениям применяется раздел GROUP BY оператора SELECT , что позволяет применять для каждой группы функции агрегирования. Синтаксис данной части следующий: [ GROUP BY ВыражениеГруппировки, [... n ]]  При группировке записей допускается также использование раздела WHERE , в  этом случае группируются записи, удовлетворяющие этому условию. Раздел WHERE позволяет определить, какие записи должны подвергнуться группировке, а раздел HAVING – какие группы должны быть выведены в итоговый набор данных. Ключевое слово HAVING можно использовать только в разделе GROUP BY .

Подзапрос – это оператор SELECT , включенный в другие запросы .

Существует два вида подзапросов.

Вложенные подзапросы – возвращают единственное значение либо список

значений. Вложенный запрос выполняется один раз, а затем результирующее

значение используется во внешнем запросе.

Связанные подзапросы – используются данные внешнего запроса, причем

связанный запрос выполняется один раз для каждой записи внешнего запроса.

Для группировки записей по полям или выражениям применяется раздел

GROUP BY оператора SELECT , что позволяет применять для каждой группы

функции агрегирования.

Синтаксис данной части следующий:

[ GROUP BY ВыражениеГруппировки, [... n ]]

При группировке записей допускается также использование раздела WHERE ,

в этом случае группируются записи, удовлетворяющие этому условию.

Раздел WHERE позволяет определить, какие записи должны подвергнуться

группировке, а раздел HAVING – какие группы должны быть выведены в

итоговый набор данных. Ключевое слово HAVING можно использовать только в

разделе GROUP BY .