
- •Семантическое моделирование данных: er-диаграммы
- •Реляционная модель данных: домены и отношения Общая характеристика реляционной модели данных
- •Типы данных – множество значений, множество операций
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношения Определения и примеры
- •Свойства отношений
- •Первая нормальная форма
- •Реляционная модель данных: целостность
- •Целостность в реляционной модели данных
- •Реляционная модель данных: реляционная алгебра
- •Ограничения на операции
- •Соединение
- •Деление
- •Манипулирование реляционными данными
- •Реляционная модель данных: реляционное исчисление кортежей Реляционное исчисление
- •Исчисление кортежей
- •Реляционная алгебра и реляционное исчисление
- •Проектирование реляционных баз данных на основе принципов нормализации: функциональные зависимости
- •Проектирование реляционных баз данных на основе принципов нормализации: 1nf, 2nf, 3nf, bcnf Нормальная форма
- •Роль нормализации в проектировании реляционных баз данных
- •Нормальные формы
- •Первая нормальная форма (1nf)
- •Вторая нормальная форма (2nf)
- •Третья нормальная форма (3nf)
- •Нормальная форма Бойса — Кодда (bcnf)
- •Типы данных Transact-sql Типы данных (Transact-sql)
- •Типы данных
- •Преобразования типа Transact-sql Преобразование типов данных (компонент Database Engine)
- •Скалярные выражения Transact-sql
- •Логические выражения Transact-sql Логические операторы (Transact-sql)
- •Табличные выражения Transact-sql Табличные выражения
- •7.2.1. Предложение from
- •7.2.1.1. Соединённые таблицы
- •7.2.1.2. Псевдонимы таблиц и колонок
- •7.2.1.3. Подзапросы
- •7.2.1.4. Табличные функции
- •7.2.2. Предолжение where
- •7.2.3. Предложения group by и having
- •7.2.4. Обработка оконных функций
- •Обобщенные табличные выражения Transact-sql Применение обобщенных табличных выражений
- •With обобщенное_табличное_выражение (Transact-sql)
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию рекурсивных отв
- •Инструкции языка управления потоком Transact-sql Язык управления потоком (Transact-sql)
- •Сценарии и пакеты Transact-sql Сценарии языка Transact-sql
- •Инструкции языка описания данных Transact-sql Инструкции языка описания данных ddl (Transact-sql)
- •Инструкции alter (Transact-sql)
- •Инструкции create (Transact-sql)
- •Инструкции drop (Transact-sql)
- •Ограничения целостности Transact-sql
- •Инструкции языка обработки данных Transact-sql
- •Предложение for (Transact-sql)
- •Инструкции языка контроля доступа к данным Transact-sql
- •Хранимые процедуры Transact-sql Хранимые процедуры (компонент Database Engine)
- •Функции Transact-sql Основные сведения о пользовательских функциях
- •Триггеры Transact-sql Триггеры dml
- •Курсоры Transact-sql Курсоры
- •Использование простого курсора и синтаксиса
- •Индексы Transact-sql Индексы
- •Вторичный индекс path типа данных xml
- •Вторичный индекс value типа данных xml
- •Вторичный индекс property
- •Управление транзакциями в sql Server Инструкции транзакций (Transact-sql)
- •Журналирование в sql Server Журнал транзакций (sql Server)
- •Просмотр журнала ошибок sql Server
- •Управление безопасностью в sql Server
- •Массовый импорт и экспорт данных в sql Server Массовый импорт и экспорт данных (sql Server)
- •Методы массового импорта и экспорта данных
- •Файлы форматирования
- •Метаданные в sql Server Метаданные (службы Master Data Services)
- •Распределенные запросы и распределенные транзакции в sql Server Распределенные запросы
- •Распределенные транзакции Transact-sql
- •Распределенные запросы и распределенные транзакции
Рекомендации по созданию и использованию рекурсивных отв
Определение рекурсивного ОТВ должно содержать по крайней мере два запроса: первый запрос называется закрепленным элементом, а второй запрос называется рекурсивным элементом. Могут быть определены несколько закрепленных элементов и несколько рекурсивных элементов, однако все закрепленные элементы должны быть поставлены перед первым рекурсивным элементом. Все запросы в определении ОТВ являются закрепленными элементами, если только они не ссылаются на само ОТВ.
Закрепленные элементы должны объединяться одним из следующих операторов работы с наборами: UNION ALL, UNION, INTERSECT или EXCEPT. UNION ALL является единственным оператором, который может находиться между последним закрепленным элементом и первым рекурсивным элементом, а также при объединении нескольких рекурсивных элементов.
Типы и количество столбцов закрепленных и рекурсивных элементов должны совпадать.
Предложение FROM рекурсивного элемента должно ссылаться на ОТВ только один раз.
Следующие элементы недопустимы в определении рекурсивного элемента:
SELECT DISTINCT
GROUP BY
HAVING
Скалярный агрегат
TOP
LEFT, RIGHT, OUTER JOIN (INNER JOIN допускается)
Вложенные запросы
Подсказка, применимая к рекурсивной ссылке на ОТВ в определении ОТВ
Все столбцы, возвращаемые рекурсивным ОТВ, могут содержать значения NULL, независимо от того, могут ли иметь значения NULL столбцы, возвращаемые участвующими инструкциями SELECT.
Неправильно составленное рекурсивное ОТВ может привести к бесконечному циклу. Для предотвращения бесконечного цикла можно ограничить количество уровней рекурсии, допустимых для определенной инструкции, с помощью подсказки MAXRECURSION и значения в диапазоне от 0 до 32 767 в предложении OPTION инструкции INSERT, UPDATE, MERGE, DELETE или SELECT. Серверное значение по умолчанию равно 100. Если указано значение 0, ограничения не применяются. В одной инструкции может быть указано только одно значение MAXRECURSION.
Представление, содержащее рекурсивное ОТВ, не может использоваться для обновления данных.
Курсоры могут определяться на запросах при помощи ОТВ. Для рекурсивных ОТВ допустимы только однонаправленные и статические курсоры (курсоры моментального снимка). Если в рекурсивном ОТВ указан курсор другого типа, тип курсора преобразуется в статический.
Инструкции языка управления потоком Transact-sql Язык управления потоком (Transact-sql)
SQL Server 2012
Ключевые слова языка управления потоком Transact-SQL:
BEGIN...END |
RETURN |
break |
THROW |
CONTINUE |
TRY...CATCH |
GOTO label |
WAITFOR |
IF...ELSE |
WHILE |
BEGIN...END (Transact-SQL)
SQL Server 2012
Включает в себя последовательность инструкций языка Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
BEGIN
{
sql_statement | statement_block
}
END
Аргументы
{ sql_statement| statement_block }
Любая допустимая инструкция или группа инструкций языка Transact-SQL, определенная с помощью блока инструкций.
BREAK (Transact-SQL)
SQL Server 2012
Выполняет выход из самого внутреннего цикла в инструкции WHILE или из инструкции IF...ELSE в цикле WHILE. Выполняется любая инструкция, находящаяся сразу после ключевого слова END, обозначающего конец цикла. Часто, но не всегда, ключевое слово BREAK встречается после проверки условия инструкции IF.
CONTINUE (Transact-SQL)
SQL Server 2012
Производит перезапуск цикла WHILE. Никакие инструкции после ключевого слова CONTINUE не выполняются. CONTINUE часто, но не всегда, предваряется проверкой IF. Дополнительные сведения см. в разделе WHILE (Transact-SQL) и Язык управления потоком (Transact-SQL).
GOTO (Transact-SQL)
SQL Server 2012
Переводит поток выполнения на метку. Инструкции языка Transact-SQL или инструкции, следующие за инструкцией GOTO, пропускаются, и выполнение продолжается с метки. Инструкция GOTO и метки могут быть включены в процедуру, пакет или блок инструкций. Инструкции GOTO могут быть вложенными.
Синтаксические обозначения в Transact-SQL
Синтаксис
Define the label:
label:
Alter the execution:
GOTO label
Аргументы
label
Точка, с которой начинается обработка инструкций после перехода на текущую метку с помощью инструкции GOTO. Метки должны соответствовать правилам для идентификаторов. Метка может применяться без инструкции GOTO как метод комментирования.
IF...ELSE (Transact-SQL)
SQL Server 2012
Задает условия для выполнения инструкции Transact-SQL. Инструкция языка Transact-SQL, следующая за ключевым словом IF и его условием выполняется только в том случае, если логическое выражение возвращает TRUE. Необязательное ключевое слово ELSE представляет другую инструкцию языка Transact-SQL, которая выполняется, если условие IF не удовлетворяется и логическое выражение возвращает FALSE.
Синтаксические обозначения Transact-SQL
Синтаксис
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Аргументы
Boolean_expression
Выражение, возвращающее значение TRUE или FALSE. Если логическое выражение содержит инструкцию SELECT, инструкция SELECT должна быть заключена в скобки.
{ sql_statement| statement_block }
Любая инструкция или группа инструкций языка Transact-SQL, указанная с помощью блока инструкций. Без использования блока инструкций условия IF и ELSE могут повлиять на выполнение только одной инструкции языка Transact-SQL.
Для определения блока инструкций используйте ключевые слова потока управления BEGIN и END.
RETURN (Transact-SQL)
SQL Server 2012
Служит для безусловного выхода из запроса или процедуры. Инструкция RETURN выполняется немедленно и полностью и может использоваться в любой точке для выхода из процедуры, пакета или блока инструкций. Инструкции, следующие после RETURN, не выполняются.
Синтаксические обозначения в Transact-SQL
Синтаксис
RETURN [ integer_expression ]
Аргументы
integer_expression
Возвращаемое целочисленное значение. Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению.
THROW (Transact-SQL)
SQL Server 2012
Вызывает исключение и передает выполнение блоку CATCH конструкции TRY…CATCH в SQL Server 2012.
Синтаксические обозначения Transact-SQL
Синтаксис
THROW [ { error_number | @local_variable },
{ message | @local_variable },
{ state | @local_variable } ]
[ ; ]
Аргументы
error_number
Константа или переменная, представляющая исключение. Аргумент error_number имеет тип int, должен иметь значение не меньше 50000 и не больше 2147483647.
message
Строка или переменная, описывающая исключение. Аргумент message имеет тип nvarchar(2048).
state
Константа или переменная со значением в диапазоне от 0 до 255, указывающие состояние, которое должно быть связано с сообщением. Аргумент state имеет тип tinyint.
TRY...CATCH (Transact-SQL)
SQL Server 2012
Реализация обработчика ошибок на языке Transact-SQL похожа на обработку исключений в языках Microsoft Visual C# и Microsoft Visual C++. Группа инструкций на языке Transact-SQL может быть заключена в блок TRY. Если ошибка возникает в блоке TRY, управление передается следующей группе инструкций, заключенных в блок CATCH.
Синтаксические обозначения в Transact-SQL
Синтаксис
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
Аргументы
sql_statement
Любая из инструкций языка Transact-SQL.
statement_block
Любая группа инструкций языка Transact-SQL в пакете или заключенная в блок BEGIN…END.
WAITFOR (Transact-SQL)
SQL Server 2012
Блокирует выполнение пакета, хранимой процедуры или транзакции до наступления указанного времени или интервала времени, либо заданная инструкция изменяет или возвращает, по крайней мере, одну строку.
Синтаксические обозначения в Transact-SQL
Синтаксис
WAITFOR
{
DELAY 'time_to_pass'
| TIME 'time_to_execute'
| [ ( receive_statement ) | ( get_conversation_group_statement ) ]
[ , TIMEOUT timeout ]
}
Аргументы
DELAY
Заданный период времени (не более 24 часов), который должен пройти до выполнения пакета, хранимой процедуры или продолжения транзакции.
'time_to_pass'
Период времени ожидания. Аргумент time_to_pass может быть задан в одном из допустимых форматов для данных типа datetime или в виде локальной переменной. Даты не могут быть указаны, поэтому часть значения datetime, относящаяся к дате, не разрешена.
TIME
Заданное время выполнения пакета, хранимой процедуры или транзакции.
'time_to_execute'
Время, в которое инструкция WAITFOR завершает работу. Аргумент time_to_execute может быть задан в одном из допустимых форматов для данных типаdatetime или в виде локальной переменной. Даты не могут быть указаны, поэтому часть значения datetime, относящаяся к дате, не разрешена.
receive_statement
Допустимая инструкция RECEIVE.
Важно! |
Инструкция WAITFOR с аргументом receive_statement применима только к сообщениям компонента Компонент Service Broker. Дополнительные сведения см. в разделе RECEIVE (Transact-SQL). |
get_conversation_group_statement
Допустимая инструкция GET CONVERSATION GROUP.
Важно! |
Инструкция WAITFOR с аргументом get_conversation_group_statement применима только к сообщениям компонента Компонент Service Broker.. |
TIMEOUT timeout
Указывает период времени ожидания очередного сообщения (в миллисекундах).
Важно! |
Инструкция WAITFOR с аргументом TIMEOUT применима только к сообщениям компонента Компонент Service Broker. |
WHILE (Transact-SQL)
SQL Server 2012
Ставит условие повторного выполнения SQL-инструкции или блока инструкций. Эти инструкции вызываются в цикле, пока указанное условие истинно. Вызовами инструкций в цикле WHILE можно контролировать из цикла с помощью ключевых слов BREAK и CONTINUE.
Соглашение о синтаксисе в Transact-SQL
Синтаксис
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
Аргументы
Boolean_expression
Выражение, которое возвращает либо TRUE, либо FALSE. Если логическое выражение содержит инструкцию SELECT, то инструкция SELECT должна быть заключена в скобки.
{sql_statement | statement_block}
Любая инструкция или группа инструкций Transact-SQL, определенная в виде блока инструкций. Для определения блока инструкций необходимо использовать ключевые слова потока управления BEGIN и END.
BREAK
Приводит к выходу из ближайшего цикла WHILE. Вызываются инструкции, следующие за ключевым словом END, обозначающим конец цикла.
CONTINUE
Выполняет цикл WHILE для перезагрузки, не учитывая все инструкции, следующие после ключевого слова CONTINUE.