Язык 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 голоса)
Подзапросы имеют преимущество относительно соединений, когда вам нужно быстро вычислять агрегатные значения и использовать их во внешних запросах для выполнения сравнения. Пример 6.68 демонстрирует это.   Эта проблема не может быть просто решена при использовании соединения, потому что вам нужно написать агрегатную функцию в предложении where, а это недопустимо. (Вы можете решить эту проблему, используя два раздельных запроса к таблице works_on.)
Оценить
(0 голоса)
Соединения имеют преимущества над подзапросами, если список выбора select в запросе содержит столбцы более чем из одной таблицы (пример 6.69).     Список выбора select в запросе примера 6.69 содержит столбцы emp_no и emp_lname из таблицы employee и столбец job из таблицы workson. По ЭТОЙ причине эквивалентное решение при использовании подзапроса приведет к выдаче сообщения об ошибке, потому что подзапросы могут отображать информацию только из внешней таблицы.
Оценить
(0 голоса)
Табличные выражения являются подзапросами, которые используются там, где ожидается появление таблицы. Существуют два типа табличных выражений: ♦ наследуемые таблицы; ♦ общие табличные выражения.
Оценить
(0 голоса)
Наследуемая таблица является выражением для таблицы, которое появляется в предложении from запроса. Вы можете обращаться к наследуемым таблицам, когда использование псевдонимов столбцов невозможно по той причине, что другое предложение обрабатывается транслятором SQL до того, как станут известны псевдонимы имен. В примере 6.70 демонстрируется попытка использования псевдонима столбца, где другое предложение обрабатывается до того, как станет известным псевдоним этого имени.   Причина появления этого сообщения об ошибке заключается в том, что предложение group by обрабатывается до обработки соответствующего списка select, и имя псевдонима entermonth не известно во время процесса группирования. При использовании наследуемой таблицы, которая содержит предыдущий запрос (без предложения group…
Оценить
(0 голоса)
Общее табличное выражение (ОТВ - Common Table Expression, СТЕ) является именованным выражением таблицы, которое поддерживается Transact-SQL. Существуют два типа запросов, которые используют СТЕ: ♦ нерекурсивные запросы; ♦ рекурсивные запросы. Следующие разделы описывают оба типа запросов.
Оценить
(0 голоса)
Не рекурсивная форма ОТВ может быть использована как альтернатива наследуемым таблицам и представлениям. Обычно ОТВ определяются с использованием оператора with и дополнительного запроса, который ссылается на имя, используемое в with (см. пример 6.74). Примеры 6.73 и 6.74 используют базу данных AdventureWorks для демонстрации того, как ОТВ могут быть использованы в не рекурсивных запросах. Пример 6.73 использует «подходящие» средства, в то время как пример 6.74 решает ту же самую проблему через не рекурсивный запрос.   Запрос в примере 6.73 отыскивает общие суммы, чьи значения больше, чем среднее значение всех сумм, и чьи величины превышают 40% средних значений всех сумм. Основное свойство…
Оценить
(0 голоса)
Материал в этом подразделе довольно сложен. Поэтому рекомендуется пропустить его при первом чтении книги. Вы можете использовать ОТВ для реализации рекурсии, потому что ОТВ могут содержать ссылки на самих себя. Основной синтаксис ОТВ для рекурсивных запросов: with cte_name (column_list) as (ancho r_membe r union all recurs ive_member) outer_query Здесь ctename и column_list имеют то же самое значение, что и ОТВ для нерекурсивных запросов. Тело предложения with содержит два запроса, которые связаны с оператором union all. Первый запрос будет вызван только один раз, он запускается для аккумулирования результата рекурсии. Первый операнд в union all не ссылается на ОТВ (см. пример 6.75).…
Оценить
(0 голоса)
Оператор apply похож на рекурсивные запросы, потому что он использует ОТВ тем же самым образом. Этот оператор позволяет вам вызывать функцию, принимающую в виде параметров таблицу, для каждой строки, возвращенной выражением внешней таблицы или запросом. Функция с параметрами в виде таблицы действует как правый ввод, а выражение внешней таблицы - как левый ввод. Правый ввод обрабатывается для каждой строки левого ввода, и полученные строки комбинируются для окончательного вывода. Список столбцов, созданных оператором apply, является множеством столбцов левого ввода, за которым следует список столбцов, возвращенных правым вводом. Подробное описание оператора apply.
Оценить
(0 голоса)
В этом разделе рассматривались все возможности оператора select, касающиеся поиска данных в одной или более таблицах. Каждый оператор select, который отыскивает данные в таблице, должен содержать, по меньшей мере, список выбора и предложение from. Предложение from задает таблицу (таблицы), в которой отыскиваются данные. Наиболее важным является необязательное предложение where, содержащее одно или более условий, которые могут комбинироваться с использованием логических операторов and, or, not. Следовательно, условия в предложении where задают ограничения на выбираемые строки.
Оценить
(0 голоса)
Оператор insert добавляет строки (или части строк) в таблицу. Он имеет две различные формы: insert [into]   tab_name [(col_list)] default values  i  values  ([default  | null  |  expression)   {,   ...}); insert into tab_name \  view_name [{col_list)] {оператор_вы6орки \ выполняемый_оператор) При использовании первой формы только одна строка (или ее часть) добавляется в таблицу tab_name. Во второй форме оператор insert добавляет результирующий набор, полученный от оператора select или от хранимой процедуры, которая выполняется при использовании оператора execute. Хранимая процедура должна вернуть данные, которые затем добавляются в таблицу. Оператор select может выбирать значения из другой или той же самой таблицы в качестве источника данных…
© 2019 serversql.ru. Все права защищены.