Смекни!
smekni.com

Разработка и сопровождение баз данных в MS SQL Server 2000 (стр. 5 из 7)

Типы данных играют большую роль при работе с таблицами. Каждый столбец должен иметь конкретный тип данных. В одной таблице может быть множество столбцов, как с одинаковыми, так и с различными типами данных. Наконец, типы данных активно используются при работе с хранимыми процедурами, определяя вид значений, указываемых при вызове.

В SQL Server 2000 набор типов данных несколько расширен по сравнению с предыдущей версией SQL Server – добавлены типы данных bigint, table и sql_variant.

В итоге в распоряжении пользователей имеется набор из встроенных типов данных:

· binary(n) – двоичные данные фиксированной длины до 8000 байт; для n байтов выделяется n+4 байта памяти, значения задаются с помощью шестнадцатеричных чисел 0x<шестнадцатеричные цифры>;

· image – двоичные данные длиной до 231–1, место во внешней памяти выделяется в виде цепочки страниц;

· char(n) – строковый тип данных фиксированной длины без поддержки Unicode длиной до 8000 байтов, данные зависят от кодовой страницы; если для столбца не задана опция NULL, то строка при необходимости будет дополняться справа пробелами; если эта опция задана, то дополнение пробелами будет иметь место при условии ANSI_PADDING=ON, в противном случае пробелы добавляться не будут;

· varchar(n) – строковый тип, как и char(n), но не с фиксированной длиной, если ANSI_PADDING=OFF, то будет выполняться удаление конечных пробелов, если ANSI_PADDING=ON, то удаление пробелов производиться не будет;

· nchar(n) - строковый тип, как и char(n), но с поддержкой Unicode, поэтому максимальное количество символов составляет 4000, в этом случае для строковых констант надо задавать впереди букву N (например, N’ABC’);

· nvarchar(n) – строковый тип, как varchar(n), но с поддержкой Unicode;

· text – строковый тип без поддержки Unicode длиной до 2 Гбайт; память выделяется страницами по 8 Кбайт, связываемыми в цепочку;

· ntext – строковый тип как и text, но с поддержкой Unicode, поэтому длина строки не более 1 Гбайта;

· int – целый тип длиной в 4 байта и с диапазоном от –231 до 231-1;

· smalling – целый тип длиной в 2 байта с диапазоном от –215 до 215-1;

· tinyint – целый тип длиной в 1 байт и диапазоном от 0 до 255;

· bigint – целый тип длиной в 8 байт и с диапазоном от-263 до 263-1;

· decimal[(p[,s])] – десятичный двоично-кодированный тип с p десятичными разрядами, из которых s – дробных; максимальное значение p достигает 38, поэтому диапазон значений составляет от –(1038-1) до 1038-1;

· numeric[(p[,s])] – тип, аналогичныйтипу decimal[(p[,s])];

· float[(n)] – плавающий (приблизительный) тип длиной в 4 байта и с диапазоном от –1.79x10308 до 1.79x10308; значение n определяет количество бит для хранения мантиссы и может принимать значения от 1 до 53;

· real – плавающий тип, являющийся аналогом float(240);

· datetime – тип данных для хранения даты (4 первых байта) и времени (4 последних байта) в диапазоне от 1.1.1753 и до 31.12.9999 года, дата хранится в виде смещения относительно базовой даты 1.1.1753, а время является количеством миллисекунд после полуночи;

· smalldatetime – тип данных для хранения даты (первых 2 байта) и времени (последние 2 байта) в диапазоне от 1.1.1900г. до 6.6.2079г., время задается с точностью до минуты;

· money – тип данных для хранения больших денежных величин с точностью до 4 знаков после запятой в диапазоне от –922 337 203 685 477.5808 до +922 337 203 685 477.5807, для хранения данных отводится 8 байт;

· smallmoney – тип данных для хранения нормальных денежных величин с точностью до 4 знаков после запятой в диапазоне от –214 748.3648 до 214 748.3647, для хранения данных отводится 4 байта;

· bit – битовый (логический) тип со значениями 0 и 1; для хранения выделяется 1 разряд байта памяти;

· timestamp – тип данных временный штамп для учета числа изменений данных в записи (версий строки row version), значение timestamp уникально в пределах базы данных и позволяет идентифицировать конкретное значение записи;

· uniqueidentifier – тип данных для хранения глобальных уникальных идентофикаторов длиной в 16 байт, генерируемых функций NEWID и используемых для идентификации строк (записей), при генерации используется номер сетевой карты компьютера и текущее время;

· sysname – тип данных для хранения имен объектов базы данных; аналог

nvarchar (128);

· sql_variant – вариантный тип данных для хранения данных любого типа, кроме text, ntext, image, timestamp;

· table – тип таблицы для временного хранения наборов данных с использованием переменных.

На основе некоторых из базовых типов данных могут быть созданы новые типы данных, называемые пользовательскими (user-defined). Примером такого типа данных может служить тип sysname (основанный на nvarchar(l28)), активно применяемый в системных таблицах для хранения имен объектов.

Типы данных SQL Server 2000 можно разбить на следующие группы:

· целочисленные (Integers) – bigint, int, smallint и tinyint;

· нецелочисленные (Decimal) – decimal, numeric, float и real;

· денежные (Money) – money и smallmoney;

· датаивремя (Date and Time) – datetime и smalldatetime;

· двоичные (Binary) – binary, varbinary и image;

· строковые (String) – char, varchar, nchar и nvarchar;

· текстовые (Text) – text и ntext;

· специальные (Specials) – timestamp, uniqueidentifier, bit, cursor, table и sql variant.

3.4 Создание и удаление баз данных, таблиц и представлений

3.4.1 Создание и удаление баз данных

Любая пользовательская база данных может быть создана командой CREATE DATABASE. Для создания базы данных и для ее обслуживания нужно иметь соответствующие права. По умолчанию такими правами обладают члены фиксированных ролей сервера sysadmin и dbcreator. При необходимости такие права можно предоставить и другим пользователям. Лицо создающее базу данных, автоматически становится ее владельцем. Имя базы данных должно точно отражать ее назначение и создаваться по правилам построения системных идентификаторов. Длина имени не более 128 символов. Для команды CREATE DATABASE запись синтаксиса на этом метаязыке будет выглядеть следующим образом:

CREATE DATABASE database_name

[ON

[<filespec> [,…n]]

[<filegroup> [,…n]]

]

[LOG ON {<file spec> [,…n]}]

[COLLATE collation_name]

[FOR LOAD| FOR ATTACH]

<filespec> : : =

[PRIMARY]

( [NAME=Logial_file_name,]

FILENAME=’os_file_name’

[, SIZE=size]

[, MAXSIZE={MAX_SIZE|UNLIMITED}]

[, FILEGROWTH=growth_increment]) [,…n]

<filegroup> : : =

FILEGROUP filegroup_ name <filespec> [,…n]

Эта команда определяет новую базу данных и файлы для хранения данных или подключает ранее созданную базу данных, используя ее файлы.

Из определения синтаксиса команды CREATE DATABASE следует:

· для создания базы данных в ряде случаев достаточно задать лишь ее имя;

· имеется возможность задавать полные пути и имена файлов, как для данных, так и для журнала транзакций (logon);

· явно указывать первичный файл, который содержит необходимые сведения об остальных файлах;

· можно использовать группы файлов для ускорения операций ввода – вывода.

Большинство действий по изменению конфигурации базы данных выполняется с помощью команды ALTER DATABASE. Для уменьшения размера базы данных можно также использовать команды DBCC SHRINKDATABASE, DBCC SHRINKFILE. На логическом уровне изменяются такие параметры, как выполнение автоматического усечения журнала транзакций, автоматическое создание и обновление статистики, возможность выполнения вложенных триггеров и т.п. – всего 22 параметра. Изменять эти параметры можно командой ALTER DATABASE с параметром SET.

3.4.2 Создание и удаление таблиц

Пользовательская таблица создается командой Transact-SQL CREATE TABLE. При этом необходимо задать имя таблицы, перечислить имена столбцов, задать тип данных для каждого столбца, упорядоченность символов для сортировки символьных данных, значения по умолчанию, а также ограничения на столбцы или таблицу в целом.

Командой DELETE TABLE можно удалить любую таблицу. Но прежде, чем это сделать, необходимо удалить все объекты базы данных, которые ссылаются на данную таблицу, либо изменить их таким образом, чтобы они не ссылались на удаляемую таблицу.

Чтобы получить информацию о таблице, необходимо выполнить следующую хранимую процедуру: sp_help имя таблицы. После исполнения этой команды на экране появляется целый ряд информационных таблиц: таблица с общей информацией, таблица со свойствами колонок, таблица с ограничением IDENTITY, таблица с информацией о размещении на файлах, таблица с информацией об индексах, таблица с данными об ограничениях, таблица с информацией о ссылающихся таблицах.

3.4.3 Создание представлений

Представление (View) для пользователей баз данных выглядит как таблица, но при этом оно не содержит данных, а лишь представляет данные, расположенные в одной или нескольких таблицах. Подобно реальным таблицам представления содержат именованные столбцы и строки с данными, которые они динамически выбирают из таблиц и предлагают эти данные пользователю для просмотра. Представления часто применяются для ограничения доступа к конфиденциальным данным в таблицах баз данных. Когда в представление не включается столбец исходной таблицы, то считают, что на таблицу наложен вертикальный фильтр. Если в SQL – запросе установлено одно или несколько условий для выборки строк, то считают, что на таблицу наложен горизонтальный фильтр.

Представление может выбирать данные из других представлений, которые, в свою очередь, могут также основываться на представлениях или таблицах. Вложенность представлений не должна превышать 32. Представления можно создавать, используя базы данных одного сервера (текущего). Максимальное количество столбцов в представлении равно 1024. Представление не может ссылаться на временные таблицы. Кроме того, нельзя создавать временное представление.

Для представления нельзя определить ограничения целостности, триггеры, правила, или умолчания, а также создать обычный или полнотекстовый индекс. В основном представления используются для выборки данных. Однако с помощью представлений можно выполнять и изменение данных в таблицах, на основе которых построено представление, при этом требуется соблюдение ряда правил: