Управление данными, синергия 3 семестр, шпаргалка, краткое содержание учебника. Управление данными 3 сем. Управление данными
Скачать 0.55 Mb.
|
Построение запросов на выборку данных Предложение SELECT - производит выборки данных из таблиц и преобразовывает к нужному виду полученные результаты. Формат: SELECT [ALL | DISTINCT ] {*|[имя_столбца [AS новое_имя]]} [,...n] FROM имя_таблицы [[AS] псевдоним] [,...n] [WHERE <условие_поиска>] [GROUP BY имя_столбца [,...n]] [HAVING <критерии выбора групп>] [ORDER BY имя_столбца [,...n]] Если имя поля сод. Пробелы или разделители, его заключить в квадратные скобки. Символом * можно выбрать все поля, вместо имени поля применить выражение из неск. имен. Если в ряде таблиц есть одноименные поля, то в списке полей используется полная спецификация поля (Имя_таблицы.Имя_поля). Предложение FROM - задает имена таблиц и просмотров, которые содержат поля, перечисленные в операторе SELECT. Последовательность обработки оператора SELECT: FROM - определяются имена используемых таблиц. WHERE - фильтрация строк объекта в соответствии с заданными условиями. GROUP BY - образуются группы строк, имеющих одно и то же значение в указанном столбце. HAVING - фильтрация групп строк объекта в соответствии с указанным условием. SELECT - устанавливается, какие столбцы должны присутствовать в выходных данных. ORDER BY - определяется упорядоченность результатов выполнения операторов. Только SELECT и FROM явл. обязательными. Предикат ALL задает включение в выходной набор всех дубликатов, отобранных по критерию WHERE. Нет необходимости указывать ALL явно, значение действует по умолчанию. Пример (составить список всех фирм): SELECT ALL Клиент.Фирма FROM Клиент Или (что эквивалентно) SELECT Клиент.Фирма FROM Клиент Предикат DISTINCT применяется в тех случаях, когда требуется отбросить блоки данных, содержащие дублирующие записи в выбранных полях. Пример: SELECT DISTINCT Клиент.Фирма FROM Клиент Предложение WHERE определяет, какие блоки данныхиз списка FROM таблиц будут в результате запроса. За ключевым словом следуют условия поиска (предикаты): Сравнение: сравниваются результаты вычисления одного выражения с результатами вычисления другого. Операторы: = равенство; < меньше; > больше; <= меньше или равно; >= больше или равно; <> не равно. Более сложные предикаты могут быть построены с помощью логических операторов AND, OR, NOT (NOT выполняются до AND и OR, AND до OR), а также скобок для определения порядка вычисления выражения. Пример: SELECT Название, Цена FROM Товар WHERE Цена>=100 And Цена<=150 Диапазон: проверяется, попадает ли результат вычисления выражения в заданный диапазон значений. Оператор BETWEEN исп. для поиска значения внутри некотрого интервала, определяемого своими мин и макс значениями. NOT BETWEEN, чтобы значение лежало вне границ диапазона. Пример: SELECT Название, Цена FROM Товар WHERE Цена Between 100 And 150 Принадлежность множеству: проверяется, принадлежит ли результат вычислений выражения заданному множеству значений. Оператор IN для сравнения некоторого значения со списком заданных значений, при это проверяется, соответствует ли результат вычисления выражения одному из значений в предоставленном списке. NOT IN для отбора любых значений, кроме тех, которые указаны в представленном списке. Пример: SELECT Фамилия, ГородКлиента FROM Клиент WHERE ГородКлиента Not in («Москва»,»Самара») Соответствие шаблону: проверяется, отвечает ли некоторое строковое значение заданному шаблону. Оператор LIKE - выполнение сравнения выражения с заданным шаблоном, в котором допускается использование символов-заменителей: % (вместо может быть подставлено любое кол-во произвольных символов), _ (заменяет один символ строки), [] (вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях), [^] (вместо символа строки будут подставлены все символы, кроме указанных в ограничителях). Пример (найти клиентов, в номере тел. кот. вторая цифра 2,3 или 4): SELECT Клиент.Фамилия, Клиент.Телефон FROM Клиент WHERE Клиент.Телефон Like «_[2-4]%» (у кот. в фамилии встречается слог “ро”): SELECT Клиент.Фамилия FROM Клиент WHERE Клиент.Фамилия Like «%ро%» Значение NULL: проверяется, содержит ли данный столбец определитель NULL (неизвестное значение). Оператор IS NULL - для сравнения текущего значения со значением NULL – специальным значением, указывающим на отсутствие любого значения. NULL – это не то же самое, что знак пробела (пробел – допустимый символ) или ноль (0 - допустимое число). NULL отличается и от строки нулевой длины (пустой строки). IS NOT NULL - для проверки присутствия значения в поле. Пример (найти сотрудников, у которых нет телефона): SELECT Фамилия, Телефон FROM Клиент WHERE Телефон Is Null Предложение ORDER BY (в операторе SELECT) сортирует данные выходного набора в заданной последовательности (обычно строки в результирующей таблице SQL-запроса никак не упорядочены). Способ сортировки задается ключевым словом следом за названием поля, по кот. выполняется сортировка. По умолчанию сортировка по возрастанию (явно - ключевым словом ASC, в обратной последовательности - после имени поля ключевое слово DESC). Фраза ORDER BY всегда последний элемент в операторе SELECT. Пример (список клиентов в алф. порядке): SELECT Клиент.Фамилия, Клиент.Фирма FROM Клиент ORDER BY Клиент.Фамилия Пример: SELECT Клиент.Фирма, Клиент.Фамилия FROM Клиент ORDER BY Клиент.Фирма, Клиент.Фамилия DESC Вычисления и подведение итогов в запросах Построение вычисляемых полей. Для создания вычисляемого (производного) поля в списке SELECT нужно указать некоторое выражение языка. В выражениях применяются арифметические операции +, -, :, *, а также встроенные функции языка. AS - для задания имени столбцов результирующей таблицы. Использование итоговых функций. С их помощью можно получить ряд обобщающих статистических сведений о множестве отобранных значений выходного набора. Только в списке предложения SELECT и составе предложения HAVING. Итоговые функции: Count (Выражение) - определяет количество записей в выходном наборе SQL-запроса. Min/Max (Выражение) - определяют наименьшее и наибольшее из множества значений в некотором поле запроса; Avg (Выражение) - эта функция позволяет рассчитать среднее значение множества значений, хранящихся в определенном поле отобранных запросом записей (арифметическое среднее). Sum (Выражение) - вычисляет сумму множества значений, содержащихся в определенном поле отобранных запросом записей. Чаще всего в качестве выражения выступают имена столбцов. COUNT, MIN и MAX применимы к числовым и к нечисловым полям, SUM и AVG - только в случае числовых полей, за исключением COUNT(*) - подсчет всех строк в результирующей таблице, независисо от того, содержатся там пустые, дублирующиеся или любые другие значения. DISTINCT - перед именем столбца для исключения дублирующихся значений (для SUM и AVG). Пример (опред. первое по алфавиту название товара): SELECT Min(Товар.Название) AS Min_Название FROM Товар Предложение GROUP BY (в операторе SELECT) - группирующий запрос, в нем группируются данные, полученные в результате выполнения операции SELECT, для каждой отдельной группы создается единственная сумарная строка. Если есть GROUP BY, каждый элемент списка SELECT должен иметь единственное значение для всей группы и только типы элементов: имена полей, итоговые функции, константы и выражения, включающие комбинации перечисленных элементов. Пример (на какую сумму был продан товар каж. наименования): SELECT Товар.Название, Sum(Товар.Цена*Сделка.Количество) AS Стоимость FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара GROUP BY Товар.Название Пример (суммарная стоимость каж. товара 1го сорта за каж. мес.): SELECT Товар.Название, Month(Сделка.Дата) AS Месяц, Sum(Товар.Цена*Сделка.Количество) AS Стоимость FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара WHERE Товар.Сорт=«Первый» GROUP BY Товар.Название, Month(Сделка.Дата) |