Язык 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 голоса)
Функции свойств возвращают свойства объектов базы данных, типов данных или файлов. Обычно функции свойств могут возвращать больше информации, чем могут вернуть системные функции, потому что функции свойств поддерживают дюжины свойств (в качестве параметров), которые вы можете задавать явно. Почти что все функции свойств возвращают одно из следующих трех значений: 0, 1 или null. Если значением является 0, то объект не имеет соответствующего свойства. Если значение 1, то объект имеет указанное свойство. Аналогично, значение null указывает, что существование заданного свойства для данного объекта является неизвестным в системе. Database Engine помимо других поддерживает следующие функции свойств: ♦ objectproperty(id, property); ♦ columnproperty(id,   column,…
Оценить
(0 голоса)
Системный каталог является коллекцией системных базовых таблиц, принадлежащих базе данных master и существующим пользовательским базам данных. Обычно к системным базовым таблицам не может быть осуществлен прямой доступ пользователя. Database Engine поддерживает несколько различных интерфейсов, которые вы можете использовать для доступа к информации в системных каталогах. Представления просмотра каталогов являются наиболее общим интерфейсом, который вы можете использовать для получения системной информации. Динамически управляемые представления (DMV) и динамически управляемые функции (DMF) похожи на представления просмотра каталогов, при этом вы их используете для доступа к динамическим свойствам системы. Системные хранимые процедуры предоставляют простой и надежный доступ к системным базовым таблицам. Очень рекомендуется применять…
Оценить
(4 голоса)
Системы баз данных обычно используют индексы для обеспечения быстрого доступа к реляционным данным. Индекс является отдельной физической структурой данных, которая предоставляет ускоренный доступ запросов к одной или нескольким таблицам. Правильная настройка индексов является ключевым моментом для улучшения производительности запросов. У индекса есть много сходного с предметным указателем книги. Когда вы отыскиваете необходимую тему в книге, то используете ее предметный указатель для определения номера страницы (страниц), где описывается эта тема. Аналогично этому, когда вы осуществляете поиск строки в таблице, Database Engine использует индекс для нахождения ее физического размещения. Однако существуют два основных отличия предметного указателя от индекса базы данных. ♦ Как…
Оценить
(4 голоса)
Кластеризованный индекс определяет физический порядок данных в таблице. Database Engine позволяет создавать один кластеризованный индекс для таблицы, потому что строки в таблице не могут быть физически упорядочены более чем одним способом. При использовании кластеризованных индексов система выполняет навигацию от корневого узла структуры В-дерева вниз до узлов листьев, которые связаны вместе в список двойной связи, называемой цепочкой страниц. Самым важным свойством кластеризованных индексов является то, что их страницы листьев содержат страницы данных. Все другие уровни структуры кластеризованных индексов составлены из индексных страниц. Если кластеризованный индекс (явно или неявно) определен для таблицы, то таблица называется кластеризованной таблицей. На рис. 10.2 показана структура…
Оценить
(3 голоса)
Некластеризованный индекс имеет точно такую же структуру, что и кластеризованный индекс, но с двумя важными отличиями: ♦ некластеризованный индекс не изменяет физический порядок строк в таблице; ♦ страницы листьев в некластеризованном индексе состоят из индексных ключей и закладок. Физический порядок строк в таблице не изменяется, если для этой таблицы определяется один или более некластеризованных индексов. Для каждого некластеризованного индекса Database Engine создает дополнительную индексную структуру, которая сохраняется в индексных страницах. Закладка в некластеризованном индексе показывает, где находится строка, соответствующая индексному ключу. Закладка, как часть индексного ключа, может иметь две формы, в зависимости от формы таблицы, т. е. таблица может быть…
Оценить
(1 голос)
Теперь, когда вы знакомы с физической структурой индексов, в этом разделе будет рассмотрено, как вы можете создавать, изменять и удалять индексы, получать данные о фрагментации индексов и редактировать информацию индексов - все это поможет вам в дальнейшем обсуждении использовать индексы для увеличения производительности системы.
Оценить
(3 голоса)
Оператор create index создает индекс для конкретной таблицы. Общая форма этого оператора: create  [unique]   [clustered  |nonclustered]  index index_name on table_name {columnl  [asc i desc]  ,   ...) [ include  ( column_name [,...])] [with [fillfactor=n] [[,   ]   pad_index = [on   i  off}] [[,   ]   drop_existing =  [on   |   off}] [[,   ]  sort_in_tempdb = [on  |  off}] [[,   ]   ignore_dup_key = (on  |  off}] [[,   ]  allow_row_locks = {on  i  off}] [[,   ] allow_page_locks = [on  |  off}] [[,   ]  statistics_norecompute = [on  i  off}] [[, ] online = {on I off}]] [on file_group | «default»] Здесь index_name задает имя создаваемого индекса. Индекс…
Оценить
(2 голоса)
В процессе жизненного цикла индекса он может стать фрагментированным, что означает неэффективное хранение его данных на страницах. Существуют две формы фрагментации индекса: внутренняя и внешняя. Внутренняя фрагментация определяет объем данных, который хранится на каждой странице. Внешняя фрагментация появляется, когда нарушается логический порядок страниц. Для получения информации о внутренней фрагментации индекса вы можете использовать либо динамически управляемое представление (DMV), называемое sys.dm_db_index_physical_stats, либо команду dbcc showcontig. В этом разделе обсуждается только DMV, потому что dbcc showcontig не является рекомендуемой возможностью. Представление sys.dm_db_index_physicai_stats возвращает размер и информацию о фрагментации для данных и индексов указанной таблицы. Для каждого индекса возвращается одна строка для каждого…
Оценить
(1 голос)
После того как вы просмотрели информацию о фрагментации индекса, как обсуждалось в предыдущем разделе, вы можете использовать следующие системные средства для редактирования как этой информации, так и другой информации индекса: ♦ представление просмотра каталогов sys. indexes; ♦ представление просмотра каталогов sys. indexcolumns; ♦ системная процедура sp_heipindex; ♦ функция свойств object property; ♦ SQL Server Management Studio; ♦ DMV sys .dm_db_index_usage_stats; ♦ DMV sys .dm_db_missing_index_details. Представление просмотра каталогов sys.indexes содержит строку для каждого индекса и строку для каждой таблицы без кластеризованного индекса. Наиболее важными столбцами этого представления являются objectid, name и index_id. objectid- имя объекта базы данных, которому принадлежит индекс, a…
Оценить
(1 голос)
Database Engine является одной из немногих систем баз данных, которая реализует оператор alter index. Этот оператор может быть использован для поддержки деятельности с индексами. Синтаксис оператора alter index очень похож на синтаксис оператора create index. Иными словами, этот оператор позволяет вам изменять установки следующих опций: allow_row_locks, allow_page_locks, ignore_dup_key и statistics_norecompute. В дополнение к перечисленным опциям оператор alter index поддерживает три других действия: ♦ пересоздание индекса с использованием опции rebuild; ♦ реорганизацию страниц листьев индекса при использовании опции reorganize; ♦ перевод индекса в неактивное состояние с использованием опции disable.
© 2019 serversql.ru. Все права защищены.