- •Вопрос 34
- •Вопрос 33
- •Вопрос 32 Целостность данных
- •Создание триггеров
- •Вопрос 31 Понятие функции пользователя
- •Функции Scalar
- •Функции Inline
- •Функции Multi-statement
- •Встроенные функции
- •Математические функции
- •Строковые функции
- •Функции для работы с датой и временем
- •Вопрос 30 Хранимые процедуры в среде ms sql Server
- •Типы хранимых процедур
- •Создание, изменение и удаление хранимых процедур
- •Вопрос 29 28 Определение представления
- •Обновление данных в представлениях
- •Преимущества и недостатки представлений
- •Независимость от данных
- •Актуальность
- •Ограниченные возможности обновления
- •Структурные ограничения
- •Снижение производительности
- •Вопрос 27
- •Содержание
- •Определение[править | править исходный текст]
- •Пример[править | править исходный текст]
- •Поддержание ссылочной целостности в бд[править | править исходный текст] Причины нарушений[править | править исходный текст]
- •Пустые внешние ключи[править | править исходный текст]
- •Ссылочная целостность на триггерах[править | править исходный текст]
- •Ссылочная целостность на внешних ключах[править | править исходный текст]
- •Вопрос 26 Использование подзапросов, возвращающих множество значений
- •Использование операций in и not in
- •Использование ключевых слов any и all
- •Использование операций exists и not exists
- •Вопрос 25 Использование подзапросов, возвращающих единичное значение
- •Вопрос 24 Понятие подзапроса
- •Вопрос 23
- •Вопрос 22 Агрегатные функции MySql
- •Среднее значение
- •Сортировка агрегатных значений
- •Подсчет количества товара для каждого раздела каталога
- •Вопрос 20 Предложение select
- •Предложение from
- •Предложение where
- •Сравнение
- •Диапазон
- •Принадлежность множеству
- •Соответствие шаблону
- •Значение null
- •Предложение order by
Вопрос 24 Понятие подзапроса
Часто невозможно решить поставленную задачу путем одного запроса. Это особенно актуально, когда при использовании условия поиска в предложении WHERE значение, с которым надо сравнивать, заранее не определено и должно быть вычислено в момент выполнения оператора SELECT. В таком случае приходят на помощь законченные операторы SELECT, внедренные в тело другого оператора SELECT. Внутренний подзапрос представляет собой также оператор SELECT, а кодирование его предложений подчиняется тем же правилам, что и основного оператора SELECT. Внешний оператор SELECT использует результат выполнения внутреннего оператора для определения содержания окончательного результата всей операции. Внутренние запросы могут быть помещены непосредственно после оператора сравнения ( =, <, >, <=, >=, <> ) в предложения WHERE и HAVING внешнего оператора SELECT – они получают название подзапросов или вложенных запросов. Кроме того, внутренние операторы SELECT могут применяться в операторах INSERT, UPDATE и DELETE.
Подзапрос – это инструмент создания временной таблицы, содержимое которой извлекается и обрабатывается внешним оператором. Текст подзапроса должен быть заключен в скобки. К подзапросам применяются следующие правила и ограничения:
фраза ORDER BY не используется, хотя и может присутствовать во внешнем подзапросе ;
список в предложении SELECT состоит из имен отдельных столбцов или составленных из них выражений – за исключением случая, когда в подзапросе присутствует ключевое слово EXISTS ;
по умолчанию имена столбцов в подзапросе относятся к таблице, имя которой указано в предложении FROM. Однако допускается ссылка и на столбцы таблицы, указанной во фразе FROM внешнего запроса, для чего применяются квалифицированные имена столбцов (т.е. с указанием таблицы);
если подзапрос является одним из двух операндов, участвующих в операции сравнения, то запрос должен указываться в правой части этой операции.
Существует два типа подзапросов:
Скалярный подзапрос возвращает единственное значение. В принципе, он может использоваться везде, где требуется указать единственное значение.
Табличный подзапрос возвращает множество значений, т.е. значения одного или нескольких столбцов таблицы, размещенные в более чем одной строке. Он возможен везде, где допускается наличие таблицы.
Вопрос 23
HAVING-наложение ограничения на группировку записей.
если в результате нужно выдавать агрегацию не по всем группам а только по тем из них, которые отвечают некоторым условиям после предложения group by указывают having <условие поиска>, где <условие поиска> укаказывается по темже правилам, что и условия поиска where. За важным исключением:в условии поиска предложения having можно указывать агрегатные функции.
select togroup, count (togroup) as colstud
from student
group by togroup
having (count (togroup)>=2) //в каких группах более чем два студента
использование функции UPPER
UPPER <значение> используется для преобразования букв символьных значений содержимого столбца и результата выражения к заглавным. Обычно эта функции используется в условиях поиск, когда необходимо игнорировать возможную разницу в регистре букв.
Эта функция может фигурировать как списке столбцов результирующего набора (после select) так и в условии поиска в предложении where.
Lower() -конвернтирует символы в маленькие буквы.
TRIM([LEADING|TRAILING|BOTH] [trimmed_char] FROM column_reference)-удаляет левые, правые, по умолчанию пробелы.
CAST (<значение> AS <тип данных>)-иногда необходимо трактовать значение одного типа как значение другого типа. Например использовать числовое значение как символьную строку или наоборот. Фунукция CAST делает копию значения, преобразуя его к указоному типу данных.При этом не следует забывать о множестве типов данных.
select cast(name as INTEGER)
from "group"
select cast(Date_Open as character(10)) as datestr
from ":DBdemos:clients"
EXTRACT(extract_field FROM column_reference) возвращает поле из даты (типа date или timestate)
extract_field-может быть годом днем месяцем часом минутой или секундой
select Extract( YEAR from Date_Open ) as YY
from ":DBdemos:clients" //выбираем из даты год.
Использование подзапросов.
Часто невозможно рештить поставленую задачу путем использования одного запроса. Это особенно актуально в тех случаях, когда при использовании условия поиска в предложении where с параметрема <Сравнимаемое значение><оператор><значение, с которым надо сравнить> Значение с которым надо сравнить заранее неопределено и должно быть выполнено в момент выполнения опреатора selsect