Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Влияние NULL-значений в функции AVG.




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

Функция AVG вычисляет среднее значение всех известных значений множества элементов, то есть эта функция подсчитывает сумму известных значений и делит ее на количество этих значений, а не на общее количество значений, среди которых могут быть NULL-значения. Если столбец состоит только из пустых значений, то функция AVG также возвратит NULL.

Условные операторы при отсутствии пустых значений возвращают либо TRUE (истина), либо FALSE (ложь). Если же в столбце присутствуют пустые значения, то может быть возвращено и третье значение: UNKNOWN (неизвестно).

процесс упорядочения выходных полей в SQL.
Как уже отмечалось, записи в таблицах реляционной базы данных не упорядочены. Однако данные, выводимые в резуль­тате выполнения запроса, могут быть упорядочены. Для этого используется оператор ORDER BY, который позволяет упорядо­чивать выводимые записи в соответствии со значениями одного или нескольких выбранных столбцов. При этом можно задать возрастающую (ASC) или убывающую (DESC) последователь­ность сортировки для каждого из столбцов. По умолчанию при­нята возрастающая последовательность сортировки.

Запрос, позволяющий выбрать все данные из таблицы пред­метов обучения SUBJECT с упорядочением по наименованиям предметов, выглядит следующим образом:

SELECT *

FROM SUBJECT

ORDER BY SUBJJMAME;

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

SELECT *

FROM SUBJECT

ORDER BY SUBJ NAME DESC;

Можно упорядочить выводимый список предметов обуче­ния по значениям семестров, а внутри семестров — по наимено­ваниям предметов.

SELECT *

FROM SUBJECT

ORDER BY SEMESTER , SUB J_NAME ;

Предложение ORDER BY может использоваться с GROUP BY для упорядочения групп записей. При этом оператор ORDER BY в за­просе всегда должен быть последним.

SELECTSUBJ_NAME, SEMESTER, MAX(HOUR| FROM SUBJECT

GROUP BY SEMESTER, SUBJ_NAME ORDER BY SEMESTER;

При упорядочении вместо наименований столбцов можно указывать их номера, имея, однако, ввиду, что в данном случае это номера столбцов, указанные при определении выходных данных в запросе, а не номера столбцов в таблице. Полем с но­мером 1 является первое поле, указанное в предложении ORDER BY — независимо от его расположения в таблице.

SELECT SUBJ_ID, SEMESTER FROM SUBJECT ORDER BY 2 DESC;

В этом запросе выводимые записи будут упорядочены по ПОЛЮ SEMESTR.

Если в поле, которое используется для упорядочения, су­ществуют NULL-значения, то все они размещаются в конце или предшествуют всем остальным значениям этого поля.

 


Охарактеризуйте вложенные подзапросы, формирование связанных подзапросов в SQL.

 1) Вложенные подзапросы

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

Виды условий поиска:
• Сравнение с результатом вложенного запроса (=, <>, <, <=, >, >=)
• Проверка на принадлежность результатам подзапроса (IN)
• Проверка на существование (EXISTS)
• Многократное (количественное) сравнение (ANY, ALL)

Примечания по вложенным запросам:
• Подзапрос должен выбирать только один столбец (за исключением подзапроса с предикатом EXISTS), и тип данных его результата должен соответствовать типу данных значения, указанному в предикате.
• В ряде случаев можно использовать ключевое слово DISTINCT для гарантии получения единственного значения.
• Во вложенном запросе нельзя включать раздел ORDERBY и UNION.
• Подзапрос может находиться и лева и справа от условия поиска.
• В подзапросах могут использоваться функции агрегирования без раздела GROUPBY, которые автоматически выдают специальное значение для любого количества строк, специальный предикат IN, а также выражения, основанные на столбцах.
• По возможности следует вместо подзапросов использовать соединение таблиц JOIN.

2) Формирование связанных подзапросов в SQL

В SQL можно создавать подзапросы со ссылкой на таблицу из внешнего запроса. В этом случае подзапрос выполняется многократно, по одному разу для каждой строки таблицы из внешнего запроса. Поэтому важно, чтобы подзапрос использовал индекс. Подзапрос может обращаться к той же таблице, чтоб и внешний. Если внешний запрос возвращает относительно небольшое число строк, то связанный подзапрос будет работать быстрее несвязанного. Если подзапрос возвращает небольшое число строк, то связанный запрос выполнится медленнее несвязанного.











Охарактеризуйте вложенные подзапросы, назначение оператора EXISTS.

 Вложенный запрос – это запрос, который находится внутри другого SQL запроса и встроен внутри условного оператора WHERE. Данный вид запросов используется для возвращения данных, которые будут использоваться в основном запросе, как условие для ограничения получаемых данных.

Пример:

SELECT имя_колонки [, имя_колонки2 ]

FROM таблица1 [, таблица2 ]

WHERE имя_колонки ОПЕРАТОР

(SELECT имя_колонки [, имя_колонки2 ]

FROM таблица1 [, таблица2 ]

[WHERE])

 

EXISTSпринимает значение TRUE, если подзапрос содержит любое количество строк, иначе его значение равно FALSE.

Например, мы можем решить, извлекать ли нам некоторые данные из таблицы Заказчиков если, и только если, один или более заказчиков в этой таблице находятся в Орша:

 

 

SELECT cnum, cname, city

             FROM Customers

             WHERE EXISTS

( SELECT *

                     FROM Customers

                     WHERE city = “Орша” );

 

 

Охарактеризуйте вложенные подзапросы, назначение оператора UNION, внешнее объединение.

 

 Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT или других предложений, использующих WHERE фразу. Вложенный подзапрос создан для того, чтобы при отборе строк таблицы, сформированной основным запросом, можно было использовать данные из других таблиц.

Пример:

SELECT имя_колонки [, имя_колонки2 ]

FROM таблица1 [, таблица2 ]

WHERE имя_колонки ОПЕРАТОР

(SELECT имя_колонки [, имя_колонки2 ]

FROM таблица1 [, таблица2 ]

[WHERE])

 

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

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

 

<запрос1>UNION[ALL]<запрос2>UNION[ALL]<запрос3>.....;

внешнее объединение - OUTER JOIN.
Такое объединение вернет данные из обеих таблиц (совпадающие по условию объединения) ПЛЮС дополнит выборку оставшимися данными из внешней таблицы, которые по условию не подходят, заполнив недостающие данные значением NULL.

 

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 187.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...