Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры БД.docx
Скачиваний:
16
Добавлен:
26.09.2019
Размер:
592.64 Кб
Скачать
  1. Назначение и общая структура оператора Select в sql. Общая схема выполнения оператора Select. Примеры.

Поиск и извлечение информации из таблиц базы данных выполняет оператор SELECT. Основой для оператора SELECT являются выражения реляционного исчисления. Результат запроса представляет собой набор кортежей – таблицу, построенную путем извлечения и обработки данных из строк таблиц, участвующих в запросе. Параметрами оператора задаются выражения, определяющие столбцы результирующей таблицы, исходные таблицы, способы соединения и фильтрации и строк. В первом приближении оператор SELECT имеет вид:

Список вывода:

* - все столбцы из всех строк, участвующих в запросе.

<Имя таблицы>.* - столбцы из этой таблицы

<Имя столбца таблицы>

<имя столбца>=<Выражение>

<выражение>[[AS]<новое имя столбца>]

Сохранение результата: SELECT Distinct State INTO States FROM authors

Select[цена]*[количество]AS[Стоимость], ‘руб.’AS[Единица изм.] From...

  1. Элементы списка вывода в операторе Select Transact sql. Назначение и использование параметра Order by. Примеры.

Список вывода:

* - все столбцы из всех строк, участвующих в запросе.

<Имя таблицы>.* - столбцы из этой таблицы

<Имя столбца таблицы>

<имя столбца>=<Выражение>

<выражение>[[AS]<новое имя столбца>]

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

ORDER BY – порядок сортировки строк результата

-выражения;

-имена;

-Номера столбцов.

SELECT State, Count(*) AS [Число авторов] FROM authors ORDER BY count(*) DESC

Последний параметр оператора SELECT – ORDER BY задает порядок сортировки строк результата. Элементами ORDER BY могут быть выражения, имена или номера столбцов в списке результата запроса. Сортировка выполняется ступенчато, последовательно по элементам, перечисленным в ORDER BY. Сначала строки упорядочиваются по значениям первого элемента, заданного в ORDER BY. Затем строки с одинаковым значением первого элемента упорядочиваются по второму и т.д. Для задания порядка в каждом элементе сортировки используются опции: ASC – сортировка по возрастанию значения элемента, DESC – по убыванию. Например, для расчета числа авторов в штатах и сортировки штатов по убыванию числа авторов можно применить оператор

SELECT STATE As [Штат], count(*) As [Число авторов] FROM authors GROUP BY STATE ORDER BY count(*) DESC

  1. Типы табличных источников в операторах управления данными в sql. Способы соединения строк в параметре From. Примеры соединений.

Параметр FROM < список используемых таблиц базы > определяет источники данных, используемые для извлечения информации. Стандарт SQL предусматривает не только перечисление используемых в запросе таблиц, но и определяет способы связывания (сцепления) их строк.

Спецификация таблиц, участвующих в запросе, задается следующими вариантами:

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

<таблица> [, . . . . . .] ; - Оператор SELECT * FROM authors, titleauthor, titles заставит сцепить каждую строку таблицы authors с каждой строкой таблицы titleauthor, а затем их с каждой строкой таблицы titles и вывести все столбцы этих трех таблиц;

2) заданием таблиц одновременно с указанием способа сцепления их строк:

• < таблица > [CROSS JOIN < таблица > . . . . . . .] - Данный вариант эквивалентен предыдущему и выполняет сцепление каждой строки первой таблицы с каждой строкой второй и т.д. ;

• < таблица 1> [INNER JOIN< таблица 2> ON<условие соединения строк>] - Здесь ключевыми словами INNER JOIN задается внутреннее соединение строк, приводящее к сцеплению только тех строк первой таблицы с теми строками второй, для которых истинно <условие соединения строк>. Условие соединения задается логическим выражением, в котором участвуют поля соединяемых таблиц.

Пример внутреннего соединения

Select * From Titles INNER JOIN Sales on Titles.Title_id = Sales .Title_id

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

LEFT

• < таблица 1> [RIGHT [OUTER] JOIN < таблица 2>

FULL

ON <условие соединения строк> . . . .]

LEFT [OUTER] JOIN − левое внешнее соединение. Строки, соединенные по правилу внутреннего соединения, дополняются строками первой (левой) таблицы, не соединяющимися со строками второй таблицы, т.е. не имеющего ни одной строки во второй таблице, для которой истинно <условие соединения строк>. При этом в полях дополняющих строк из правой таблицы выводятся значения NULL. Таким образом, при левом соединении все строки из левой таблицы обязательно включаются в результат. Те из них, которым по условию соединения не находятся соответствующие строки правого источника, однократно включаются в результат со значением NULL в полях правой таблицы.

Пример левого внешнего соединения

Select * From Titles LEFT JOIN Sales on Titles.Title_id = Sales .Title_id

Запрос выведет все сведения о книгах и их продажах, включая и те, по которым не было существовали продаж

RIGHT JOIN − правое внешнее соединение, выполняется аналогично левому соединению, только таблицы меняются ролями. В результат запроса включаются строки внутреннего соединения, дополненные строками правой таблицы, не соединившиеся по условию со строками левой таблицы.

Пример правого внешнего соединения

Select * From Sales RIGHT JOIN Titles on Titles.Title_id = Sales .Title_id

Запрос выведет все сведения о книгах и их продажах, включая и те, по которым не было продаж

FULL JOIN − полное внешнее соединение, создает соединенные строки, являющиеся объединением результатов правого и левого внешнего соединения.

В качестве исходной таблицы в параметре FROM могут использоваться таблицы и представления БД, подзапросы к БД – внутренний оператор SELECT и специальные функции, создающие наборы строк. Синтаксис определения табличного источника в параметре FROM имеет следующие варианты записи:

− <имя таблицы> [[AS] <алиас>]. Здесь алиас – новое имя таблицы, действующее только в пределах данного оператора. Если для таблицы в данном запросе задан алиас, то действительное имя таблицы не должно использоваться ни в каком другом параметре данного оператора. Оно повсюду должно заменяться алиасом. Использование алиаса служит двум целям: сокращению имени таблицы в тексте запроса и неоднократному использованию одной таблицы в запросе. Применяя различные алиасы, одну таблицу можно многократно использовать в операторе под разными именами, что эквивалентно созданию дубликатов таблицы перед исполнением запроса;

− другой тип табличного источника – подзапрос – записывается следующим образом: <подзапрос> [AS] <алиас> [(<список из имен столбцов>)]. Здесь <подзапрос> это отдельный оператор SELECT, который создает на время выполнения запроса динамическую таблицу с именем, определяемым алиасом. Опция <список из имен столбцов> используется в подзапросе, если его столбцы в списке вывода определяются выражениями. Например, SELECT a1.* FROM (SELECT au_lname, au_fname, phone FROM authors) AS a1. Здесь а1 – псевдоним подзапроса. Данный запрос просто возвратит результат, сформированный подзапросом;

− <функция набора строк> [[AS] <алиас>].

Функции набора строк используются для обращения к данным, созданным под управлением другой СУБД. Набор таких функций зависит от используемой СУБД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]