Урок 3 Часть первая. Основы DDL.

Видеоурок, на котором базируется данный пост - Основы DDL. Для лучшего усвоения информации и более подробного изучения SQL настоятельно рекоммендем Вам просмотреть видеокурс SQL Essential.


DDL

DDL - Data Definition Language (язык описания данных) - это словарь, который используется для определения или описания структуры баз данных.

В языке описания данных есть следующие операторы:

  • CREATE - определяет новые сущности
  • ALTER - изменяет определение существующих сущностей
  • DROP - удаление существующих сущностей.

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


Итак, приступим к практической части урока!

Для начала давайте вернёмся к нашим DDL операторам и рассмотрим 3 оператора: CREATE, ALTER И DROP.


DROP для таблиц

Оператор DROP можно использовать не только для баз данных, а и для таблиц. Мы уже рассматривали варианты как можно очистить базу данных от значений с помощью операторов DELETE и TRUNCATE. Однако с помощью оператора DROP мы можем не просто очистить таблицу, а и полностью удалить её из нашей базы данных.

Итак, создадим таблицу, которую впредь мы будем удалять:

create table TableForDrop
(
	idField int IDENTITY(2,5), -- IDENTITY(2,5) - начальный инкремент = 2, шаг = 5.
	SomeField1 char(30) default 'empty', -- если пользователь не заполнит это поле, то значение поля автоматически станет "empty"
	SomeField2 char(30) NULL,
	SomeField3 char(30) NULL,
	SomeField4 char(30) NULL
)
go

А теперь давайте удалим её. Синтаксис для удаления невообразимо прост.

drop table TableForDrop
go

Единственное что нужно железно запомнить - необходимо обязательно указывать, что конкретно мы будем удалять. В данном случае мы уточняем, что удалять мы будем именно таблицу, название которой - TableForDrop.


ALTER для таблиц

Увидев, что для таблиц мы можем использовать оператор DROP с таким же успехом что и для БД, наверняка у многих из вас мог возникнуть вопрос: "А с помощью ALTER мы тоже можем модифицировать таблицы?".

Ответ - да, конечно можем)

Представим ситуацию, что мы создали таблицу, но потом обнаружили что забыли вставить туда какую-то колонку. Как же быть? Неужели придётся удалять таблицу и создавать её заново, уже дописывая недостающие колонки?

Благо, с помощью оператора ALTER мы можем добавить или удалить колонку в таблице намного быстрее и проще.

Итак, давайте создадим ещё одну таблицу, и назовём её Customers:

create table Customers
(
	idField int IDENTITY(1,2),
	CustomerName char(20) not null,
	CustomerSurname char(25) null,
	CustomerPhone char(10) not null,
	CustomerEmail char(45) default 'unknown',
	RegistrationTime date default getdate()
)
with(data_compression = row) go

Вы не могли не заметить строку, которую раньше не встречали:

with(data_compression = row)
go

Используется она для того что бы сжать данные по строкам. Таким образом увеличивается производительность и уменьшается размер данных в БД. Правда доступна такая функция не во всех версиях MSSQL Server (в последней версии такая функция определённо должна быть). Попробуйте на досуге)

А теперь давайте добавим новую колонку в нашу таблицу Customers:

alter table Customers -- добавление новой колонки в таблицу.
add 
NewField1 char null
go

Думаю, тут команды интуитивно понятны и без лишних объяснений)

А теперь представим ситуацию, что мы наоборот сделали на одну колонку больше чем нам требуется. В таком случае нужно эту колонку удалить:

alter table Customers -- удаление существующей колонки из таблицы.
drop column NewFIeld1 -- DROP COLUMN - удаляет колонку
go

Ну что же, наигравшись вдоволь, давайте удалим и нашу таблицу:

drop table Customers;
go