Создание таблиц в Microsoft SQL Server (CREATE TABLE) – подробная инструкция

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

В прошлой статье «Создание базы данных в Microsoft SQL Server» я рассказывал, как создаются пустые базы данных, в которых еще нет таблиц, поэтому сегодня, в продолжение того материала я покажу, как создаются таблицы, в которые и будут добавляться и храниться все данные.

Как было уже отмечено, создать таблицу в Microsoft SQL Server можно двумя способами: первый — с помощью графического конструктора SQL Server Management Studio (SSMS), и второй — с помощью инструкции на языке T-SQL.

Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.

Исходные данные для примера

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

  • Goods – таблица будет содержать информацию о товарах:
    • ProductId – идентификатор товара, столбец не может содержать значения NULL, первичный ключ;
    • Category – ссылка на категорию товара, столбец не может содержать значения NULL, но имеет значение по умолчанию, например, для случаев, когда товар еще не распределили в необходимую категорию, в этом случае товару будет присвоена категория по умолчанию («Не определена» или «Не указана»);
    • ProductName – наименование товара, столбец не может содержать значения NULL;
    • Price – цена товара, столбец может содержать значения NULL, например, с ценой еще не определились.
  • Categories — таблица будет содержать описание категорий товаров:
    • CategoryId – идентификатор категории, столбец не может содержать значения NULL, первичный ключ;
    • CategoryName – наименование категории, столбец не может содержать значения NULL.

При этом внести товар с несуществующей категорией нельзя, поэтому мы добавим еще и ограничение внешнего ключа.

Скриншот 2

Примечание! В качестве сервера у меня выступает версия Microsoft SQL Server 2017 Express, как ее установить, можете посмотреть в моей видео-инструкции.

Итак, давайте приступим.

Создание таблицы в Microsoft SQL Server с помощью Management Studio

Запускаем среду SQL Server Management Studio.

В обозревателе объектов открываем контейнер «Базы данных», затем открываем нужную базу данных и щелкаем правой кнопкой мыши по пункту «Таблицы», и выбираем «Таблица».

Скриншот 3

У Вас откроется конструктор таблиц. В нем будет всего три колонки:

  • Имя столбца – сюда пишем название столбца;
  • Тип данных – выбираем тип данных для этого столбца, подробней о типах данных можете почитать в статье «Типы данных в Microsoft SQL Server»;
  • Разрешить значения NULL – если поставить галочку, то столбец сможет принимать значение NULL.

Заполняем эти колонки, сначала в соответствии с нашей тестовой структурой таблицы Categories.

Скриншот 4

После этого нам нужно определить первичный ключ, для этого щелкаем правой кнопкой мыши по нужному столбцу (в нашем случае это CategoryId) и выбираем пункт «Задать первичный ключ».

Скриншот 5

Также для этого столбца давайте определим спецификацию идентификатора, т.е. зададим свойство IDENTITY, для того чтобы данный столбец автоматически генерировал уникальный идентификатор записи.

Чтобы это сделать, в свойствах столбца в нижней части конструктора ищем раздел «Спецификация идентификатора» и включаем его, т.е. ставим «Да». В случае необходимости Вы можете задать начальное значение идентификатора, например, для того чтобы начать идентификацию с определённого значения, а также можете изменить шаг приращения, т.е. на какое значение будет увеличиваться Ваш идентификатор.

Скриншот 6

Определение нашей таблицы готово, теперь нам ее необходимо сохранить. Для этого щелкаем по вкладке правой кнопкой мыши и нажимаем «Сохранить» или просто нажимаем сочетание клавиш «Ctrl+S», также кнопка «Сохранить» доступна и в меню «Файл».

Далее вводим название таблицы, в нашем случае это Categories, и нажимаем «OK».

Скриншот 7

Все, конструктор можно закрыть, можете обновить обозреватель объектов, чтобы таблица у Вас отобразилась.

Теперь переходим к таблице Goods. В этом случае делаем все то же самое, т.е. определяем столбцы, задаем первичный ключ и задаем спецификацию идентификатора. Только в данном случае нам нужно дополнительно задать значение по умолчанию для столбца Category и создать ограничение внешнего ключа (FOREIGN KEY).

Для того чтобы задать значение по умолчанию, необходимо выбрать столбец, и в свойствах этого столбца в параметре «Значение по умолчанию или привязка» указать желаемое значение по умолчанию, в нашем случае давайте напишем 1.

Скриншот 8

Чтобы создать внешний ключ, щелкаем в любом месте конструктора правой кнопкой мыши и выбираем пункт «Отношения…».

Скриншот 9

Затем нажимаем добавить.

Скриншот 10

Далее задаем спецификацию таблиц и столбцов, для этого щелкаем на три точки напротив соответствующего свойства.

Скриншот 11

Потом откроется окно, в котором мы указываем следующее:

  • Таблица первичного ключа – выбираем из списка таблицу Categories, а также ее первичный ключ, по которому будет осуществляться связь;
  • Таблица внешнего ключа – это как раз наша текущая таблица, пока она еще не создана, поэтому она отображается как Table_1, в этом случае выбираем столбец Category этой таблицы, который будет выполнять роль внешнего ключа, т.е. это и будет ссылка на внешнюю таблицу (т.е. сопоставление таблиц будет осуществляться как CategoryId = Category);
  • Имя связи — название ограничения, допустим, у нас это будет FK_Category.

Нажимаем «ОК».

Скриншот 12

Нам осталось задать правила обновления и удаления, т.е. что будет происходить с записями таблицы Goods (они же ссылаются на таблицу Categories) если категория (запись таблицы Categories) будет изменена или удалена.

Изменять идентификатор категории вряд ли придётся, а если и придётся, то пусть в этих случаях появится ошибка, иными словами, правило обновление просто не задаем. А вот в случае с удалением категории, пусть всем товарам присвоится значение по умолчанию, т.е. неопределенная категория. Для этого определяем правило удаления как «Присвоить значение по умолчанию».

Скриншот 13

Нажимаем закрыть.

Затем можем сохранить таблицу тем же способом, что и раньше. Называем ее Goods. В случае если появится предупреждающее сообщение о том, что будут затронуты следующие таблицы, отвечаем «Да», т.е. продолжаем.

Скриншот 14

После обновления объектов в обозревателе, созданная таблица отобразится.

Скриншот 15

Теперь Вы можете добавлять данные в эти таблицы, например, с помощью инструкции INSERT.

Создание таблицы с помощью инструкции CREATE TABLE языка T-SQL

Теперь давайте я покажу процесс создания тех же самых таблиц, но только на языке T-SQL с использованием инструкции CREATE TABLE.

Упрощённый синтаксис создания таблиц следующий:

   
   CREATE TABLE Название таблицы (
        [Название столбца] [Тип данных] [Возможность принятия значения NULL] [Определение ограничения],
   …
   )

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

Чтобы написать и выполнить инструкцию T-SQL, открываем редактор SQL запросов, для этого нажимаем кнопку «Создать запрос» и пишем необходимую инструкцию, она представлена чуть ниже. Эта инструкция эквивалентна всем действиям, которые мы делали в графическом интерфейсе.

Примечание! Если Вы создали таблицы с помощью графического интерфейса и хотите протестировать следующую инструкцию T-SQL по созданию таблиц, то Вам предварительно нужно удалить эти таблицы, так как они уже существуют и сервер выдаст ошибку. Для этого я специально включил в инструкцию команду DROP TABLE IF EXISTS, которая удаляет таблицы, в случае если они существуют. Параметр IF EXISTS доступен, начиная с 2016 версии SQL Server, подробней об этом параметре мы говорили в статье – «Инструкция DROP IF EXISTS».

   
   --Удаление таблиц
   --Параметр IF EXISTS доступен начиная с 2016 версии SQL Server
   DROP TABLE IF EXISTS Goods;
   DROP TABLE IF EXISTS Categories;

   --Создание таблицы с товарами
   CREATE TABLE Goods (
        ProductId       INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_ProductId PRIMARY KEY,
        Category        INT NOT NULL DEFAULT (1),
        ProductName     VARCHAR(100) NOT NULL,
        Price           MONEY NULL,
   );

   GO
   --Создание таблицы с категориями
   CREATE TABLE Categories (
        CategoryId   INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_CategoryId PRIMARY KEY,
        CategoryName VARCHAR(100) NOT NULL
   );

   GO

   --Добавление ограничения внешнего ключа (FOREIGN KEY)
   ALTER TABLE Goods ADD CONSTRAINT FK_Category 
   FOREIGN KEY (Category) 
        REFERENCES Categories (CategoryId)
        ON DELETE SET DEFAULT
        ON UPDATE NO ACTION;

   GO

Скриншот 16

Выполняем инструкцию (кнопка «Выполнить»), в итоге также будут созданы две таблицы и соответствующие ограничения.

Видео-инструкция по созданию таблиц в Microsoft SQL Server

У меня на этом все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 1
  1. Админ (автор)

    Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
    На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
    На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.

Добавить комментарий для Админ Отменить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.