| Атрибут 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.’
Для додаткової візуалізації є відео: