Введение в программирование SQL Server. Создание и управление базой данных. Инструменты целостности данных, страница 16

*  Нулевые блоки - это набор байтов переменной длинны.

*  Переменные блоки – содержат два байта, описывающие, какой длинны колонка. Дополнительные два байта на колонку указывают на конец каждой колонки, переменной длинны.

*  Данные переменной длины – Данные переменной длины хранятся в странице после переменных блоков.

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

Как SQL Server организовывает text, ntext и image данные

Типы данных переменной длины могут храниться как одна коллекция страниц или данные в строке.

*  text – может хранить 2 147 483 647 символов. Не Unicode текстовые данные не могут использоваться в качестве переменных или параметров в встроенных процедурах.

*  ntext – может хранить 1 073 741 823 символа или 2 147 483 647 Unicode данных переменной длины.

*  image – может хранить от 0 до 2 147 483 647 бинарных данных.

Так как text, ntext и image типы данных обычно большие, SQL Server хранит их вне строк. Шестнадцати битный указатель в строке указывает на структуру, хранящую данные. Если эти типы данных хранят небольшое количество данных, то вы можете включить опцию text in row. Вы можете также указать предел от 24 до 7000 байтов.  Вы можете включить эту опцию для таблицы, используя системную процедуру sp_tableoption.

В следующем примере с помощью функции sp_tableoption устанавливается опция text in row и указывается что до 1000 символов будет хранится в строке:

EXEC sp_tableoption N'Employees', 'text in row', '1000'

Если вы включите эту опцию, но не укажите значение, то будет использоваться 256

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

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

Рассматривайте следующие факты, когда создаёте таблицу в SQL Server. Вы можете создавать:

*  2 биллиона таблиц в базе данных.

*  1024 колонки в таблице

*  8060 байтов на строку (этот максимальный размер не относится к text, ntext и image).

Вы можете указать в таблице различные правила, позволяющие нулевые значения для каждой колонки. Если вы не укажите возможность ввода в колонку нулевого значения, то SQL Server укажет значение по умолчанию, указанное для данной сессии или базы данных. Однако это значение можно изменить, поэтому не надейтесь на него. По умолчанию в SQL Server используется NOT NULL (запрет нулевых значений).

Следующий пример создаёт таблицу dbo.CategoriesNew, указывая колонки и типы данных:

CREATE TABLE dbo.CategoriesNew

(CategoryID       int  IDENTITY(1,1)      NOT NULL,

CategoryName     varchar(15)       NOT NULL,

Description       ntext             NULL,

Picture          image             NULL)

Для просмотра свойств таблицы используйте системную встроенную процедуру sp_help.

Вычисляемое поле – это виртуальная колонка, которая физически не хранится в таблице. Сервер SQL использует формулу, которую вы укажите для расчёта значений колонки, используя другие колонки в этой таблице. Использование вычисляемых полей в запросе может облегчить синтаксис запроса.

Удаление базы данных удаляет описания всех данных, а также разрешений для данной таблицы. Прежде чем удалять таблицу, вы должны удалить все связи с другими объектами. Для просмотра существующих зависимостей используйте системную процедуру sp_depends.

Синтаксис:

DROP TABLE table_name

Пример

DROP TABLE Sample1

Добавление и удаление колонок

Добавление и удаление колонок – это два способа редактирования таблиц:

ALTER TABLE table

{ [ ALTER COLUMN column_name

{ new_data_type [ ( precision [ , scale ] ) ]

[ COLLATE < collation_name > ]

[ NULL | NOT NULL ]

| {ADD | DROP } ROWGUIDCOL }

]

Тип информации, который вы указываете при добавлении колонки похож на то, что вы указываете при создании таблицы: