Язык 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.22 показан замкнутый подзапрос, который используется с оператором =.     Внутренний запрос в примере 6.22 логически выполняется первым. Этот запрос возвращает номер отдела Research (dl). Следовательно, после выполнения внутреннего запроса этот подзапрос в примере 6.22 может быть представлен в виде следующего эквивалентного запроса: use sample select emp_fname, emp_lname from employee where dept_no = 'dl'; Подзапрос может быть использован также и с другими операторами сравнения. Любой оператор сравнения может быть использован с условием, что внутренний запрос возвращает в точности одну строку. Это очевидно, потому что сравнения между значениями отдельного столбца внешнего запроса и множеством значений (как результат выполнения…
Оценить
(0 голоса)
Оператор in позволяет использовать задание множества выражений (или констант), которые последовательно используются в запросе на поиск. Этот оператор может быть применен для подзапроса по той же причине, т. е. когда результат внутреннего запроса содержит набор значений. В примере 6.23 показано использование оператора in в подзапросе.       Каждый внутренний запрос может содержать другие запросы. Такой тип подзапросов называется многоуровневым вложенным подзапросом. Максимальное количество внутренних запросов в подзапросе зависит от объема памяти, которую имеет Database Engine для каждого оператора select. В случае подзапросов с множеством уровней вложенности система вначале выполняет самый внутренний запрос и возвращает результат запросу следующего уровня вложенности…
Оценить
(0 голоса)
Операторы any и all всегда используются в комбинации с одним или несколькими операторами сравнения. Общий синтаксис обоих операторов: column_name operator [any | all] query Здесь operator- обычный оператор сравнения, a query- внутренний запрос. Оператор any возвращает значение «истина», если результат выполнения соответствующего внутреннего запроса содержит, по меньшей мере, одну строку, соответствующую сравнению. Ключевое слово some является синонимом для any. В примере 6.25 показано использование оператора any.     Каждое значение столбца enterdate в примере 6.25 сравнивается со всеми значениями этого же столбца. Для всех дат этого столбца, за исключением самой ранней, сравнение возвращает истину как минимум один раз. Строка с…
Оценить
(0 голоса)
Следующие подразделы описывают другие предложения, которые могут быть использованы в запросах, а также агрегатные функции и наборы операторов. Во-первых, мы рассмотрим предложение group by и предоставим некоторые примеры с этим предложением и агрегатными функциями, которые поддерживаются в Transact-SQL. После этого будут рассмотрены предложения having и order by. В этом разделе также рассматривается свойство identity и существующий набор операторов (union, intersect и except).
Оценить
(0 голоса)
Предложение group by задает один или более столбцов в качестве группы, в которой все строки данной группы имеют одно и то же значение этих столбцов. В примере 6.26 показано простое использование предложения group by.   В примере 6.26 предложение group by создает различные группы для всех возможных значений (в том числе и null), появляющихся в столбце job. Таблица может быть сгруппирована по любой комбинации ее столбцов. В примере 6.27 показана группировка строк таблицы workson с использованием двух столбцов.       Результат примера 6.27 показывает, что существует девять групп с различными комбинациями номеров проектов и работ. И только две группы,…
Оценить
(0 голоса)
Агрегатные функции являются функциями, которые используются для получения обобщенных значений. Все агрегатные функции могут быть разделены на несколько групп: ♦ обычные агрегатные функции; ♦ статистические агрегатные функции; ♦ агрегатные функции, определенные пользователем; ♦ аналитические агрегатные функции. Первые три типа описываются в следующих разделах, а аналитические агрегатные функции подробно рассматриваются.
Оценить
(0 голоса)
Язык Transact-SQL поддерживает шесть обычных агрегатных функций: ♦ min; ♦ max; ♦ sum; ♦ avg; ♦ count; ♦ count_big. Все агрегатные функции оперируют одним аргументом, который может быть либо столбцом, либо выражением. Существует только исключение во второй форме функций count и count_big: count(*) и count_big(*). Результатом каждой агрегатной функции является константное значение, которое отображается в отдельном столбце результата. Агрегатные функции появляются в списке выбора оператора select, который может включать предложение group by. Если в операторе select нет предложения group by, а в списке выбора присутствует хотя бы одна агрегатная функция, то никакой простой столбец не может быть включен в список…
Оценить
(0 голоса)
Следующие агрегатные функции принадлежат к группе статистических агрегатных функций: ♦ var вычисляет дисперсию для всех значений, представленных в столбце или в выражении; ♦ varp вычисляет дисперсию для всех значений популяции, представленных в столбце или в выражении; ♦ stdev вычисляет среднеквадратичное отклонение (СКО) всех значений столбца или выражения (СКО вычисляется как квадратный корень из соответствующей дисперсии); ♦ stdevp вычисляет СКО популяции всех значений столбца или выражения. Примеры, связанные со статистическими агрегатными функциями, будут представлены.
Оценить
(0 голоса)
Database Engine также поддерживает использование определенных пользователем агрегатных функций. Используя такие функции, вы можете создавать и распространять агрегатные функции, которые не принадлежат агрегатным функциям, поддерживаемым системой. Такие функции являются специальным случаем определенных пользователем функций, которые будут подробно описаны.
Оценить
(1 голос)
Предложение having определяет условие, которое затем применяется к группам строк. Следовательно, это предложение имеет тот же смысл для группы строк, что и предложение where в отношении содержимого соответствующей таблицы. Синтаксис предложения having: having condition Здесь condition содержит агрегатные функции или константы. Пример 6.37 демонстрирует использование предложения having с агрегатной функцией count (*).   В примере 6.37 система использует предложение group by для группирования всех строк в соответствии с существующими значениями в столбце projectno. После этого она подсчитывает количество строк в каждой группе и выбирает те группы, которые содержат три и менее строк. Предложение having может быть также использовано и без…
© 2019 serversql.ru. Все права защищены.