Язык Transact-SQL

Подкатегории

Хранимые процедуры и функции, определенные пользователем

В этом разделе вводятся описания пакетов и подпрограмм. Пакеты являются последовательностью операторов Transact-SQL и процедурных расширений. Подпрограммы могут быть либо хранимыми процедурами, либо функциями, определенными пользователем (User Defined Function, UDF). В начале главы вводятся все процедурные расширения, поддерживаемые Database Engine. После этого процедурные расширения используются вместе с операторами Transact-SQL, чтобы продемонстрировать, как могут быть реализованы пакеты. Пакет может быть сохранен как объект базы данных в виде хранимой процедуры или UDF. Одни процедуры написаны пользователями, другие предоставляются корпорацией Microsoft, они называются системными хранимыми процедурами. В отличие от пользовательских хранимых процедур функции, написанные пользователем, возвращают вызвавшей программе некоторое значение. Все подпрограммы могут быть написаны либо на Transact-SQL, либо на любом языке программирования, таком как С# или Visual Basic.

Просмотреть материалы...

Система безопасности Database Engine

Этот раздел начинается с краткого обзора наиболее важных концепций безопасности базы данных. Затем обсуждаются специфические особенности системы безопасности Database Engine. Аутентификация требует ответа на следующий вопрос: «Имеет ли этот пользователь легитимные права на доступ в систему?» Следовательно, эта концепция безопасности задает процесс проверки полномочий для предотвращения использования системы неавторизованными пользователями.

Просмотреть материалы...

Управление параллельной работой

Как вы уже знаете, данные в базе данных обычно используются многими программами пользовательских приложений. Ситуация, при которой несколько программ пользовательских приложений читают и пишут одни и те же данные в одно и то же время, называется конкурентным доступом. Следовательно, каждая СУБД должна иметь некоторый механизм управления для разрешения проблем конкурентного доступа. Высокий уровень конкурентного доступа возможен в системе базы данных, которая может управлять многими активными пользовательскими приложениями без их влияния друг на друга. И наоборот, система базы данных, где различные активные приложения влияют друг на друга, поддерживает низкий уровень конкурентного доступа. Этот раздел начинается с описания двух моделей управления конкурентным доступом, которые поддерживает Database Engine. В следующем разделе объясняется, как проблемы конкурентного доступа могут быть решены с использованием транзакций. Это обсуждение включает вводные сведения в четыре свойства транзакций, известные как свойства ACID (Atomicity, Consistency, Isolation, Durability- атомарность, согласованность, изолированность, устойчивость), обсуждаются связанные с транзакциями операторы Transact-SQL, вводится понятие протокола транзакции. Затем рассматривается блокировка и три основных свойства блокировки: модели блокировки, ресурсы блокировки, длительность блокировки. Также вводится важное понятие взаимной блокировки, которая может возникать как результат обычной блокировки.

Просмотреть материалы...

Системный каталог

В этом разделе рассматривается системный каталог Database Engine. За общими сведениями следует описание представлений для просмотра структуры некоторых каталогов; представления позволяют вам просматривать метаданные. В начале главы также рассматривается использование динамически управляемых представлений и динамически управляемых функций. А затем обсуждаются четыре альтернативных способа поиска информации метаданных: системные хранимые процедуры, системные функции, функции свойств и информационная схема.

Просмотреть материалы...

Индексы

В этом разделе описываются индексы и их роль в оптимизации времени отклика запросов. В первой части главы рассматриваются вопросы хранения индексов и существующие для этого формы. В основном глава содержит описание трех операторов Transact-SQL, имеющих отношение к индексам: create index, alter index и drop index. После этого рассматривается фрагментация индексов и ее влияние на производительность системы. Затем приводятся некоторые общие рекомендации по созданию индексов.

Просмотреть материалы...

Представления – View

Этот раздел посвящена исключительно объектам базы данных, называемым представлениями (view). Структура этой главы соответствует структуре, в которых были описаны операторы DDL и DML для базовых таблиц. В первом разделе этой главы рассматриваются операторы DDL, связанные с представлениями: create view, alter view и drop view. Затем описываются операторы DDL для представлений: select, insert, update и delete. Оператор select будет рассмотрен отдельно от других трех операторов. В отличие от базовых таблиц представления не могут быть использованы для операций модификации без некоторых ограничений.

Просмотреть материалы...

Триггеры

Этот раздел посвящен механизму, называемому триггерами. В начале главы описываются операторы Transact-SQL для создания, удаления и изменения триггеров. После этого даются примеры из различных областей приложений для этого объекта базы данных. Каждый пример создается с использованием одного из операторов insert, update или delete. Во второй части этой главы рассматриваются триггеры DDL, которые базируются на таких операторах, как create table. Опять же, даются примеры из различных областей приложений, связанных с триггерами DDL.

Просмотреть материалы...

Основные элементы SQL

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

Просмотреть материалы...

Язык описания данных

Этот раздел описывает все операторы Transact-SQL, связанные с языком определения данных DDL (Data Definition Language). Операторы DDL разделены на три группы, которые рассматриваются по порядку. Первая группа включает операторы, которые создают объекты, вторая группа включает операторы, которые изменяют структуру объектов, а третья группа включает операторы, которые удаляют объекты базы данных.

Просмотреть материалы...

Запросы к базе данных

В этом разделе вы изучите, как использовать оператор select для выполнения поиска данных. Здесь описывается каждое предложение этого оператора и даются многочисленные примеры с использованием базы данных sample для демонстрации практического использования каждого предложения. После этого рассматриваются агрегатные функции, множество операторов, вычисляемые столбцы и временные таблицы. Затем рассказывается более подробно о сложных запросах. Вводится оператор соединения таблиц. В дополнение к рассмотрению всех форм оператора соединения, который является наиболее важным оператором для реляционных систем баз данных, в главе рассматриваются коррелированные подзапросы и функция exists.

Просмотреть материалы...

Изменение содержимого таблиц

В дополнение к оператору select, который был описан, существуют три других оператора DML: insert, update и delete. Как и оператор select, эти три оператора модификации оперируют либо таблицами, либо представлениями. В данной главе обсуждаются эти операторы в работе с таблицами и даются примеры их использования. Дополнительно рассматриваются два других оператора: truncate table и merge. В то время как оператор truncate table является расширением в языке Transact-SQL стандарта SQL, оператор merge - новая и стандартизованная возможность в SQL Server 2008.

Просмотреть материалы...

Оценить
(0 голоса)
В примере 14.7 показано, как вы можете реализовать триггер DDL, у которого областью видимости является текущая база данных.   Триггер в примере 14.7 запрещает пользователям удалять любой триггер, который принадлежит базе данных sample. Предложение database указывает, что триггер prevent_drop_triggers является триггером уровня базы данных. Ключевое слово drop_trigger является предварительно определенным типом события, задающим событие удаления любого триггера.
Оценить
(0 голоса)
Триггеры уровня сервера отвечают на события изменения на сервере. Вы используете предложение all server для реализации триггеров уровня сервера. В зависимости от указанного действия существуют две разновидности триггеров уровня сервера: условные триггеры DDL и триггеры входа в систему. События условных триггеров DDL основываются на операторах DDL, тогда как триггеры входа в систему обрабатывают событие подключения к системе. В примере 14.8 показан триггер уровня сервера, который является в то же самое время и триггером входа в систему.     В примере 14.8 вначале создается учетная запись SQL Server с именем logintest. Эта учетная запись впоследствии используется в триггере уровня сервера. По…
Оценить
(0 голоса)
Триггеры, так же как и хранимые процедуры и определенные пользователем функции, могут быть реализованы посредством CLR (Common Language Runtime). Если вам нужно реализовать, скомпилировать и сохранить триггеры CLR, выполните следующие шаги: 1. Создайте триггер с использованием С# или Visual Basic и скомпилируйте эту программу с помощью соответствующего компилятора (см. примеры 14.9 и 14.10). Используйте оператор create assembly для создания соответствующего исполняемого файла (см. пример 14.11). 2. Создайте триггер посредством оператора create trigger (см. пример 14.12). Следующие примеры демонстрируют эти шаги. В примере 14.9 показан исходный текст программы на языке С#, которая будет использоваться для реализации триггера из примера 14.1.  …
Оценить
(0 голоса)
Триггер является механизмом, который размещается на сервере базы данных и имеет две разновидности: триггеры DML и триггеры DDL. Триггеры DML задают одно или более действий, которые автоматически выполняются сервером базы данных при осуществлении изменений таблицы, выполненных посредством операторов insert, updare или delete. (Триггеры DML не могут быть использованы в операторах select.) В другом варианте триггеры DDL основаны на операторах DDL. Они существуют в двух разновидностях в зависимости от области действия такого триггера- база данных или текущий сервер. Предложение database указывает, что областью видимости триггера DDL является текущая база данных. Предложение all server указывает, что областью видимости триггера DDL является текущий…
Оценить
(4 голоса)
Языком Database Engine является Transact-SQL, который обладает теми же самыми базовыми возможностями, что и любой другой язык программирования: ♦ значения литералов (также называемых константами); ♦ разделители; ♦ комментарии; ♦ идентификаторы; ♦ ключевые слова. Следующие разделы описывают эти возможности.
Оценить
(2 голоса)
Значением литерала является алфавитно-цифровая, десятично-шестнадцатеричная или числовая константа. Строковая константа содержит один или более символов из набора символов, заключенных в два одиночных апострофа («) или в двойные кавычки (««) (одиночные апострофы более предпочтительны, чем двойные кавычки). Если вам нужно включить апостроф в строку, заключенную в апострофы, используйте два подряд идущих апострофа. Деся-тично-шестнадцатеричные константы используются для представления непечатных символов и других двоичных данных. Каждая десятично-шест-надцатеричная константа начинается с символов 'Ох', за которыми следуют числа и/или буквы, соответствующие шестнадцатеричным цифрам. Примеры 4.1 и 4.2 иллюстрируют некоторые правильные и ошибочные представления строковых и десятично-шестнадцатеричных констант.   Числовые константы включают все целые числа, числа…
Оценить
(1 голос)
В Transact-SQL двойные кавычки («) имеют два значения. Помимо обрамления строк, они могут также быть использованы в качестве разделителей для так называемых идентификаторов с разделителями. Идентификаторы с разделителями являются специальным видом идентификаторов, обычно используемых для того, чтобы дать пользователю возможность использовать зарезервированные ключевые слова в качестве идентификаторов, а также чтобы допустить применение пробелов в именах объектов базы данных. В Transact-SQL использование кавычек задается параметром quoted_identifire в операторе set. Если значение этого параметра установлено в on, что является значением по умолчанию, то идентификаторы в кавычках будут определены в качестве идентификаторов с разделителями. В этом случае кавычки не могут использоваться для задания…
Оценить
(1 голос)
Существуют два различных способа задания комментариев в операторах Transact-SQL. Использование пар символов /* и */ задает заключенный в них текст как комментарий. В этом случае комментарий может располагаться на нескольких строках. Кроме этого символы - (два минуса) указывают, что оставшаяся часть текущей строки является комментарием. (Два минуса - соответствуют стандарту ANSI SQL, в то время как символы /* и */ являются расширением Transact-SQL.)
Оценить
(1 голос)
В Transact-SQL идентификаторы используются для определения объектов базы данных, таких как базы данных, таблицы, индексы. Они представлены символьными строками, которые могут включать до 128 символов и содержать буквы, цифры, а также следующие символы: _, @, # и $. Каждое имя может начинаться с буквы или с одного из следующих символов: _, @ или #. Символ # в начале имени таблицы или хранимой процедуры означает временный объект, в то время как @ в начале имени используется для объявления переменных. Как было отмечено ранее, эти правила не применимы к идентификаторам с разделителями (также известные как идентификаторы, заключенные в кавычки), которые могут содержать…
Оценить
(2 голоса)
Каждый язык программирования имеет набор имен с зарезервированным значением, которые должны быть записаны и использованы в определенном формате. Имена этого вида называются зарезервированными ключевыми словами. Transact-SQL использует множество подобных имен, которые, как и во многих других языках программирования, не могут быть использованы в качестве имен объектов, если только для этих объектов не используются идентификаторы с разделителями (идентификаторы, заключенные в кавычки).
© 2019 serversql.ru. Все права защищены.