Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка готовая(курсовая).doc
Скачиваний:
84
Добавлен:
27.03.2016
Размер:
908.29 Кб
Скачать

2. Устранение избыточных, данных.

Если в выходных данных запроса требуется исключить повторяющиеся значения, можно в команде SELECTиспользовать аргументDISTINCT(отличие).

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

SELECT DISTINCT E_BORN FROM Employees

3. Соединение таблиц.

Одна из наиболее важных особенностей запросов SQL- это их способность определять связи между многочисленными таблицами и выводить из них любую сводную информацию с помощью одной команды.

Операция такого рода называется соединением (join)таблиц и является одной из самых мощных операций для реляционных баз данных.

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

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

В запросе, который выполняет соединение, имена таблиц через запятую перечисляются в предложении FROM. При этом полное имя столбца таблицы фактически состоит из имени таблицы, после которого стоит точка и затем имя столбца, например:

Employees.E_ID Employees.E_NAME

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

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

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

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

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

Функции агрегирования (или функции «вычисления результатов») позволяют строить еще более мощные запросы, включающие элементы не только выборки, но уже и некоторой обработки информации, такой как, например, вычисление среднего или максимального значения. Агрегатные функции вставляются в предложение SELECT так же, как и имена столбцов. При этом, аргументом для каждой из этих функций является совокупность значений одного столбца (поля) некоторой таблицы.

В SQL к функциям агрегирования относятся:

  • COUNT- определяет количество строк или значений поля, которые выбраны в результате выполнения запроса и не являются NULL-значениями;

  • SUM- вычисляет арифметическую сумму всех выбранных значений, содержащихся в столбце-аргументе;

  • AVG- вычисляет среднее значение всех выбранных значений, содержащихся в столбце-аргументе;

  • МАХ - вычисляет наибольшее из всех выбранных значений, содержащихся в столбце-аргументе;

  • MIN- вычисляет наименьшее из всех выбранных значений, содержащихся в столбце-аргументе.

Аргументам всех агрегатных функций (кроме COUNT(*) ) может предшествовать ключевое словоDISTINCTдля исключения из аргумента повторяющихся значений.

Пример вывести общее количество заказов:

SELECT SUM(O_ID) FROM Orders