Атрибут DEFAULT

Атрибут DEFAULT в MySQL дозволяє встановити значення за замовчуванням для стовпця таблиці, якщо під час вставки нового запису в таблицю значення для цього стовпця не було вказано. Це означає, що якщо при вставці рядка не вказано значення для стовпця з атрибутом DEFAULT, MySQL автоматично призначить значення, яке ви задали для цього стовпця.
Основне призначенняВстановити значення, яке автоматично буде присвоєно стовпцю, якщо під час вставки запису не буде вказано значення для цього стовпця.
Типи значень за замовчуванням• Конкретне значення (наприклад, число, рядок, дата)
• Вбудовані функції, такі як CURRENT_TIMESTAMP для автоматичного встановлення поточної дати та часу.

Встановлення конкретного значення за замовчуванням

Можна встановити значення за замовчуванням для стовпця, який зберігає статус користувача (наприклад, active), де за замовчуванням значення буде 1 (активний користувач).

CREATE TABLE users (
    user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    status INT DEFAULT 1
);
INSERT INTO users (username, email)
VALUES ('john_doe', 'john.doe@example.com');
-- У цьому випадку для стовпця status 
-- буде автоматично використано значення 1.

Використання функції як значення за замовчуванням

В MySQL можна використовувати вбудовані функції для встановлення значень за замовчуванням. Наприклад, для стовпця дати можна використовувати функцію CURRENT_TIMESTAMP, яка автоматично призначає поточну дату та час при вставці нового запису.

CREATE TABLE orders (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO orders (product_id, customer_id)
VALUES (1, 101);

-- Для цього запису стовпець order_date буде 
-- автоматично заповнений поточною датою та часом.

Встановлення значення за замовчуванням для числових стовпців

Можна також встановити значення за замовчуванням для числових стовпців.

CREATE TABLE products (
    product_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) DEFAULT 0.00
);
INSERT INTO products (product_name)
VALUES ('New Product');

-- Для цього запису значення price 
-- буде автоматично встановлено на ->  0.00.

Зміна значення DEFAULT за допомогою команди ALTER

Можна змінити значення за замовчуванням навіть після створення таблиці, використовуючи команду ALTER TABLE.

ALTER TABLE users
ALTER COLUMN status SET DEFAULT 0;

-- Ця команда змінить значення за замовчуванням 
-- для стовпця status на 0.

Особливості DEFAULT

DEFAULT і NULL•Якщо для стовпця не вказано значення, а також не задано значення за замовчуванням, то значення стовпця буде NULL, якщо він допускає NULL. Якщо стовпець має атрибут NOT NULL і немає значення за замовчуванням, то при вставці запису без вказаного значення для цього стовпця виникне помилка.
•Ви можете вказати DEFAULT NULL для стовпця, щоб значення за замовчуванням було NULL.
Обмеження на значення за замовчуванням•Для стовпців типу TEXT, BLOB, GEOMETRY, JSON можа встановити DEFAULT значення тільки у якості виразу.
•Якщо для стовпця задано значення за замовчуванням, це значення автоматично використовується тільки під час вставки запису, якщо не вказано інше значення.
CREATE TABLE articles (
    article_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    article_title VARCHAR(100) NOT NULL,
    content TEXT DEFAULT (‘Article text goes here.’)
);
INSERT INTO articles (article_title)
VALUES ('New article');

-- Для цього запису значення content 
-- буде автоматично встановлено ‘Article text goes here.’

Для додаткової візуалізації є відео:

Атрибут UNIQUE

Атрибут UNIQUE в MySQL використовується для забезпечення унікальності значень у певному стовпці (або наборі стовпців) таблиці. Це означає, що кожне значення в стовпці, на який накладається атрибут UNIQUE, має бути унікальним серед усіх інших значень в цьому стовпці. Якщо під час вставки або оновлення запису буде надано значення, яке вже існує в цьому стовпці, то MySQL поверне помилку, порушуючи обмеження UNIQUE.
Основне призначенняЗабезпечення унікальності значень у стовпцях або комбінаціях стовпців.
Типи унікальності• Одиночна унікальність: При застосуванні до одного стовпця.
• Комбінаційна унікальність: При застосуванні до кількох стовпців одночасно (це означає, що комбінація значень з кількох стовпців повинна бути унікальною, але окремі значення можуть повторюватися).
Важливий аспектNULL значення: В MySQL стовпець з атрибутом UNIQUE може містити NULL значення.

Приклад одиночної унікальності:

CREATE TABLE users (
    user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE
);
INSERT INTO users (username, email)
VALUES ('john_doe', 'john.doe@example.com');
INSERT INTO users (username, email)
VALUES ('john_doe', 'john@example.com');
INSERT INTO users (username, email)
VALUES ('', 'jack@example.com');
INSERT INTO users (username, email)
VALUES ('', '');

Приклад комбінаційної унікальності:

CREATE TABLE orders (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,
    order_date DATE,
    UNIQUE (product_id, customer_id)
);
INSERT INTO orders (product_id, customer_id, order_date)
VALUES (1, 101, '2025-05-20');
INSERT INTO orders (product_id, customer_id, order_date)
VALUES (1, 101, '2025-05-21');

Для додаткової наочності є відео:

Первинний ключ (PRIMARY KEY)

PRIMARY KEY в MySQL використовується для позначення стовпця або комбінації стовпців таблиці, які є унікальними і обов’язковими для кожного запису. Це означає, що значення в первинному ключі повинні бути унікальними і не можуть бути NULL. PRIMARY KEY є важливою частиною забезпечення цілісності даних в базі даних.
УнікальністьКожен запис у таблиці повинен мати унікальне значення в стовпцях, що є частиною первинного ключа. Це означає, що жодні два записи не можуть мати однакові значення для цього стовпця або комбінації стовпців.
Не допускає NULL значенняЗначення в стовпці, що є частиною первинного ключа, не можуть бути NULL. Це гарантує, що кожен запис в таблиці має дійсне і унікальне значення для цього стовпця.
Автоматичне створення індексуMySQL автоматично створює індекс для стовпця або комбінації стовпців, які є частиною первинного ключа. Це покращує швидкість пошуку та сортування даних.
Один первинний ключ на таблицюУ таблиці може бути лише один первинний ключ. Однак первинний ключ може складатися з кількох стовпців — це називається композитним первинним ключем.

Приклад зі простим первинним ключем:

CREATE TABLE users (
    user_id INT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    PRIMARY KEY (user_id)
);
INSERT INTO users (user_id, username, email)
VALUES 
(1, ‘james’, ‘james@example.com’ ),
(2, ‘jenny’, ‘jenny@example.com’ );

Приклад зі складеним первинним ключем:

CREATE TABLE enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id)
);
INSERT INTO enrollments (student_id, course_id)
VALUES 
(101, 9 ),
(129, 8 );

AUTO_INCREMENT

AUTO_INCREMENT в MySQL — це атрибут, який автоматично генерує унікальні значення для стовпця при вставці нових рядків у таблицю. Зазвичай його використовують для первинного ключа (PRIMARY KEY), щоб забезпечити унікальність кожного рядка.
Автоматичне збільшення значенняПри кожній вставці нового рядка, значення поля з AUTO_INCREMENT автоматично збільшується на 1 (за замовчуванням).
Тип данихAUTO_INCREMENT працює тільки з числовими типами (INT, BIGINT, TINYINT тощо).
Має бути ключемНайчастіше AUTO_INCREMENT використовується з PRIMARY KEY.

Приклад:

CREATE TABLE users_autoinc (
    id INT AUTO_INCREMENT,
    name VARCHAR(100),
    PRIMARY KEY (id)
);
INSERT INTO users_autoinc (name) VALUES ('Jenny');
INSERT INTO users_autoinc (id, name) VALUES (10, 'Penny');
INSERT INTO users_autoinc (name) VALUES ('Mary');
ALTER TABLE users_autoinc AUTO_INCREMENT = 100;
INSERT INTO users_autoinc (name) VALUES ('Ruby');

NOT NULL

Атрибут NOT NULL означає, що значення в цьому стовпці обов’язкове — тобто не може бути NULL (невизначеним або порожнім).

NOT NULL використовується для забезпечення обов’язковості введення даних у певне поле. Якщо ви спробуєте вставити або оновити рядок без значення в такому стовпці, MySQL видасть помилку.

Приклад:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT
);
INSERT INTO employees (age) VALUES (30);
-- Помилка! Не вказано значення для name, яке має бути NOT NULL.
INSERT INTO employees (name, age) VALUES (‘Jenny’, 30);

Для додаткової візуалізації є відео.