Створення таблиць. Оператор CREATE TABLE. Приклади
Перед вивченням даної теми рекомендується ознайомитись з темою:
Зміст
- 1. Оператор CREATE TABLE. Створення таблиці. Загальна форма
- 2. Приклади створення таблиць
- Споріднені теми
Пошук на інших ресурсах:
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 – імена полів таблиці бази даних. Ім’я кожного поля у таблиці Table_Name повинно бути унікальне. У різних таблицях імена полів можуть співпадати;
- 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. Обмеження задаються одним з можливих слів NOT NULL, UNIQUE, CHECK.
Розгляд існуючих атрибутів полів в мові 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 2018. Приклад створення найпростішого запиту
- Модифікація таблиць. Оператор ALTER TABLE
⇑