Язык 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 голоса)
Предложение order by определяет конкретный порядок строк в полученном результате выполнения запроса. Это предложение имеет следующий синтаксис: order by {[col_name i  col_number [asc | desc]]},   ... Столбец coi_name определяет упорядочивание. Параметр coi_number является альтернативной спецификацией, которая задает столбец по его позиции в последовательности всех столбцов в списке выбора select (1 для первого столбца, 2 для второго и т. д.). asc задает возрастающий порядок, a desc - убывающий. При этом asc является значением по умолчанию. Как показывает синтаксис предложения order by, критерии упорядочения могут содержать более одного столбца (пример 6.39).     В предложении order by также можно указывать столбцы по…
Оценить
(0 голоса)
Столбцы с числовым типом данных, таким как tinyint, smallint, integer или bigint, могут иметь свойство identity. Database Engine генерирует значения для подобных столбцов последовательно, начиная с заданного начального значения. По этой причине вы можете использовать свойство identity, чтобы дать системе возможность генерировать уникальные числовые значения для столбца таблицы по вашему выбору. Каждая таблица может иметь только один столбец со свойством identity. Владелец таблицы может задавать начальный номер и значение приращения (пример 6.41).   В примере 6.41 вначале создается таблица product. Эта таблица имеет столбец product_no с заданным свойством identity. Значения столбца product_no автоматически генерируются системой, начиная с номера 10 000…
Оценить
(0 голоса)
В дополнение к операторам, описанным в предыдущих разделах, существуют три оператора над множествами, поддерживаемых языком Transact-SQL: ♦ union; ♦ intersect; ♦ except. Оператор над множествами UNION Результатом объединения (union) двух множеств является множество всех элементов, присутствующих в одном или обоих наборах. Соответственно, объединение двух таблиц является новой таблицей, содержащей все строки, присутствующие в одной или в обеих таблицах. Общая форма оператора union: select_l union  [all]  select_2 {[union [all]  select_3]}... Параметры seiect_i, seiect_2, ... - операторы select, которые составляют объединение. Если используется опция all, то все результирующие строки, включая дубликаты, будут отображаться. Опция all имеет в операторе union такое же значение,…
Оценить
(0 голоса)
Двумя другими операторами над множествами являются оператор intersect, который задает пересечение, и except, который определяет операцию разности множеств. Пересечением двух таблиц является множество строк, которые одновременно принадлежат обеим таблицам. Разность двух таблиц - множество строк, которые принадлежат первой таблице и не присутствуют во второй таблице. В примере 6.45 показано использование оператора intersect.   В примере 6.46 показано использование оператора над множествами except.    
Оценить
(0 голоса)
При программировании приложений баз данных иногда бывает необходимыми изменять представление данных. Например, род (gender) человека может быть кодирован с использованием значений 1, 2 и 3 (для женщины, мужчины и ребенка соответственно). Такие программные техники позволяют сократить время на реализацию программы. Выражение case в языке Transact-SQL делает подобный тип кодирования простым в реализации. Выражение case имеет две различные формы: ♦ простое выражение case; ♦ поисковое выражение case. Синтаксис простого выражения case: case expression_l [when expression_2 then result_l]... [else result_n] end Оператор Transact-SQL с простым выражением case отыскивает первое выражение в списке всех предложений where, которое соответствует выражению expression_i, и выполняет соответствующее…
Оценить
(1 голос)
Предложение compute использует агрегатные функции (min, max, sum, avg и count) для вычисления итоговых значений, которые появляются как дополнительные строки в результате выполнения запроса. Агрегатные функции, используемые в предложении compute, рассматриваются как строки агрегатных функций. Агрегатные функции обычно применяются к строкам таблицы для вычисления скалярных величин, которые затем появляются в результате выполнения запроса в виде дополнительной строки (см. пример 6.49). Запрос, использующий такую форму агрегатных функций, возвращает строку в качестве результата. Предложение compute имеет необязательную опцию by, которая определяет форму группирования результата. Если by опущено, строка агрегатной функции применяется ко всем строкам результата запроса. Опция by имя_столбца указывает, что значения…
Оценить
(0 голоса)
Временные таблицы являются объектом базы данных, которые временно хранятся и управляются системой базы данных. Временные таблицы могут быть локальными и глобальными. Локальные временные таблицы имеют физическое представление - они хранятся в системной базе данных tempdb. Они задаются с префиксом # (например, #tabie_name). Локальными временными таблицами владеет сессия, которая их создала; они видимы только для этой сессии. Соответственно, такие таблицы автоматически удаляются, когда завершается создавшая их сессия. (Если вы определяете временную локальную таблицу внутри хранимой процедуры, то таблица будет удалена, когда завершится выполнение соответствующей процедуры.) Глобальные временные таблицы видимы любому пользователю и каждому новому соединению, выполненному после их создания. Они удаляются,…
Оценить
(0 голоса)
Предыдущие разделы этой главы демонстрировали использование оператора select для выборки данных из одной таблицы базы данных. Если бы язык Transact-SQL поддерживал только такие простые операторы select, то подключение двух и более таблиц для выборки данных было бы невозможным. Следовательно, все данные базы данных должны были бы храниться в одной таблице. Хотя хранение всех данных базы данных внутри одной таблицы в принципе возможно, оно имеет один главный недостаток - хранимые данные будут весьма избыточны. Transact-SQL предоставляет оператор соединения, который выбирает данные более чем из одной таблицы. Этот оператор, возможно, является одним из наиболее важных операторов для систем реляционных баз данных, потому…
Оценить
(0 голоса)
Для соединения таблиц вы можете использовать две различные формы: ♦ явный синтаксис соединения (синтаксис соединения ANSI SQL: 1992); ♦ неявный синтаксис соединения («старый стиль» синтаксиса соединения). Синтаксис соединения ANSI SQL: 1992 был введен стандартом SQL92, он явно определяет операции соединения, т. е. с использованием соответствующих имен для каждого типа операции соединения. Ключевыми словами, связанными с явным заданием соединения, являются: ♦ cross join; ♦ [inner] join; ♦ left [outer] join; ♦ right [outer]   join; ♦ full  [outer]   join. cross join задает декартово произведение двух таблиц, inner join определяет естественное соединение двух таблиц, a left outer join и right outer join задают,…
Оценить
(0 голоса)
Естественное соединение лучше всего объяснить через использование примера, так что см. пример 6.52.   Список выбора select в примере 6.52 включает все столбцы таблиц employee и department. Предложение from в операторе select задает соединяемые таблицы и явное название формы соединения (inner join). Предложение on также является частью предложения from; оно задает столбцы соединения в обеих таблицах. Условие employee.dept_no = department.dept_no в примере 6.52 определяет условие соединения, а оба столбца называются столбцами соединения. Эквивалентным решением будет следующее: Синтаксис «старого стиля»: use sample; select employee.*, department.* ' from employee, department where employee.dept_no = department.dept_no; Синтаксис «старого стиля» имеет два существенных отличия: предложение…
© 2019 serversql.ru. Все права защищены.