Язык 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.

Просмотреть материалы...

Оценить
(9 голоса)
В предыдущих главах описывались операторы Transact-SQL, которые принадлежат языку определения данных DDL или языку манипулирования данными DML. Большинство из этих операторов может быть сгруппировано вместе для создания пакета. Как было сказано, пакет является последовательностью операторов Transact-SQL и процедурных расширений, которые отправляются в систему баз данных для совместного выполнения. Количество операторов в пакете ограничивается размером скомпилированного пакетного объекта. Основным преимуществом пакета перед группой одиночных операторов является то, что выполнение за один раз всех операторов дает значительный выигрыш в производительности. Существует много ограничений, связанных с использованием различных операторов Transact-SQL внутри пакета. Наиболее важное заключается в том, что операторы определения данных create view,…
Оценить
(1 голос)
Блок позволяет создавать программную единицу из одного или более операторов Transact-SQL. Каждый блок начинается с оператора begin и заканчивается оператором end, как показано в следующем примере: begin оператор 1 оператор 2 END Блок может быть использован внутри оператора if, чтобы предоставить возможность выполнения более одного оператора в зависимости от некоторого условия (см. пример 8.1).
Оценить
(3 голоса)
Оператор if в языке Transact-SQL соответствует оператору с тем же названием, который поддерживается почти всеми языками программирования. Оператор if выполняет один оператор Transact-SQL (или несколько операторов, составляющих блок), если логическое выражение, которое следует за ключевым словом if, возвращает значение «истина». Если оператор if содержит оператор else, то вторая группа операторов будет выполняться, если логическое выражение возвращает ложь, возвращает истину для базы данных sample.   Поэтому выполняется одиночный оператор print в части if. Обратите внимание, что этот пример использует подзапрос для определения количества строк (с помощью агрегатной функции count), которые соответствуют условию в предложении where (projectno = 'pi')- Результатом выполнения примера…
Оценить
(1 голос)
Оператор while многократно выполняет один оператор Transact-SQL (или более операторов, заключенных в блок), пока логическое выражение возвращает значение «истина». Другими словами, если выражение истинно, то выполняется оператор (или блок операторов), после чего опять вычисляется логическое выражение, чтобы определить, должен ли снова выполняться оператор (или блок операторов). Этот процесс повторяется, пока выражение не станет ложным. Блок в операторе while может содержать один из двух операторов, используемых для управления выполнением операторов в блоке: break или continue. Оператор break останавливает выполнение операторов внутри блока и начинает выполнять оператор, следующий сразу за этим блоком. Оператор continue останавливает выполнение только текущего оператора и начинает выполнение…
Оценить
(0 голоса)
Локальные переменные являются важным процедурным расширением языка Transact-SQL. Они используются для хранения значений (любых типов) в пакетах или подпрограммах. Они являются «локальными» потому, что на них можно сослаться только в том же пакете, в котором они определены. Database Engine также поддерживает глобальные переменные, которые описываются. Каждая локальная переменная должна быть определена с использованием оператора declare. Синтаксис оператора declare см. в примере 8.3. Определение каждой переменной содержит ее имя и соответствующий тип данных. К переменным всегда выполняется обращение с использованием префикса @. Присваивание значений локальным переменным выполняется с помощью следующих конструкций: ♦ специальной формы оператора select; ♦ оператором set. Использование обоих…
Оценить
(2 голоса)
Процедурное расширение языка Transact-SQL также содержит следующие операторы: ♦ return; ♦ goto; ♦ raiseerror; ♦ waitfor. Оператор return имеет ту же функциональность внутри пакета, что и оператор break внутри while. Это означает, что оператор return приводит к завершению выполнения пакета, после чего будет выполняться первый оператор, следующий сразу после пакета. Оператор goto передает управление на метку, которая стоит перед оператором Transact-SQL в этом же пакете. Оператор raiseerror генерирует сообщение об ошибке, созданное пользователем, и устанавливает флаг системной ошибки. Номер ошибки, определенной пользователем, должен быть больше чем 50 000. (Все номера ошибок, меньше или равные 50 000, определены в системе и…
Оценить
(0 голоса)
Версии SQL Server, предшествующие SQL Server 2005, требовали написание кода обработки ошибок после каждого оператора Transact-SQL, который может вызывать ошибки. (Вы можете обрабатывать ошибки, используя глобальную переменную @@error. В примере 13.1 показано использование этой переменной.) Начиная с SQL Server 2005, вы можете перехватить и обработать исключения, используя два оператора- try и catch. В этом разделе вначале объясняется, что означает «исключение», затем обсуждается работа этих двух операторов. Исключение- это проблема (обычно ошибка), которая препятствует продолжению выполнения программы. При наличии такой проблемы вы не можете продолжать обработку, потому что у вас нет достаточной информации, необходимой для решения проблемы. По этой причине существующая…
Оценить
(2 голоса)
Хранимая процедура является специальным видом пакета, написанного на Transact-SQL с использованием языка SQL и его процедурных расширений. Основным отличием между пакетом и хранимой процедурой является то, что процедура сохраняется как объект базы данных. Другими словами, хранимая процедура сохраняется на серверной стороне для улучшения производительности и согласованности повторяющихся задач. Database Engine поддерживает хранимые процедуры и системные процедуры. Хранимые процедуры создаются тем же самым способом, что и все другие объекты базы данных, т. е. при помощи языка DDL. Системные процедуры предоставляются через Database Engine и могут быть использованы для доступа и изменения информации в системных каталогах. Этот раздел описывает хранимые процедуры (определяемые…
Оценить
(0 голоса)
Хранимые процедуры создаются при помощи оператора create procedure, который имеет следующий синтаксис: create proc[edure]   [schema_name.]proc_name [{{Qparaml} typel [ varying]   [= default!]   [output])]  (,   ...} [with { recompile | encryption | execute as   'user_name' }} [for replication] as batch i external name method_name; Здесь schema_name- имя схемы, которой назначается создаваемая хранимая процедура; ргос_  - имя новой хранимой процедуры; Qparami - это имя параметра, a typel задает его тип данных. Параметр в хранимой процедуре имеет тот же самый логический смысл, что и локальная переменная в пакете. Параметры являются значениями, передаваемыми от вызвавшего объекта хранимой процедуре и используемыми в хранимой процедуре. Параметр defauiti…
Оценить
(2 голоса)
Database Engine также поддерживает и оператор alter procedure, который изменяет структуру хранимой процедуры. Оператор alter procedure обычно используется для изменения операторов Transact-SQL внутри процедуры. Все опции оператора alter procedure соответствуют опциям с теми же названиями в операторе create procedure. Основным назначением этого оператора является исключение переназначения существующих привилегий для хранимой процедуры. Хранимая процедура (или группа хранимых процедур с тем же именем) удаляется при использовании оператора drop procedure. Только владелец хранимой процедуры или участники фиксированных ролей dbowner и sysadmin могут удалять процедуру. Database Engine содержит несколько представлений каталогов, относящихся к хранимым процедурам. Наиболее важными представлениями являются sys.objects и sys.procedures. Все строки…
«ПерваяПредыдущая12345678910СледующаяПоследняя»
Навигация
© 2021 serversql.ru. Все права защищены.