Создание таблиц. Оператор 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. Пример создания простейшей таблицы учета товаров в магазине
Условие задачи.
- Используя средства языка SQL создать таблицу с именем Product, которая будет отображать следующую информацию об учете товаров в магазине
Название товара | Стоимость закупки, грн. | Количество, штук | Дата получения | Примечание |
… | … | … | … | … |
- Таблица обязана содержать первичный ключ и обеспечивать уникальность записей.
Решение.
- Для обеспечения уникальности записей в таблице нужно создать дополнительное поле, которое будет являться счетчиком (автоинкрементом). Название поля – ID_Product. Это поле есть первичным ключом. Также это поле имеет ограничение NOT NULL (непустое поле).
- Следующим шагом решения есть назначение имен полям таблицы. В связи с тем, что не все системы управления базами данных (СУБД) поддерживают символы кириллицы, имена полей таблицы будут задаваться латинскими символами. В нашем случае формируются имена и типы данных, сформированные в следующей таблице:
Название поля в условии задачи | Название поля на языке 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) |
- Написание кода на языке 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.
Рисунок 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.
Рисунок 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
Рисунок 3. Результат выполнения запроса на языке Transact-SQL (T-SQL)
⇑
Связанные темы
- Microsoft SQL Server Management Studio 18. Пример создания простейшего запроса
- Модификация таблиц. Оператор ALTER TABLE. Примеры
⇑