Базы данных. SQL. Создание таблиц. Оператор CREATE TABLE

Создание таблиц. Оператор CREATE TABLE. Примеры

Перед изучением данной темы рекомендуется ознакомиться с темой:


Содержание


Поиск на других ресурсах:

1. Оператор CREATE TABLE. Создание таблицы. Общая форма

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

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

CREATE TABLE Table_Name (
    Field_Name_1 Type_1,
    Field_Name_2 Type_2,
    ...
    Field_Name_N Type_N
)

здесь

  • Table_Name – имя таблицы базы данных. Если в базе данных есть таблица с таким именем, то возникнет ошибка;
  • Field_Name_1, Field_Name_2, Field_Name_N – имена полей (столбцов) таблицы базы данных. Имя каждого поля должно быть уникальным. В разных   таблицах имена полей могут совпадать;
  • Type_1, Type_2, Type_N – соответственно типы полей Field_Name_1, Field_Name_2, Field_Name_N такие как INTEGER, DECIMAL, DATE и другие.

На поля Field_Name_1, Field_Name_2, Field_Name_N могут накладываться ограничения. Каждое ограничение указывается после имени поля. В этом случае общая форма оператора CREATE TABLE выглядит примерно следующим образом:

CREATE TABLE Table_Name (
    Field_Name_1 Type_1 Attribute_1,
    Field_Name_2 Type_2 Attribute_2,
    ...
    Field_Name_N Type_N Attribute_N
)

здесь

  • Attribute_1, Attribute_2, Attribute_N – ограничения, накладываемые на поля Field_Name_1, Field_Name_2, Field_Name_N. Ограничения задаются одним из возможных слов: NULL, NOT NULL, UNIQUE, CHECK, PRIMARY KEY, FOREIGN KEY и других.

Рассмотрение существующих полей атрибутов в языке SQL не является предметом изучения данной темы.

 

2. Примеры создания таблиц
2.1. Пример создания простейшей таблицы учета товаров в магазине

Условие задачи.

  1. Используя средства языка SQL создать таблицу с именем Product, которая будет отображать следующую информацию об учете товаров в магазине
Название товара Стоимость закупки, грн. Количество, штук Дата получения Примечание
  1. Таблица обязана содержать первичный ключ и обеспечивать уникальность записей.

 

Решение.

  1. Для обеспечения уникальности записей в таблице нужно создать дополнительное поле, которое будет являться счетчиком (автоинкрементом). Название поля – ID_Product. Это поле есть первичным ключом. Также это поле имеет ограничение NOT NULL (непустое поле).
  2. Следующим шагом решения есть назначение имен полям таблицы. В связи с тем, что не все системы управления базами данных (СУБД) поддерживают символы кириллицы, имена полей таблицы будут задаваться латинскими символами. В нашем случае формируются имена и типы данных, сформированные в следующей таблице:
Название поля в условии задачи Название поля на языке SQL Тип поля Объяснение
ID_Product ID_Product INTEGER Первичный ключ, счетчик, NOT NULL
Название товара [Name] VARCHAR(100) Строковый тип переменной длины максимум до 100 символов
Стоимость закупки Price DECIMAL(15, 2) Точность равна 15 знакам, масштаб равен 2 знакам после запятой
Количество штук [Count] INTEGER Целое число
Дата получения [Date] DATE
Примечание Note VARCHAR(200)
  1. Написание кода на языке SQL с учетом особенностей предыдущих шагов. Текст программы создания таблицы на языке SQL следующий

 

CREATE TABLE [Product] (
    [ID_Product] Integer Not Null Primary Key,
    [Name] VarChar(100) ,
    [Price] Decimal(15, 2),
    [Count] Integer,
    [Date] Date,
    [Note] VarChar(200)
)

В Microsoft SQL Server допускается задавать имена полей без их обрамления в квадратные скобки []. То есть, предыдущая команда может быть переписана следующим образом

CREATE TABLE Product (
    ID_Product Integer Not Null Primary Key,
    Name VarChar(100) ,
    Price Decimal(15, 2),
    Count Integer,
    Date Date,
    Note VarChar(200)
)

В приведенном выше коде для поля ID_Product задаются ограничения Not Null и Primary Key. В результате запуска программы на SQL будет создана следующая таблица

ID_Product Name Price Count Date Note

На рисунке 1 отображаются поля созданной таблицы в Microsoft SQL Server Management Studio.

Microsoft SQL Server Management Studio 18. Этапы создания таблицы

Рисунок 1. Этапы создания таблицы Product в Microsoft SQL Server Management Studio 18: 1 – создание файла; 2 – набор SQL-запроса; 3 – запуск запроса на выполнение; 4 – результирующая таблица

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

CREATE TABLE Product (
    Name VarChar(100) ,
    Price Decimal(15, 2),
    Count Integer,
    Date Date,
    Note VarChar(200)
)

 

2.2. Пример создания таблицы учета телефонов абонентов

Условие задачи.

Используя средства языка SQL (T-SQL) создать таблицу учета телефонов абонентов.

Name Address Phone Number 1 Phone Number 2 Phone Number 3
Ivanov I.I. New York 123456 067-1234567
Johnson J. Kiev 789012 033-7777778 102
Petrenko P.P. Warshaw 044-2521412

Обеспечить уникальность и корректное сохранение записей таблицы.

Решение.

Для обеспечения уникальности записей нужно создать дополнительное поле – счетчик. Это поле будет увеличивать свое значение на 1 при каждом добавлении новой записи. Если запись будет удаляться, текущее максимальное значение счетчика не будет уменьшаться. Таким образом, все числовые значения этого поля будут различаться между собой (будут уникальными). В нашем случае добавляется поле ID_Subscriber. Это поле не допускает нулевые значения (NULL).

Для полей Name и [Phone Number 1] целесообразно задать ограничение (атрибут) NOT NULL. Это означает, что в эти поля обязательно нужно ввести значение. Это логично, поскольку абонент в базе данных должен иметь как минимум имя и хотя бы один номер телефона.

После внесенных изменений поля таблицы будут иметь следующие свойства

Название поля Тип данных Объяснение
ID_Subscriber INTEGER Первичный ключ, счетчик, NOT NULL
Name VARCHAR(50) Фамилия и имя абонента
Address VARCHAR(100) Адрес
[Phone Number 1] VARCHAR(20) NOT NULL
[Phone Number 2] VARCHAR(20)
[Phone Number 3] VARCHAR(20)

Учитывая вышесказанное, команда CREATE TABLE на языке Transact-SQL (T-SQL) будет выглядеть следующим образом

Create Table Subscriber (
    ID_Subscriber Int Not Null Primary Key,
    [Name] VarChar(50) Not Null,
    [Address] VarChar(100),
    [Phone Number 1] VarChar(20) Not Null,
    [Phone Number 2] VarChar(20),
    [Phone Number 3] VarChar(20)
)

В запросе имена полей

[Phone Number 1]
[Phone Number 2]
[Phone Number 3]

обязательно должны быть в квадратных скобках [], поскольку имена состоят из нескольких слов (между словами есть символ пробела).

На рисунке 2 показаны этапы создания таблицы в системе Microsoft SQL Server Management Studio.

Microsoft SQL Server Management Studio 18. Этапы формирования запроса

Рисунок 2. Окно Microsoft SQL Server Management Studio. Этапы формирования запроса: 1 — создание файла «SQL Query 2.sql»; 2 — набор SQL-запроса; 3 — выполнение; 4 — результирующая таблица

 

2.3. Пример создания таблицы учета заработной платы и отчислений в организации

Условие задачи

Используя язык SQL сделать таблицу Account, в которой ведется учет начисленной заработной платы в некой организации. Образец таблицы следующий

Name Position Accrued salary Date of employment Gender
Johnson J. Manager 3200.00 01.02.2128 M
Petrova M.P. Clerk 2857.35 02.03.2125 F
Williams J. Secretary 3525.77 01.08.2127 F
Wilson K. Recruiter 1200.63 22.07.2125 F

Таблицу реализовать так, чтобы обеспечивалась уникальность записей.

 

Решение.

Чтобы обеспечить уникальность записей, создается дополнительное поле-счетчик ID_Account типа Int. Это поле целесообразно выбрать первичным ключом, если нужно будет использовать данные этой таблицы в других связанных таблицах.

После модификации поля таблицы будут иметь следующие свойства.

 

Название поля (атрибут) Тип данных Дополнительные объяснения
ID_Account Int Автоинкремент (счетчик), первичный ключ (Primary Key), ненулевое поле (Not Null), обеспечивает уникальность записей
[Name] VARCHAR(50) Фамилия и имя, не нулевое поле (Not Null)
Position VARCHAR(100) Должность, не нулевое поле (Not Null)
Salary DECIMAL Тип, предназначенный для сохранения денежных величин
[Employment Date] DATE Дата, не нулевое поле (Not Null)
Gender CHAR(1) Стать, не нулевое поле (Not Null)

В модифицированной таблице поле Salary допускает нулевые (Null) значения. Таким случаем может быть, например, когда человек принят на работу, но заработная плата ему еще не начислена. В данной ситуации временно устанавливается Null-значение. Все остальные поля обязательны для заполнения.

Запрос на язык SQL, создающий вышеприведенную таблицу имеет вид

/* Create the Account table */
Create Table Account (
    ID_Account Int Not Null Primary Key,
    [Name] VarChar(50) Not Null,
    [Position] VarChar(100) Not Null,
    Salary Decimal Null,
    [Employment Date] Date Not Null,
    Gender Char(1)
)

Результат выполнения SQL-запроса показан на рисунке 3

Microsoft SQL Server Management Studio. Результат выполнения запроса на языке Transact-SQL

Рисунок 3. Результат выполнения запроса на языке Transact-SQL (T-SQL)

 


Связанные темы