JavaRush /Курси /All lectures for UA purposes /Створення таблиць

Створення таблиць

All lectures for UA purposes
Рівень 1 , Лекція 547
Відкрита

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, name VARCHAR(100), level INT, created_date DATE, PRIMARY KEY (id) );

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 NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, level INT DEFAULT 1, created_date DATE NOT NULL, PRIMARY KEY (id) );
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Михайло Рівень 1 Expert
11 грудня 2023
Матеріал лекції та правильна відповідь задачі не збігаються, такого запису в лекції ніде не вказано, і середня кількість спроб це підтверджує.
Denis Рівень 14
3 лютого 2024
Схоже, валідатор такий як був на старті самого проєкту JavaRush для задач по java - "вгадайте як я прийму ваше рішення" (а не як вірно). З часом дороблять його.