Язык 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 голоса)
Ссылочная целостность усиливает правила добавления и изменения данных в таблице при помощи внешнего ключа и соответствующего ограничения первичного ключа. В примерах 5.7 и 5.10 задаются два таких ограничения: prim_empl и foreignworks. Предложение references в примере 5.10 определяет таблицу employee в качестве родительской таблицы.
Оценить
(0 голоса)
Существуют четыре случая, когда изменение значения внешнего или первичного ключа могут вызвать проблемы. Все эти случаи будут рассмотрены с использованием базы данных sample. Первые два случая влияют на изменения дочерней таблицы, тогда как последние два связаны с изменениями родительской таблицы.
Оценить
(0 голоса)
Добавление новой строки в дочернюю таблицу workson вводит новый номер служащего, для которого нет соответствующего служащего в родительской таблице (employee). Если ссылочная целостность для обеих таблиц задана так, как это сделано в примерах 5.7 и 5.10, то Database Engine отменяет добавление новой строки. Для читателя, знакомого с языком SQL, соответствующим оператором Transact-SQL будет use sample; insert into works_on (emp_no,   ...) values  (11111,   ...);
Оценить
(0 голоса)
В этом случае существующее значение внешнего ключа в таблице workson должно быть изменено на новое значение, для которого нет соответствующего значения в родительской таблице employee. Если ссылочная целостность для обеих таблиц задана так, как это сделано в примерах 5.7 и 5.10, то система базы данных отменит изменение этих строк в таблице workson. Соответствующий оператор Transact-SQL: use sample; update works_on set emp_no = 11111 where emp_no = 10102;
Оценить
(0 голоса)
В этом случае изменяется только существующее значение первичного ключа родительской таблицы, но не меняется соответствующее значение внешнего ключа в дочерней таблице. По этой причине система отменяет изменение строки в таблице employee с номером служащего 10102. Ссылочная целостность требует выполнения условия, что ни одна строка в дочерней таблице (с учетом предложения foreign key) не может присутствовать, если в родительской таблице нет соответствующей строки (предложение primary key). В противном случае строки в дочерней таблице станут «осиротевшими». Если бы модификации, описанные выше, были разрешены, то строки в таблице workson, имеющие номер служащего 10102, стали бы осиротевшими. Система должна отменить это изменение. Соответствующий оператор…
Оценить
(0 голоса)
Database Engine может по-разному реагировать на удаление или изменение первичного ключа таблицы. Если вы постараетесь изменить значение внешнего ключа, и это изменение повлечет несогласованность с соответствующим первичным ключом (см. случаи 1 и 2 в предыдущем разделе), система базы данных всегда будет отменять такое изменение и выдаст сообщение вроде следующего: Server: Msg 547, Level 16,  State 1,  Line 1 UPDATE statement conflicted with COLUMN FOREIGN KEY constraint 1FKemployee'. The conflict occurred in database 'sample', table 'employee', column 'dept_no'. The statement has been terminated. (Оператор изменения конфликтует с ограничением внешнего ключа для столбца 'FKemployee'. Конфликт появился в базе данных 'sample', в таблице…
Оценить
(0 голоса)
Реляционная база данных содержит не только базовые таблицы, которые существуют со своими привилегиями, но также и представления, которые являются виртуальными таблицами. Данные базовых таблиц существуют физически, т. е. они сохранены на диске, в то время как представление является производным от одной или более базовых таблиц. Оператор create view создает новое представление из одной или более существующих таблиц (или представлений), используя оператор select, который является неотъемлемой частью оператора create view. Так как в создании представления всегда присутствует запрос, то оператор create view относится к языку манипулирования данными (DML), а не к языку определения данных (DDL). По этой причине создание и удаление…
Оценить
(0 голоса)
Домен - множество всех возможных допустимых значений, которые может принимать столбец таблицы. Почти все СУБД используют базовые типы данных, такие как шт, char и date, для определения множества возможных значений столбца. Этот метод усиления «целостности домена» является неполным, как можно увидеть из следующего примера. Таблица person имеет столбец zip, который задает ZIP-код (почтовый индекс) города, в котором живет человек. Этот столбец может быть объявлен с типом данных smallint или char(5). Объявление с типом данных smallint является неточным, потому что тип данных smallint содержит все положительные и отрицательные целые числа в диапазоне между -215 и 215- 1. Объявление с использованием char(5)…
Оценить
(0 голоса)
Псевдоним типа данных является специальным видом типа данных, который определяется пользователем при использовании существующих базовых типов данных. Такие типы данных могут быть использованы в операторе create table для определения одного или более столбцов в базе данных. Оператор create type обычно применяется для создания псевдонима типа данных. Синтаксис этого оператора имеет следующий вид: create type [type_schema_name.]   type_name {[ from base_type [( precision [,  scale ])]   [ null | not null ] ] i  [ external name assembly_name [.class_name ]  ]} В примере 5.14 показано создание типа данных «псевдоним» с использованием оператора create type.   В примере 5.14 создается псевдоним типа zip,…
Оценить
(0 голоса)
Оператор create type может быть также применен для создания определенного пользователем типа данных с использованием .NET. В этом случае реализация определенного пользователем типа данных будет определяться в классе сборки Common Language Runtime (CLR). Это означает, что вы можете использовать один из языков .NET, типа С# или Visual Basic для реализации нового типа данных. Дальнейшее обсуждение определенных пользователем типов данных выходит за рамки тематики данной книги.
© 2019 serversql.ru. Все права защищены.