Язык 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.

Просмотреть материалы...
Оценить
(1 голос)
В версиях, предшествующих SQL Server 2005, вы могли использовать для создания хранимых процедур только операторы Transact-SQL. SQL Server 2005 вводит новую возможность Common Language Runtime (CLR), которая позволяет вам разрабатывать различные объекты базы данных (хранимые процедуры, функции, определенные пользователем, триггеры, определенные пользователем агрегаты и определенные пользователем типы) с помощью С# и Visual Basic. CLR также позволяет выполнять эти объекты, используя общую систему выполнения. В примере 8.9 показано, как вы можете разрешить использование CLR.   Для реализации, компиляции и сохранения процедур при использовании CLR вы должны выполнить следующие четыре шага в указанном порядке: 1. Напишите хранимую процедуру на языке С# (или…
Оценить
(0 голоса)
UDF создаются при помощи оператора create function, который имеет следующий синтаксис: create function  [schema_name.] function_name [({Qparam }  type [= default}) {,   ...} returns  {scalar_type | {^variable]  table} [with  [encryption |   schemabinding} [as]   {block I return  (select_stacement)} Здесь schema_name- имя схемы, которой назначено владение созданной UDF; function_name- имя новой функции; Qparam- имя входного параметра, a type задает его тип данных. Параметрами являются значения, передаваемые вызвавшими программами для UDF, они используются в функции. Опция default задает необязательное значение по умолчанию для соответствующего параметра. (Значением по умолчанию может быть также пустое значение null.) Предложение returns задает тип данных значения, возвращаемого UDF. Это может…
Оценить
(0 голоса)
Каждая UDF может быть вызвана в операторах Transact-SQL, таких как select, insert, update или delete. Для вызова функции задается ее имя, за которым следуют круглые скобки. В этих скобках вы можете задать один или более аргументов. Аргументы являются значениями или выражениями, передаваемыми входным параметрам, которые заданы сразу после имени функции. Если вы вызываете функцию, и все входные параметры не имеют значения по умолчанию, вы должны предоставить значения для каждого параметра, а также должны указать значения аргументов в том же порядке, в котором эти параметры определены в операторе create function. В примере 8.16 показано использование функции compute_cost (см. пример 8.15) в…
Оценить
(0 голоса)
Как вы уже знаете, функции являются табличными, если предложение returns возвращает набор строк. В зависимости от того, как определено тело функции, табличные функции могут быть классифицированы как линейные или как многооператорные функции. Если предложение returns задает table без указания списка столбцов, то эта функция является линейной. Линейные функции возвращают результат выполнения оператора select в виде переменной типа данных table (см. пример 8.17). Многооператорная табличная функция включает имя, следующее за table. Имя задает внутреннюю переменную типа table. Вы можете использовать эту переменную для добавления в нее строк, а затем вернуть эту переменную в качестве возвращаемого значения функции. В примере 8.17 показана…
Оценить
(0 голоса)
Во всех версиях, предшествующих SQL Server 2008, было сложно передавать много параметров подпрограмме. В подобных случаях вам нужно было использовать временные таблицы, добавлять в них значения, а затем вызывать вашу подпрограмму. Начиная с SQL Server 2008, вы можете использовать табличные параметры для упрощения этой задачи. Эти параметры используются для передачи результирующего набора соответствующей подпрограмме. В примере 8.19 показано использование табличного параметра.   В примере 8.19 вначале объявляется пользовательский тип departmentType в качестве таблицы. Это означает, что данный тип является типом данных table, следовательно, в него можно помещать строки. В процедуре insertProc задана переменная @Dalias типа данных departmentType. Предложение readonly указывает,…
Оценить
(0 голоса)
Оператор apply может быть объединен с табличной функцией для получения результата, похожего на результирующий набор операции соединения двух таблиц. Примеры 8.20 и 8.21 показывают, как вы можете использовать apply.     Функция fn_getjob() в примере 8.20 возвращает набор строк из таблицы workson. Результирующий набор «соединяется» в следующем примере с содержимым таблицы employee.       В первом запросе примера 8.21 результирующий набор табличной функции fngetjobO «соединяется» с содержимым таблицы employee за счет использования оператора cross apply. Табличная функция fn get job выступает в качестве правого ввода, а таблица employee - в качестве левого ввода. Правый ввод вычисляется для каждой строки…
Оценить
(0 голоса)
Язык Transact-SQL также поддерживает оператор alter function, который изменяет структуру UDF. Этот оператор обычно используется для удаления существующего связывания со схемой. Все опции оператора alter function соответствуют опциям с теми же названиями в операторе create function. UDF удаляется при использовании оператора drop function. Только владелец этой функции (или участник фиксированных ролей базы данных dbowner и sysadmin) может удалять функцию. Представление отображения каталогов sys.objects отображает информацию о существующих UDF. (См. значения 'FN' [for scalar functions], 'FS' [for CLR functions], 'FT' [for table-valued functions] и 'IF' [for inline table-valued functions] в столбце type.) Системная процедура spheiptext также предоставляет соответствующую информацию о UDF.
Оценить
(0 голоса)
Обсуждение в разд. «Хранимые процедуры и CLR» ранее В этом разделе также применимо и к UDF. С одной только разницей - вы должны использовать оператор create function (вместо create procedure) для сохранения UDF в качестве объекта базы данных. Кроме того, UDF применяется в контексте, отличном от использования хранимых процедур, потому что UDF всегда возвращают значение. В примере 8.22 показана программа на С#, используемая для демонстрации того, как компилируются и устанавливаются UDF.   Исходная программа на С# в примере 8.22 показывает UDF, которая вычисляет новый бюджет проекта на основе старого бюджета и заданного процента увеличения. Описание программы С# опущено, потому что…
Оценить
(0 голоса)
Хранимая процедура является специальным видом пакета, написанного либо на языке Transact-SQL, либо на языке программирования с помощью CLR. Хранимые процедуры используются со следующими целями: ♦ для управления авторизацией доступа; ♦ для создания контрольного журнала деятельности с таблицами базы данных; ♦ для поддержания согласованности и бизнес-правил при изменении данных; ♦ для повышения производительности повторяющихся задач.
Оценить
(0 голоса)
Система безопасности Database Engine включает две различные подсистемы безопасности: ♦ безопасность Windows; ♦ безопасность SQL Server. Безопасность Windows задает безопасность на уровне операционной системы, т. е. метод, при помощи которого пользователи соединяются с операционной системой, используя учетную запись пользователя Windows. Аутентификация, которая используется в этой подсистеме, также называется доверенной аутентификацией, потому что система доверяет операционной системе, которая уже проверила учетную запись и соответствующий пароль. Безопасность SQL Server задает дополнительную необходимую безопасность на уровне системы, т. е. когда пользователь, который уже вошел в операционную систему, может после этого соединяться с сервером базы данных. Служба безопасности SQL Server определяет учетную запись SQL…
© 2018 www.serversql.ru. Все права защищены.