Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие
.pdf
Слева от редактора запросов расположено окно обозревателя
объектов, позволяющее осуществлять навигацию по базе данных:
просматривать доступные объекты, выполнять запросы на просмотр содержимого таблиц, создавать скрипты для объектов и т. д.
(см. рис. 3).
База данных, для которой выполняется запрос, либо выбирается из выпадающего списка в левой верхней части окна (
см. рис. 3),
либо устанавливается командой Use <имя базы данных>, например:
Use BookLibrary.
Для изменения параметров сервера с помощью Management
Studio необходимо выбрать нужный сервер, в контекстном меню
выбрать команду Свойства и в появившемся диалоговом окне выполнить конфигурирование сервера (рис. 4).
Рис. 4
10

На вкладке Общие отображаются основные сведения о систе-
ме: версия операционной системы, объем памяти, количество процессоров и др., а также параметры запуска служб сервера.
Вкладка Память позволяет управлять выделением памяти для
выполнения действий MS SQL Server: либо динамическое управление памятью, либо установка фиксированного размера.
Вкладка Процессоры позволяет управлять тем, на каких про
-
цессорах можно выполнять запросы SQL.
С помощью вкладки Безопасность определяется тип ау тенти -
фикации пользователей, также определяются параметры аудита
доступа к серверу. Можно настроить сервер на использование определенной учетной записи, под которой будет запускаться служба
MSSQLServer.
Вкладка Соединения позволяет конфигурировать клиентские
подключения к серверу. Если параметр равен 0, то разрешается под-
ключение максимального
количества пользователей – 32 767 под-
ключений.
С помощью вкладки Параметры базы данных указываются
настройки вновь создаваемых баз данных: параметры индексов
и работы с устройствами резервного копирования, время восстановления базы данных.
Вкладка Дополнительно содержит некоторые общие установ-
ки сервера. Например, определяется язык по умолчанию для сообщений сервера или регулируется поддержка 2000 года,
которая оп-
ределяет, как будут интерпретироваться две последние цифры года.
Вкладка Разрешения позволяет управлять именами входа
и ролями, а также управлять правами на выполнение действий в MS
SQL Server.
1.3.3. Мастер импорта и экспорта данных
Мастер импорта и экспорта SQL Server может копировать данные из любого источника, для которого существует управляемый
поставщик данных .NET Framework или
собственный поставщик
данных OLE DB, а также в любой такой источник (рис. 5). Доступны поставщики для следующих источников данных:
SQL Server;
неструктурированные файлы;
11

Microsoft Office Access;
Microsoft Office Excel.
Рис. 5
12

2. БАЗА ДАННЫХ И ЕЕ ОБЪЕКТЫ
2.1. Физическая структура базы данных
Основной структурой хранения данных является база данных.
Физически база данных представляет собой набор файлов на диске,
причем существует два типа файлов базы данных:
Файлы данных, предназначенные для хранения информа-
ции, находящейся в таблицах, а также индексов, хранимых процедур, триггеров, пользовательских типов данных и других объектов
базы данных.
Файлы
журнала транзакций, куда записывается информа-
ция о ходе выполнения транзакций.
Любая база данных должна содержать как минимум один
файл данных и один файл журнала транзакций. При необходимости
можно добавлять новые файлы обоих типов. Если компьютер имеет
несколько физических дисков, то для повышения производительности рекомендуется каждый файл располагать на отдельном
диске.
Файлы данных, в свою очередь, тоже бывают двух типов (рис. 6):
Основной файл (primary file). Каждая база данных может
иметь только один главный файл. Он предназначен для хранения
системных таблиц, информации о структуре базы данных, созданных в ней объектах, параметрах дополнительных файлов. Также
в нем могут находиться и пользовательские данные. По
умолчанию
этот файл имеет расширение mdf.
Вторичный или дополнительный файл (secondary file). База
данных может содержать несколько дополнительных файлов данных или не содержать их вообще. В них могут храниться только
пользовательские данные. Дополнительные файлы обычно создаются с целью распределения данных на множестве физических
дисков для, как уже упоминалось, повышения производительности.
По умолчанию эти файлы имеют расширение ndf.
Файлы журнала транзакций могут быть только одного типа,
служащего для хранения журнала транзакций. Для ускорения работы можно использовать несколько журналов транзакций, расположенных на разных дисках. По умолчанию, файлы журнала транзакций имеют расширение ldf.
13

Рис. 6
Любой файл идентифицируется по двум именам:
OS File Name (физическое имя) – имя файла на диске. Не-
обходимо для применения функций операционной системы по работе с файлами;
Logical File Name (логическое имя) – имя, которое приме-
няется внутри СУБД MS SQL Server для ссылки на соответствующий файл.
Файлы данных объединяются в группы с целью сохранения
данных
таблиц и даже отдельных столбцов в определенных файлах.
По умолчанию изначально в базе данных создается одна-единственная группа PRIMARY и все данные хранятся в этой группе.
Для объединения дополнительных файлов администратор может
создать одну или несколько пользовательских групп. Для некоторой группы файлов может быть установлен режим «только для чте-
», что ускорит операции обращения к данным, так как надоб-
ния
ность в ведении журнала транзакций отпадает. Следует отметить
также, что СУБД при хранении данных в группе файлов равномерно распределяет эти данные между всеми файлами в группе, т. е.
14

данные записываются во все файлы параллельно. Это дает в некоторых случаях весьма значительное повышение производительности операций ввода-вывода, так как данные одной таблицы могут
считываться параллельно из нескольких файлов, расположенных на
разных дисках.
Данные таблиц в файле хранятся в наборе страниц данных,
которые имеют размер 8 КБ. Каждая страница имеет
заголовок, который содержит идентификатор владеющей данной страницей таблицы и указатели на следующую и предыдущую страницы в связанном списке. Непосредственно после заголовка располагаются
данные столбцов таблицы. Каждая страница применяется для хранения строк только одной таблицы, для чего она разбивается на
один или более блоков (слотов). Каждый слот
используется для
хранения только одной строки. Размер слота, следовательно, и количество их на странице зависят от размера соответствующей строки. Размер слота в ходе работы с таблицей может меняться, если
в таблице используются типы данных переменной длины. В конце
страницы расположена таблица смещений слотов; остальное пространство страницы занято строками
данных. Помимо данных таблиц в страницах может храниться служебная информация – индексы, хранимые процедуры, триггеры, пользовательские типы данных
и т. д.
Минимальным объемом памяти, который выделяется любому
объекту базы данных, является экстент – группа из восьми страниц.
Экстент, в зависимости от типа (uniform или mixed), может содержать страницы, принадлежащие либо одному
объекту, либо разным.
2.2. Таблицы и типы данных
Таблицы – это единственный объект базы данных, используемый для хранения пользовательских данных. С точки зрения пользователя, таблица представляет собой двумерный массив, каждая
строка которого представляет собой экземпляр описываемого в таблице типа объекта, а столбцы – это атрибуты объекта. Основополагающей характеристикой столбца является тип данных.
MS SQL Server поддерживает все основные простые
типы дан-
ных, используемые в современных языках программирования.
15

В версии MS SQL Server 2008 были добавлены несколько новых
типов, а некоторые перестали рекомендоваться к использованию.
Таблица 1
Тип данных Описание
Целочисленные данные (целые числа) от –2^63 (–9 223 372
bigint
integer
smallint
tinyint
bit
numeric (p, s)
или
decimal (p, s)
money
float
real
datetime
036 854 775 808) до 2^63 – 1 (9 223 372 036 854 775 807).
Размер хранения составляет 8 байт
Целочисленные данные (целые числа) от –2^31 (–2 147 483 648)
до 2^31 – 1 (2 147 483 647).
Размер хранения составляет 4 байта
Целочисленные данные от –32 768 до 32 767. Размер хране-
ния составляет 2 байта
Целочисленные данные от 0 до 255. Размер занимаемой памяти –
1 байт
Целочисленные данные со значением 1 либо 0.
Размер занимаемой памяти – 1 бит
Данные с фиксированной точностью и численным масштабом
от –10^38 + 1 до 10^38 – 1. Переменная p указывает точность
и может принимать значения от 1 до 38. Переменная s указывает масштаб, она может принимать значения от 0 до p.
Размер хранения составляет 19 байт
Значения денежных данных от (–2^63/10 000) (–922 337 203
685 477,5808) до (2^63 – 1)/10 000 (922 337 203 685 477,5807)
с точностью до десятитысячной доли денежной единицы. Размер хранения составляет 8 байт
Числовые данные с плавающей запятой от –1,79E +308
до 1,79E+308
Размер хранения составляет 8 байт
Числовые данные с плавающей точностью от –3,40E+38
до 3,40E+38.
Размер хранения составляет 4 байта
Данные даты и времени от 1 января 1753 г. по 31 декабря 9999 г.
с точностью до одной трехсотой секунды или 3,33 миллисекунды. Значения округляются с шагом 0,000, 0,003 или 0,007
миллисекунды. Хранятся как два 4-байтовых целочисленных
значения. В первых 4 байтах хранится количество дней до
или после 01.01.1900. Базовая дата – это эталонная дата сис-
16

Тип данных Описание
темы. Значения для datetime ранее 1 января 1753 г. запрещены. В других 4 байтах хранится время дня в миллисекундах
после полуночи. Допустимый диапазон секунд – от 0 до 59.
Пример
ГГГГ-ММ-ДД чч:мм:сс 1947-08-15 03:33:20
Это устаревший тип данных, который лучше не использовать
Данные даты и времени от 1 января 0001 г. по 31 декабря 9999 г.
Date
Применяется, если нужна только дата. Размер – 3 байта.
Пример
ГГГГ-ММ-ДД 1947-08-15
Время суток от 00:00:00 до 23:59:59 с точностью до заданной
доли секунды. Размер – от 3 до 5 байтов. Величина n может
принимать значения от 0 (т. е. значения времени задаются
Time[(n)]
с точностью до секунды) до 7 (значения времени задаются
с точностью до 100 наносекунд)
Пример
чч:мм:сс.ddd 03:23:20.554
Новый тип данных, поддерживает точность до 0,1 мс.
Размер – от 6 до 8 байтов.
datetime2[(n)]
Пример
ГГГГ-ММ-ДД чч:мм:сс.ddddddd
1947-08-15 03:23:20.5542114
char(n)
varchar(n)
text
Символьные данные (не Юникод) постоянной длины с максимальной длиной 8 000 символов
Символьные данные (не Юникод) переменной длины с максимальной длиной от 1 до 8000 символов
Данные (не Юникод) переменной длины с максимальной длиной до 2 Гб
Символьные данные (Юникод) постоянной длины с макси-
nchar(n)
мальной длиной 4000 символов. Размер занимаемой памяти
в байтах – количество введенных символов, умноженное на два
Символьные данные (Юникод) переменной длины с макси-
nvarchar(n)
мальной длиной от 1 до 4000 символов. Размер занимаемой
памяти в байтах – количество введенных символов, умноженное на два
Данные (Юникод) переменной длины с максимальной длиной
ntext
до 2 Гб. Размер занимаемой памяти в байтах равен количеству введенных символов, умноженному на два
Данные в Юникоде постоянной длины n знаков, значение n
Nchar(n)
должно быть в диапазоне от 1 до 4000. Занимаемый размер –
2n байт
Двоичные данные постоянной длины с максимальной длиной
binary(n)
8000 байт. Размер занимаемой памяти не изменяется, его
длина в байтах заявлена в типе
17
Продолжение табл. 1

Окончание табл. 1
Тип данных Описание
Двоичные данные переменной длины с максимальной длиной
varbinary(n)
image
uniqueidentifier
IDENTITY
[(s, i)]
8 000 байт. Размер занимаемой памяти изменяется. Он равен
длине введенного значения в байтах
Двоичные данные переменной длины с максимальной длиной
2Гб
Глобальный уникальный идентификатор (GUID). Размер занимаемой памяти – 16 байт
Это свойство автонумерации столбца данных, где содержатся
данные целочисленного типа. В таблице может содержаться
только один столбец IDENTITY. Если указать начальное значение и значение шага, столбец будет невозможно обновить.
s (seed) = начальное значение
i(increment) = значение шага
Кроме того, на основе системных типов данных пользователь
может создавать свои собственные.
2.3. Создание таблицы
Для создания таблицы необходима схема, в которой будет создаваться таблица. Схема аналогична пространству имен во многих
языках программирования, но у схем может быть только один уровень, т. е. схемы не могут размещаться в
других схемах. В любой базе
данных по умолчанию создаются три схемы: dbo, sys и information_schema. Схема dbo – это схема по умолчанию для создания новых пользовательских объектов, две остальные используются разными системными объектами. Схемы создаются с помощью команды
Create schema <имя схемы>
Таблица же создается следующей инструкцией:
Сreate table [<имя базы данных>.][<имя схемы>.]<имя
таблицы>
({<определение столбца>|<ограничения для всей таблицы>}[,…n])
[on<имя группы файлов>]
Определение столбца задается с помощью следующей конструкции:
<имя столбца><тип данных> [<ограничения, накладываемые на
столбец>] [default<значение по умолчанию>] [identity(seed, incre-
ment)>]
Имена таблиц и столбцов должны начинаться с буквы или зна-
ка подчеркивания, последующие символы могут быть буквами,
18

цифрами, знаками подчеркивания, а также символами $, @ или #.
Можно задать имя, не удовлетворяющее этому правилу, но тогда
оно должно находиться в квадратных скобках.
Приведем пример создания таблицы.
Вначале создадим новую схему. Схему можно не создавать,
тогда по умолчанию будет выбрана схема dbo.
Create schema Hr
Затем создается сама таблица, для ее размещения в памяти
выбрана
группа файлов SECONDARY.
create table Hr. Employeed (id int primary key, name nvarchar(50) not
null, price numeric(12,2), birthday date, [phone number] varchar(15),
constraint constr1 check(price>0)) on [SECONDARY]
2.4. Представления (Views)
Представления являются виртуальными таблицами, которые
отображают данные, хранящиеся в других таблицах. Содержимое
этих виртуальных таблиц генерируется динамически в результате
выполнения запроса Select. Работа с представлениями для пользователя практически ничем не отличается от работы с обычными
таблицами. Обычно они создаются по соображениям безопасности,
когда необходимо скрыть от пользователей, не обладающих достаточными
правами, содержимое некоторых столбцов базовой табли-
цы. Создается представление следующей инструкцией:
create view [<имя схемы>.]<имя представления>as<оператор select> [with check option]
Задание заключительной опции (with check option) гарантирует, что для строк представления не будет разрешено выполнение
изменений, которые могут привести к исчезновению строки из
представления.
Изменять данные в представлении можно только при выполнении некоторых правил,
в частности, модификация должна
ссылаться только на одну таблицу, а столбцы в представлении
должны непосредственно ссылаться на столбцы в таблице. Для
представления можно создавать индекс, при этом сервер выполняет
инструкцию Select, физически сохраняет результирующий набор
и затем строит индекс. Изменение любой таблицы, на которой определено представление, заставляет сервер обновлять сохраненный
физический
набор и поддерживать индекс, т. е. индексированное
19
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
