|
|
|
|
|
|
|
|
Создание базы данных MS SQL Server
Базы данных создаются командой CREATE DATABASE. Создание баз данных разрешается любому пользователю с ролью системного администратора или всем, кому системный администратор предоставил такое право. Команда CREATE DATABASE имеет следующий синтаксис:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Модификация баз данных MS SQL Server
В SQL Server 7.0 модификация баз данных выполняется нечасто. И все же не исключено, что вам придется добавить новые файлы или группы, уменьшить размер базы, сменить владельца или имя базы данных, заново сконфигурировать существующий файл или группу. Возможны любые модификации, кроме переименования базы в многопользовательском режиме. Удаление базы данных
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Команда ALTER
Команда ALTER DATABASE позволяет изменить как определение, так и размер базы данных. Она имеет следующий синтаксис:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Уменьшение размера баз данных
Уменьшение размера баз данных вручную выполняется командой DBCC SHRINKDATABASE. Она имеет следующий синтаксис:
DBCC SHRINKDATABASE
( имя_базы [, процент]
[, {NOTRUNCATE | TRUNCATEONLY}]
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Настройка параметров баз данных
Многие параметры конфигурации SQL Server настраиваются на уровне баз данных. Конфигурация может осуществляться хранимой процедурой sp_dboption. Процедура sp_dboption имеет следующий синтаксис:
sp_dboption ['база_данных'] [, 'имя_параметра'] [, 'значение']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Просмотр сведений о базе данных
MS SQL Server содержит три стандартных процедуры каталога (см. табл. 3.6) для просмотра сведений о базах данных, файлах и группах: sp_helpdb, sp_helpfile и sp_helpfilegroup. Процедура sp_helpdb выводит информацию о базе данных и о ее конфигурации. Хранимая процедура sp_helpdb имеет следующий синтаксис:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Структура команды SELECT
Команда SELECT состоит из семи основных частей: • Список выборки; • FROM; • WHERE; • GROUP BY; • HAVING; • ORDER BY; • COMPUTE.
Все части команды SELECT, кроме списка выборки, являются необязательными. Порядок их перечисления строго фиксирован. Синтаксис команды приведен ниже:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция FROM
Секция FROM определяет источник(и) данных для выборки. Вы можете обращаться к данным из таблиц, представлений или производных таблиц. Синтаксис секции FROM приведен ниже:
FROM
{ <таблица_или_представление>| (команда_выборки)
[AS] псевдоним_таблицы (псевдоним_столбца , ...]
| <таблица_или_представление>| CROSS JOIN
<таблица_или_представление>
{ { INNER | { FULL | LEFT | RIGHT } [OUTER] JOIN }
<таблица_или_представление>
ON <условие_объединения>
}[, ...n]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция FROM - уточнение имен объектов
Уточненное имя таблицы записывается в форме ИмяСервера.ИмяБазы.ИмяВладельца.ИмяТаблицы: • ИмяСервера — по умолчанию — текущий сервер; • ИмяБазы — по умолчанию — текущая база данных; • ИмяВладельца — по умолчанию сначала проверяется, принадлежит ли таблица текущему пользователю; если не принадлежит, по умолчанию используется владелец базы данных; • ИмяТаблицы — имя таблицы; должно быть задано. Если задано имя сервера, необходимо либо задать имена базы и владельца, либо воспользоваться заполнителем (..). Если задано имя базы данных, необходимо либо задать имя владельца, либо включить заполнитель:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция WHERE
Секция WHERE определяет критерий отбора записей, включаемых в итоговый набор. Возвращаются только те записи, которые соответствуют условиям секции WHERE. Синтаксис секции WHERE приведен ниже:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция IN
Секция IN проверяет, принадлежит ли столбец набору (списку) значений. Команду IN всегда можно переписать в виде группы условий, объединяемых оператором OR. Ниже приведены два примера использования секций IN:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция LIKE
Секция LIKE выполняет поиск по шаблону для символьных строк. Она используется в ситуациях, когда вас не интересует точное совпадение, — например, вы не знаете точного написания слова. Шаблон может содержать обычные и универсальные (wildcards) символы. В табл. 6.2 перечислены универсальные символы шаблонов и их смысл.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция BETWEEN
Секция BETWEEN определяет верхнюю и нижнюю границы интервала. Она применяется в случаях, когда вам известны минимальное и максимальное значения искомой величины. Если нижняя граница больше верхней, не возвращается ни одна запись. Выражения должны принадлежать к типам данных, неявно преобразуемым друг в друга, или их явное преобразование должно выполняться в команде SELECT (преобразование типов данных рассматривается ниже). Пример использования секции BETWEEN продемонстрирован в следующем фрагменте:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проверка на NULL
Для поиска неопределенных значений NULL SQL Server следует воспользоваться расширением Transaction SQL =NULL. Вы можете включить в список выборки функцию IS NULL и вернуть другое значение в случае, если столбец содержит NULL. Следующий пример показывает, как проверяются неопределенные значения и как извлекаются записи, у которых столбец не равен NULL:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция GROUP BY
Секция GROUP BY предназначена для включения промежуточных результатов в итоговый набор. Она используется в сочетании с агрегатными функциями (агрегатные функции подробно описаны ниже) для получения обобщающих данных. Агрегатная функция обрабатывает данные нескольких записей и вычисляет обобщающий результат, возвращаемый как часть списка выборки. При использовании GROUP BY все столбцы итогового набора либо являются агрегатными функциями, либо включаются в секцию GROUP BY. Секция GROUP BY имеет следующий синтаксис:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция HAVING
Секция HAVING похожа на WHERE, однако она может использоваться только в сочетании с секцией GROUP BY. Секция HAVING содержит только те столбцы, которые присутствуют в списке выборки. В ней можно использовать агрегатные функции, отсутствующие в списке выборки. Следующий фрагмент демонстрирует применение секции HAVING:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция ORDER BY
В процессе выборки данные возвращаются в порядке их нахождения SQL Server. Ключевое слово ORDER BY позволяет отменить такое поведение и определить порядок возвращения записей. Конкретный порядок зависит от системного порядка сортировки. Результат можно сортировать по нескольким столбцам, однако общая длина данных во всех сортируемых столбцах должна быть меньше 8060 байт. Если превысить этот порог, запрос не будет работать.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции
Функции позволяют SQL Server выполнять вычисления с данными и генерировать результаты. Они похожи на функции любого другого языка программирования. Функции SQL Server делятся на три типа:
• Скалярные — обрабатывают одно значение (или ни одного) и возвращают один результат. • Агрегатные — обрабатывают набор значений. • Функции наборов записей — заменяют имена таблиц.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Конструкция CASE
В отличие от других скалярных функций, CASE скорее является синтаксической конструкцией — она рассматривает несколько условий для получения одного результата. В простейшем варианте выражение сравнивается с набором простых выражений. Более сложный вариант (формат CASE с поиском) вычисляет набор логических выражений. Синтаксис функции CASE:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции SQL Server - Функции даты
SQL Server содержит много функций для работы с датами. В большинстве функций даты одним из параметров является компонент даты. Допустимые значения компонентов перечислены ниже:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции SQL Server - Преобразование типов данных
MSSQL Server выполняет неявное преобразование различных типов данных. При этом преобразуемые типы данных определяются в соответствии с правилами приоритета; типы данных с низким приоритетом преобразуются в данные с высоким приоритетом. Приоритеты различных типов данных (по убыванию) перечислены ниже:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции SQL Server - Агрегатные функции
Агрегатные функции обобщают информацию нескольких элементов данных и возвращают одно значение. Они используются в сочетании с секциями GROUP BY и HAVING. Агрегатные функции перечислен ниже
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции SQL Server - Функции наборов записей
Функции наборов записей (rowset) могут использоваться в команде SELECT вместо имен таблиц. Данная категория содержит четыре функции:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Объединение таблиц.
Довольно часто данные, которые требуется извлечь, находятся в нескольких таблицах. Конструкция JOIN позволяет создать объединение, то есть выбрать данные из многих (до 256) таблиц, представлений или производных таблиц.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Расширенные объединения TSQL
Расширенные объединения TSQL находятся в секции WHERE. В объединениях TSQL оператор сравнения используется для столбцов объединяемых таблиц или для выражений, содержащих столбцы:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Объединения ANSI
SQL Server поддерживает объединения стандарта ANSI. В объединениях ANSI тип и условие объединения задаются в секции FROM. Стандарт ANSI поддерживает внутренние, внешние и ортогональные объединения. В отличие от расширенных объединений TSQL, объединения ANSI допускают использование таблицы в качестве как внутренней, так и внешней таблицы объединения.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Подзапросы (subquery)
Подзапросы (subquery) позволяют включать команды SELECT в другие запросы. Если таблица принадлежит не внешнему запросу, а вложенному подзапросу, то столбцы этой таблицы могут использоваться только в подзапросе. Подзапросы не могут содержать секций ORDER BY, COMPUTE или FOR BROWSE. Они могут присутствовать в секциях FROM в качестве производных таблиц, а также в секциях WHERE и HAVING.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Секция TOP
SQL Server позволяет указать в списке выборки, что вас интересует лишь часть возвращаемого итогового набора. Для этой цели используется секция TOP, которая должна находиться до списка выборки. Секция TOP имеет следующий синтаксис:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MS SQL Server - Выборка данных из столбцов типа TEXT и IMAGE
При выборке данных из столбцов типа TEXT, NTEXT или IMAGE SQL Server извлекает данные объема @@TEXTSIZE. Для управления выборкой данных типов TEXT, NTEXT или IMAGE в SQL Server существует команда READTEXT, обладающая следующим синтаксисом:
|
|
|
|
|
|
|
|
|