Язык 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 голоса)
Представление может быть использовано с оператором update, как если бы этот оператор применялся к базовой таблице. Когда представление используется для модификации строк, содержимое лежащей в основе базовой таблицы изменяется фактически. В примере 11.14 создается представление, которое затем используется для изменения таблицы workson.   Вы можете рассматривать обновление представления в примере 11.14, как если бы оператор update был преобразован к следующему эквивалентному оператору: update works_on set job = null where job = 'Manager' and project_no = 'pi' Опция with check option имеет то же самое логическое значение для оператора update, что и для оператора insert. В примере 11.15 показано использование опции…
Оценить
(0 голоса)
Представление может быть использовано для удаления строк из таблицы представления, как показано в примере 11.17.     В примере 11.17 создается представление, которое затем используется для удаления строк из таблицы workson. Удаление строк из лежащих в основе представления таблиц нельзя выполнить, если соответствующее представление содержит любую из следующих возможностей: ♦ предложение from в определении представления включает две или более таблиц, и список столбцов содержит столбцы более чем из одной таблицы; ♦ столбец в представлении наследуется из агрегатной функции; ♦ оператор select в представлении содержит предложение group by или опцию distinct. В отличие от операторов insert и update оператор delete допускает…
Оценить
(1 голос)
Как вы уже знаете из предыдущей главы, существуют два специальных типа индексов: индексы для вычисляемых столбцов и индексы для представлений. В этом разделе описываются индексы для представлений. Представление всегда содержит запрос, который работает как фильтр. При отсутствии индексов, созданных для конкретного представления, Database Engine динамически создает результирующий набор при каждом запросе, ссылающемся на представление. («Динамически» означает, что если вы изменяете содержимое таблицы, соответствующее представление всегда вернет новую информацию.) Если представление содержит вычисления, основанные на одном или более столбцов таблицы, это вычисление будет выполняться каждый раз, когда вы обращаетесь к представлению. Динамическое создание результирующего набора для запроса может снизить производительность, если…
Оценить
(0 голоса)
Создание индексированного представления является процессом, состоящим из двух шагов. 1. Создайте представление, используя оператор create view с предложением with schemabinding. 2. Создайте соответствующий кластеризованный индекс. В примере 11.19 показан первый шаг создания типичного представления, которое может быть индексировано для улучшения производительности. Этот пример предполагает, что таблица workson имеет очень большой размер.   Таблица workson в базе данных sample содержит столбец enterdate, который представляет дату начала работы служащего с проектом. Если вам нужно найти всех служащих, которые начали работать с их проектами в конкретном месяце, вы можете использовать представление в примере 11.19. Для поиска подобного результирующего набора с использованием доступа через…
Оценить
(0 голоса)
Для удаления уникального кластеризованного индекса в индексированном представлении вам также нужно удалить все некластеризованные индексы этого представления. После того как вы удалите кластеризованный индекс, представление будет трактоваться системой как обычное представление. Если вы хотите изменить стандартное представление на индексированное, вы должны для него создать уникальный кластеризованный индекс. Чтобы сделать это, вы должны, во-первых, задать опцию schemabinding для этого представления. Вы можете удалить представление и создать его заново, задав предложение schemabinding в операторе create schema, или же вы можете создать другое представление, которое имеет тот же самый текст, но другое имя.
Оценить
(0 голоса)
Вы можете использовать функцию свойств sessionproperty для проверки того, что опции оператора set являются активированными (список опций см. в предыдущем разделе). Если функция возвращает 1, то опция установлена в on. В примере 11.22 показано использование этой функции для проверки, установлена ли опция quoted_identifier.   Наиболее простым способом является применение динамически управляемого представления sys.dmexecsessions, потому что вы можете найти все значения, используя только один запрос. (Опять же, если значением столбца является 1, то соответствующая опция установлена в on.) Пример 11.23 возвращает значение первых четырех опций оператора set из списка в разд. «Создание индексированного представления» ранее В этом разделе. (Глобальная переменная @@spid…
Оценить
(0 голоса)
Помимо возможного увеличения производительности при использовании сложных представлений, которые обычно присутствуют в запросах, применение индексированных представлений имеет два других преимущества: ♦ индекс представления может быть использован, даже если в представлении явно не указана ссылка на предложение from; ♦ все изменения данных отражаются в соответствующих индексированных представлениях. Возможно, наиболее важным свойством индексированных представлений является то, что у запроса в представлении нет явного указания на использование индекса в этом представлении. Иными словами, если запрос содержит ссылку на столбцы базовой таблицы (таблиц), которые также существуют в индексированных представлениях, и оптимизатор принимает решение, что использование этого индексированного представления является лучшим выбором, то он выбирает…
Оценить
(1 голос)
Представления могут быть использованы для различных целей: ♦ для ограничения использования отдельных столбцов и/или строк таблиц, т. е. для управления доступом к отдельным частям одной или более таблиц; ♦ для сокрытия деталей усложненных запросов; ♦ для ограничения добавляемых или изменяемых значений некоторым диапазоном. Представления создаются, отыскиваются и изменяются при помощи тех же самых операторов Transact-SQL, которые используются для создания, поиска и модификации базовых таблиц. Запрос к представлению всегда трансформируется в эквивалентный запрос к лежащей в основе представления базовой таблице. Операция изменения трактуется таким же образом, что и поиск. Существует только одно отличие - имеются некоторые ограничения для представлений при выполнении…
Оценить
(0 голоса)
Триггер является механизмом, который выполняется, когда происходит конкретное действие с отдельной таблицей. Каждый триггер имеет три основные части: ♦ имя; ♦ действие; ♦ исполнение. Максимальный размер имени триггера- 128 байтов. Действием триггера может быть либо оператор DML (insert, update или delete), либо оператор DDL. Поэтому существуют две формы триггеров: триггеры DML и триггеры DDL. Исполнительная часть триггера обычно содержит хранимую процедуру или пакет.
Оценить
(2 голоса)
Триггер создается посредством оператора create trigger, который имеет следующий синтаксис: create trigger [schema_name.] trigger_name on {table_name I view_name} [with dml_trigger_option {,  ...]] {for I after |  instead of} {[insert]   [,]   [update] [,] [delete]} [with append] [as sql_statement \ external name method_name} Здесь schema_name- имя схемы, которой принадлежит триггер; trigger_ name- имя триггера; tabie_name- имя таблицы, для которой задается триггер. Для представлений также поддерживаются триггеры, как показано в варианте view_name. Опции after и instead of являются двумя дополнительными опциями, которые вы можете задать в триггере. (Предложение for является синонимом для after.) Триггеры after вызываются после появления действий, обрабатываемых в триггерах. Триггеры…
© 2019 serversql.ru. Все права защищены.