1. Осмислене створення таблиць
У попередніх лекціях ми вже трохи познайомилися із запитами для створення таблиць, тож тепер настав час розібратися в цьому глибше.
Створення таблиці дуже нагадує оголошення класу Java і має такий шаблон:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
Давай, наприклад, напишемо запит, який створює таблицю з користувачами:
CREATE TABLE user (
id INT,
name VARCHAR(100),
level INT,
created_date DATE,
);
Виглядає дуже просто, тому що тут не вказано купи нюансів.
По-перше, таблиця може мати додаткові налаштування.
А по-друге, кожна колонка може мати додаткові налаштування.
І почнемо ми з налаштувань для створення колонок.
2. Ключі в таблиці
У колонки таблиці крім імені та типу даних можуть бути ще такі налаштування:
PRIMARY KEY | Колонка є ключем таблиці |
UNIQUE KEY | Усі значення колонки мають бути унікальними |
DEFAULT value | Значення за замовчуванням |
NOT NULL | Заборона приймати значення NULL |
AUTO_INCREMENT | SQL-сервер автоматично збільшуватиме значення під час додавання нового запису до таблиці |
GENERATED | Обчислюване поле |
STORAGE | Де зберігати дані: на диску або в пам'яті |
COMMENT | Коментар до колонки: наприклад, назва локальною мовою |
Нижче ми розглянемо деякі з них.
По-перше, це PRIMARY KEY.
Найчастіше це окрема колонка з ім'ям id та типом INT. Це так званий “головний ключ” таблиці, і всі її рядки мають унікальні значення цього ключа. Насамперед він використовується для того, щоб інші таблиці могли посилатися на записи нашої таблиці та вказувати на її певний запис.
По-друге, це UNIQUE KEY.
Чимось він схожий на PRIMARY KEY, хоча смислове навантаження в нього зовсім інше. Якщо колонка має атрибут UNIQUE, всі значення цієї колонки мають бути унікальні. Хороший приклад відмінності UNIQUE KEY та PRIMARY KEY — це список людей у паспортному столі.
Податковий номер — це PRIMARY KEY, він використовується для того, щоб легко було посилатися на потрібну людину з інших таблиць.
Номер паспорта — це UNIQUE KEY. Не може бути двох людей з однаковим номером паспорта. Однак номер паспорта можна змінити. Наприклад, під час зміни прізвища. А податковий номер залишиться з тобою назавжди. Це і є основним завданням PRIMARY KEY. Приклад запиту із зазначенням PRIMARY KEY:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(100),
level INT,
created_date DATE,
);
3. Налаштування типу даних
Є менш важливі, але корисні атрибути.
DEFAULT value
Під час вставки даних (додавання нового рядка) до таблиці можна не вказувати значення деяких колонок, якщо вони мають значення за замовчуванням. У такому випадку SQL-сервер просто встановить значення стовпчика сам.
Починаючи з 8-ї версії MySQL як значення можна вказувати вираз.
NOT NULL
Якщо під час створення таблиці у колонки вказати атрибут NOT NULL, то SQL-сервер стежитиме за тим, щоб у цю колонку не можна було зберегти значення NULL. За замовчуванням будь-яка колонка може мати значення NULL, навіть колонка з типом INT. Що трохи очевидно для Java-програміста.
AUTO_INCREMENT
Зазвичай він використовується для ID колонок. Коли ти додаєш новий рядок до таблиці, дуже хочеться, щоб SQL-сервер сам привласнив id для цього запису. Хто як не сервер найкраще знає, скільки в нього рядків у таблиці. Особливо якщо до одного SQL-сервера йдуть запити з різних клієнтів.
Саме це робить атрибут AUTO_INCREMENT. Коли ми додаємо новий рядок, ми просто не передаємо нічого як id, і SQL-сервер сам вкаже потрібний ID для цього запису: він просто візьме ID останнього існуючого запису і збільшить його на 1. Цей атрибут можна використовувати лише з типами цілих чи дійсних чисел. І, звісно, давай зробимо приклад створення такої таблиці:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
level INT DEFAULT 1,
created_date DATE NOT NULL,
);
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ