- •Урок 1: Типы данных
- •Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Изменение таблиц
- •Удаление таблиц
- •Урок 3: Горизонтальное секционирование таблиц
- •Архитектура секционирования
- •Создание функции секционирования
- •Создание схемы секционирования
- •Создание секционированной таблицы или индекса
- •Секционирование индексов
- •Сценарий "Скользящее Окно"
- •Контрольные вопросы по изученному материалу
Устаревшие типы данных
Типы данных ntext, text, image и timestamp в будущей версии Microsoft SQL Server будут удалены. Следует избегать их использования при разработке новых приложений и запланировать изменение приложений, в которых эти типы в данное время используются. Вместо этих типов данных следует использовать типы nvarchar(max), varchar(max), varbinary(max) и rowversion соответственно.
ntext
Этот тип данных представляет символьные данные в Юникоде переменной длины, включающие до 2^30 – 1 (1 073 741 823) символов. Объем занимаемого этим типом пространства (в байтах) в два раза превышает число символов.
text
Этот тип данных представляет данные, отличные от данных Юникод, представленные с использованием кодовой страницы сервера. Максимальная длина данных — 2^31 – 1 (2 147 483 647) символов. Если в кодовой странице сервера используются двухбайтовые символы, объем занимаемого типом пространства все равно не превышает 2 147 483 647 байт.
image
Этот тип представляет двоичные данные переменной длины, включающие от 0 до 2^31 – 1 (2 147 483 647) байт.
timestamp
Тип данных timestamp является синонимом типа данных rowversion.
Пользовательские типы данных
Пользовательские типы данных, также именуемые как псевдонимы типов данных, позволяют расширить базовые типы данных SQL Server (например, varchar) содержательным именем и форматом, который можно приспособить для конкретного использования.
Создание пользовательского типа данных осуществляется вызовом команды CREATE TYPE:
CREATE TYPE type_name
{
FROM base_type
[ ( precision [ , scale ] ) ]
[ NULL | NOT NULL ]
}
type_name
Имя псевдонима типа данных или определяемого пользователем типа данных.
base_type
Предоставляемый SQL Server тип данных, на основе которого формируется псевдоним.
precision
Для типа decimal или numeric является неотрицательным целым числом, которое указывает на максимальное общее число подлежащих сохранению десятичных знаков как слева, так и справа от десятичного разделителя, отделяющего десятичную дробь от целого числа.
scale
Для типа decimal или numeric является неотрицательным целым числом, которое указывает на максимальное общее число подлежащих сохранению десятичных знаков справа от разделителя, отделяющего десятичную дробь от целого числа. Значение должно быть меньше или равно заданной степени точности.
NULL | NOT NULL
Указывает, может ли данный тип иметь значение NULL. Если не указано иное, по умолчанию принимается значение NULL.
Пример:
Следующая инструкция создает определяемый пользователем тип данных birthday, основанный на типе данных datetime, допускающий значения NULL.
CREATE TYPE birthday FROM datetime NULL ;
Урок 2: Создание, изменение и удаление таблиц
В рамках этого урока будут рассмотрены следующие вопросы
Из каких источников можно получить информацию о таблицах БД?
Как создать таблицу базы данных?
Как изменить опции таблицы, добавить или удалить столбцы?
Как удалить существующую таблицу базы данных?
Источники информации о таблицах
Обозреватель объектов SQL Server Management Studio
Представления каталога
Представление каталога |
Отображение сведений о |
sys.tables |
Информация обо всех таблицах в базе данных |
sys.columns |
Информация о столбцах таблиц, типе данных столбцов |
sys.types |
Информация о системных и пользовательских типах данных |
Создание таблиц
SQL Server 2008 поддерживает в базе данных до двух миллиардов таблиц.
Таблица состоит из набора столбцов, с каждым из которых соотнесен тип данных, допустимый в указанном столбце и дополнительные ограничения с ним связанные. Таблицы могут содержать не более 1024 столбцов. Число строк и общий размер таблицы ограничиваются только доступным пространством для хранения.
CREATE TABLE
[ database_name . [ schema_name ] . | schema_name . ] table_name
( { <column_definition>
| <computed_column_definition>
} )
[ ON { filegroup | "default" } ]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
[ IDENTITY ]
<data type> ::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max ]
<computed_column_definition> ::=
column_name AS computed_column_expression
database_name
Имя базы данных, в которой создается таблица. В качестве аргумента database_name должно быть указано имя существующей базы данных. Если аргумент database_name не указан, таблица создается в текущей базе данных.
schema_name
Имя схемы, которой принадлежит новая таблица.
table_name
Имя новой таблицы. Аргумент table_name может состоять не более чем из 128 символов, за исключением имен локальных временных таблиц (имена с префиксом номера #), длина которых не должна превышать 116 символов.
column_name
Имя столбца в таблице. Имена столбцов должны соответствовать правилам для идентификаторов и быть уникальными в данной таблице. Аргумент column_name может содержать от 1 до 128 символов.
computed_column_expression
Выражение, определяющее значение вычисляемого столбца. Вычисляемый столбец представляет собой виртуальный столбец, физически не хранящийся в таблице, если для него не установлен признак PERSISTED. Значение столбца вычисляется на основе выражения, использующего другие столбцы той же таблицы. Например, определение вычисляемого столбца может быть следующим: cost AS price * qty. Выражение может быть именем невычисляемого столбца, константой, функцией, переменной или любой их комбинацией, соединенной одним или несколькими операторами. Выражение не может быть вложенным запросом или содержать псевдонимы типов данных.
Компонент Database Engine автоматически определяет для вычисляемых столбцов допустимость значений NULL на основе использованных выражений. Считается, что результат большинства выражений допускает значение NULL, даже если используются только столбцы, для которых значение NULL запрещено, так как при возможном переполнении или потере точности может формироваться значение NULL.
ON { filegroup | "default" }
Указывает файловую группу, в которой хранится таблица. Если указан аргумент filegroup, таблица сохраняется в файловой группе с таким именем. Это должна быть существующая файловая группа в базе данных. Если указано значение "default" или параметр ON не определен вообще, таблица сохраняется в файловой группе по умолчанию. Механизм хранения таблицы, указанный в инструкции CREATE TABLE, изменить в дальнейшем невозможно.
[ type_schema_name. ] type_name
Указывает тип данных столбца и схему, к которой он принадлежит. Тип данных может быть одним из следующих.
Системный тип данных.
Пользовательский тип данных на основе системного типа данных SQL Server. Состояние признака NULL или NOT NULL для псевдонима типа данных может быть переопределено с помощью инструкции CREATE TABLE. Однако его длину изменить нельзя; длина типа данных-псевдонима не определяется инструкцией CREATE TABLE.
precision
Точность указанного типа данных.
scale
Масштаб указанного типа данных.
max
Применяется только к типам данных varchar, nvarchar и varbinary для хранения 2^31 байт символьных и двоичных данных или 2^30 байт данных в Юникоде.
IDENTITY
Указывает, что новый столбец является столбцом идентификаторов. При добавлении в таблицу новой строки компонент Database Engine формирует для этого столбца уникальное последовательное значение. Свойство IDENTITY может быть установлено для столбцов типа tinyint, smallint, int, bigint, decimal(p,0) или numeric(p,0). Для каждой таблицы можно создать только один столбец идентификаторов. Необходимо указать оба параметра - начальное значение и приращение, или же не указывать ничего. Если ничего не указано, применяется значение по умолчанию (1,1).
seed - значение, используемое для самой первой строки, загружаемой в таблицу.
increment - значение приращения, добавляемое к значению идентификатора предыдущей загруженной строки.
COLLATE collation_name
Задает параметры сортировки для столбца. Имя параметров сортировки может быть либо именем параметров сортировки Windows, либо именем параметров сортировки SQL. Аргумент collation_name применим только к столбцам типов данных char, varchar, text, nchar, nvarchar и ntext. Если этот аргумент не указан, столбцу назначаются либо параметры сортировки определяемого пользователем типа, если столбец принадлежит к определяемому пользователем типу данных, либо установленные по умолчанию параметры сортировки для базы данных.
NULL | NOT NULL
Определяет, допустимы ли для столбца значения NULL. Параметр NULL не является ограничением в строгом смысле слова, но может быть указан так же, как и NOT NULL. Ограничение NOT NULL может быть указано для вычисляемых столбцов только в случае, если одновременно указан параметр PERSISTED.
Пример:
Следующий пример демонстрирует создание таблицы, содержащей пять столбцов, три из которых не допускают значения NULL и физически хранятся в базе данных.
Столбец MiddleName допускает пустые значения и физически хранится в базе данных, а столбец FullName является вычисляемым и не хранится в базе данных.
Столбец Id является столбцом идентификаторов. При добавлении в таблицу новой строки компонент Database Engine формирует для этого столбца уникальное последовательное значение, начиная с 1 и последовательно увеличивая значение на 1 для каждой новой строки.
CREATE TABLE Human
(
Id int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50) NOT NULL,
MiddleName nvarchar(50) NULL ,
FullName AS FirstName + ' ' + LastName
) ON [PRIMARY];
