Язык 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 голоса)
Transact-SQL также поддерживает оператор alter trigger, который изменяет структуру триггера. Данный оператор обычно используется для изменения тела триггера. Все предложения и опции оператора alter trigger соответствуют предложениям и опциям с теми же именами в операторе create trigger. Полномочия для alter trigger по умолчанию предоставлены членам фиксированных ролей базы данных db_owner и db_ddiadmin, а также владельцу таблицы. Оператор drop trigger удаляет один или более существующих триггеров из текущей базы данных. В следующем разделе описываются удаляемые и добавляемые таблицы, которые играют значительную роль в действиях триггеров.
Оценить
(1 голос)
При создании синхронизирующего действия в триггере вы обычно должны указать, на какое значение столбца вы ссылаетесь - на значение, которое столбец имел до выполненного изменения или после изменения. По этой причине для проверки нужных значений создаются две виртуальные таблицы со специальными именами: ♦ deleted содержит копии строк, которые были удалены из таблицы; ♦ inserted содержит копии строк, которые были добавлены в таблицу. Структура этих таблиц эквивалентна тем таблицам, для которых задан триггер. Таблица deleted используется, если в операторе create trigger задано предложение delete или update. Таблица inserted используется, если в операторе create trigger задано предложение insert или update. Это означает,…
Оценить
(0 голоса)
В первой части этой главы было сказано, как вы можете создавать триггеры DML и изменять их структуру. Такая форма триггеров может быть использована для решения многих проблем. В данном разделе описываются некоторые области приложений для триггеров DML (триггеры after и instead of).
Оценить
(0 голоса)
Как вы уже знаете, триггеры after вызываются после того, как будут выполнены действия. Вы можете задать триггер after, используя ключевое слово after или for. Триггеры after могут быть созданы только для базовых таблиц. Триггеры after могут быть использованы, помимо прочего, для выполнения следующих действий: ♦ создание контрольного журнала выполненных действий для одной или более таблиц базы данных (см. пример 14.1); ♦ реализация бизнес-правил (см. пример 14.2); ♦ поддержание ссылочной целостности данных (см. примеры 14.3 и 14.4).
Оценить
(0 голоса)
В главе 12 рассказано, как вы можете перехватывать изменения данных, используя механизм, называемый CDC (change data capture, перехват изменения данных). Триггеры DML также могут быть использованы для решения той же задачи. В примере 14.1 показано, как триггеры могут создавать контрольный журнал, содержащий сведения о действиях с одной или более таблиц базы данных.   В примере 14.1 показано, как триггеры могут быть использованы для реализации контрольного журнала о действиях с таблицей. В этом примере создается таблица auditbudget, которая сохраняет все изменения в столбце budget таблицы project. Запись всех изменений в этом столбце будет выполнена при использовании триггера modify_budget. Любое изменение столбца…
Оценить
(0 голоса)
Триггеры могут быть использованы для создания бизнес-правил приложений. В примере 14.2 показано создание подобного триггера.     В примере 14.2 создается правило, управляющее изменениями бюджета проектов. Триггер totai_budget проверяет каждое изменение бюджета и выполняет только такие операторы update, в которых изменения не увеличивают сумму всех бюджетов более чем на 50%. В противном случае для оператора update выполняется откат с использованием оператора rollback transaction.
Оценить
(0 голоса)
Как было сказано, СУБД обрабатывают два типа ограничений целостности: ♦ декларативные ограничения целостности, определенные с помощью операторов create table и alter table; ♦ процедурные ограничения целостности (обрабатываемые триггерами). Использование триггеров для поддержания ограничений целостности имеет одно значительное преимущество: триггеры являются более гибкими, чем декларативные ограничения, потому что каждое ограничение может быть реализовано при помощи триггеров. (То же утверждение не является верным для декларативных ограничений.) В примере 14.3 показано, как вы можете поддерживать ссылочную целостность для таблиц employee и works_on.   Триггер workson_integrity в примере 14.3 проверяет ссылочную целостность для таблиц employee и works_on. Это означает, что проверяется каждое изменение значения…
Оценить
(1 голос)
Триггер с предложением instead of заменяет соответствующее действие, заданное для триггера. Он выполняется после создания соответствующих таблиц deleted и inserted, но до того, как будут выполнены ограничения целостности данных и любые другие действия. Триггеры instead of могут быть созданы как для таблиц, так и для представлений. Когда оператор Transact-SQL ссылается на представление, у которого существует триггер instead of, система базы данных выполняет этот триггер, вместо выполнения любых других действий. Триггер всегда использует информацию таблиц deleted и inserted, созданных для представления, чтобы создавать любые операторы, необходимые для создания запрашиваемых событий. Существуют некоторые требования к значениям столбцов, поставляемым триггерам instead of: ♦…
Оценить
(0 голоса)
Database Engine дает возможность создавать множество триггеров для каждой таблицы или представления и для каждого действия с ними (insert, update и delete). Дополнительно к этому вы можете задавать порядок для нескольких триггеров, определенных для конкретного действия. Используя системную хранимую процедуру sp_settriggerorder, вы можете указать, что один из триггеров after, связанных с таблицей, будет либо первым триггером after, либо последним выполняемым триггером after для каждого обрабатываемого триггерами действия. Эта системная процедура имеет параметр dorder, который принимает три значения: ♦ first указывает, что данный триггер является первым триггером after, который будет выполняться для модифицирующего действия; ♦ last указывает, что данный триггер является…
Оценить
(0 голоса)
В первой части этой главы описывались триггеры DML, задающие действия, которые выполняются сервером при модификации данных таблицы в процессе выполнения оператора insert, update или delete. Database Engine позволяет вам определять триггеры и для операторов DDL, таких как create database, drop table и alter table. СиНТЭКСИС для Триггеров DDL: create trigger [schema_name.} trigger_name on {all server  |  database } [with {encryption | execute as clause_name] {for I after}  (event_group |  event_type | logon } as {batch I external name method_name} Как видно из предыдущего синтаксиса, триггеры DDL создаются тем же самым образом, что и триггеры DML. Операторы alter trigger и drop…
© 2019 serversql.ru. Все права защищены.