Работа с таблицами и типами данных. Типы данных. Символьные типы. Точные числовые типы. Приближенные числовые типы, страница 5

USE [TestDB]

GO

IF OBJECT_ID('[Test].[Employees]', 'U') IS NOT NULL

  DROP TABLE [Test].[Employees]

GO

CREATE TABLE   [Test].[Employees]  (

       [EmployeeID] [int] IDENTITY (1000,2) NOT NULL

      ,[FirstName] [nvarchar](50) NOT NULL

      ,[LastName]  [nvarchar](50) NOT NULL       ,[BirthDate] [date] NOT NULL     )

Пример 1.5.  Идентифицирующие столбцы не формируют полных последовательностей. Если вставка завершилась неудачно, то идентифицирующее значение все равно используется.

USE [TestDB]

GO

INSERT [Test].[Employees]  ([FirstName],[LastName],[BirthDate])

VALUES ('John', 'Kate','1970-01-30')

--Генерируется EmployeeID 1000

GO

INSERT [Test].[Employees]  ([FirstName],[LastName],[BirthDate])

VALUES ('Jane', 'Dow', '1972-03-32')

--Завершается аварийно из-за неверной даты

GO

INSERT [Test].[Employees]  ([FirstName],[LastName],[BirthDate])

VALUES ('Jane', 'Dow','1972-03-30')

--Генерируется EmployeeID 1004 (1002 пропущен) GO

Сжатие

В SQL Server 2008 введена возможность сжатия данных в таблицах. Сжатие данных реализовано на двух уровнях: строки и страницы. 

Пример 1.6.  В следующей инструкции таблица настраивается на сжатие на уровне страницы.

USE [TestDB]

GO

ALTER TABLE [Test].[Employees]  

                                   REBUILD

                                   WITH (DATA_COMPRESSION = PAGE)

Если настроить сжатие на уровне строки, SQL Server изменяет формат, применяемый для хранения строк. Этот строковый формат преобразует все типы данных в типы переменной длины. Он также не использует память для хранения значений NULL. Чем больше типов данных фиксированной длины (таких, как datetime2, int, decimal и nchar) используется в таблице, тем больше будет выигрыш от сжатия на уровне строки.

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1. 

Создание таблиц и типов данных 

Упражнение 1. Создание новой таблицы

Создать таблицу, которая хранит информацию о клиентах.

1.  Откройте среду Microsoft SQL Server Management Studio (SSMS) и установите соединение с экземпляром сервера SQL Server 2008.

2.  В окне создания запроса введите и выполните следующие инструкции SQL для создания базы данных TestDB и схемы Test.

USE master;

GO

IF DB_ID ('TestDB') IS NOT NULL DROP DATABASE TestDB;

GO

CREATE DATABASE TestDB;

GO

USE TestDB;

GO

CREATE SCHEMA Test;

GO

3.  В окне запроса в базе данных TestDB создайте новую таблицу со следующими свойствами:

•  Еѐ имя должно быть Customers(Клиенты).

•  Она должна находиться в схеме Test.

•  У неѐ должны быть столбцы.

o  CustomerId (Id клиента) -  целое число в диапазоне от 1 до 100 000. У этого столбца значения должны увеличиваться автоматически. Первое значение должно быть равно 1000, а затем каждая последующая строка должна получать значение, увеличенное на 1. Применить тип данных, использующий минимально необходимый объем памяти.

o  Name (Имя) – строка, содержащая символы Unicode, длиной до 70 символов. o CreatedDateTime (Дата и время создания) – дата и время суток, когда клиент был добавлен в базу данных. o CreditLimit (Кредитный лимит) – точное числовое значение, допускающее до пяти знаков в дробной части и числа, меньшие 10 000 000.

•  Во всех столбцах, кроме CustomerId, допускаются значения NULL.

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

USE TestDB;

GO

CREATE TABLE Test.Customers (

    CustomerId INT IDENTITY(1000, 1) NOT NULL

    ,Name NVARCHAR(70) NULL

    ,CreatedDateTime DATETIME2 NULL

    ,CreditLimit DECIMAL(12,5) NULL )

Упражнение 2. Создание новых типов данных

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

1.  Откройте новое окно создания запроса, введите и выполните инструкцию для использования базы данных TestDB.