Trong MariaDB, DEFAULT()
là một hàm tích hợp trả về giá trị mặc định cho một cột trong bảng.
Nếu cột không có giá trị mặc định và nó là NULLABLE
, rồi đến NULL
Được trả lại. Nếu cột không có giá trị mặc định và nó không phải NULLABLE
, một lỗi được trả lại.
Cú pháp
Cú pháp như sau:
DEFAULT(col_name)
Ở đâu col_name
là tên của cột để trả về giá trị mặc định.
Nó cũng có thể được sử dụng mà không có dấu ngoặc đơn và đối số trong một số trường hợp nhất định:
DEFAULT
Cú pháp này có thể được sử dụng để đặt cột một cách rõ ràng thành giá trị mặc định của nó.
Ví dụ
Dưới đây là một ví dụ để chứng minh cách hoạt động của hàm.
Giả sử chúng ta tạo một bảng như sau:
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
Ở đây, chúng tôi đặt giá trị mặc định cho meal
cột. Cụ thể, chúng tôi đã sử dụng DEFAULT 'Salad'
để đặt bữa ăn mặc định thành Salad
.
Điều này sử dụng DEFAULT
mệnh đề của CREATE TABLE
tuyên bố. Mặc dù có liên quan đến mục đích của chúng tôi ở đây (nó đặt giá trị mặc định cho một cột), nhưng không nên nhầm lẫn với DEFAULT()
chức năng của bài viết này.
Bây giờ chúng ta hãy chèn một số hàng:
INSERT INTO guest_meals (guest_id) VALUES (1);
INSERT INTO guest_meals (guest_id, meal) VALUES (2, 'Fish');
INSERT INTO guest_meals (guest_id, meal) VALUES (3, 'Burrito');
INSERT INTO guest_meals (guest_id, meal, special_request) VALUES (4, 'Pasta', 'Hot');
INSERT INTO guest_meals (guest_id, special_request) VALUES (5, 'Vegan');
Một số mục này nêu rõ khách muốn bữa ăn nào trong khi những mục khác thì không. Những món không chỉ dùng trong bữa ăn mặc định (Salad
).
Vì vậy, bây giờ chúng ta hãy chọn những hàng đó từ bảng. Chúng tôi sẽ bao gồm DEFAULT()
chức năng trong lựa chọn của chúng tôi:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals;
Kết quả:
+----------+---------------+---------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+---------+--------------------------+-----------------+ | 1 | Salad | Salad | NULL | NULL | | 2 | Salad | Fish | NULL | NULL | | 3 | Salad | Burrito | NULL | NULL | | 4 | Salad | Pasta | NULL | Hot | | 5 | Salad | Salad | NULL | Vegan | +----------+---------------+---------+--------------------------+-----------------+
DEFAULT(meal)
cột trả về các giá trị mặc định và meal
cột trả về các giá trị thực đã được chèn vào.
Tương tự, DEFAULT(special_request)
cột trả về các giá trị mặc định cho cột đó và special_request
cột trả về các giá trị thực đã được chèn.
Về special_request
, chúng tôi đã không thực sự đặt giá trị mặc định cho cột này và do đó, kết quả là NULL
. Lưu ý rằng nếu cột không phải là NULLABLE
, thì chúng tôi sẽ gặp lỗi (xem bên dưới). Nhưng cột là NULLABLE
và do đó giá trị mặc định của NULL
đã trả lại.
Chèn Giá trị Mặc định một cách rõ ràng
Bạn có thể sử dụng DEFAULT
từ khóa không có dấu ngoặc đơn để chèn giá trị mặc định vào cột một cách rõ ràng.
Đây là một ví dụ:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT);
Bây giờ chúng ta hãy chọn hàng đó:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6;
Kết quả:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
Trong cả hai trường hợp, nó chèn giá trị mặc định cho cột tương ứng. Đối với meal
, đây là Salad
. Đối với special_request
, đây là NULL
.
Các cột không thể rỗng
Như đã đề cập, cố gắng lấy giá trị mặc định từ một không phải NULLABLE
cột không có giá trị mặc định dẫn đến lỗi.
Ví dụ:
SELECT DEFAULT(guest_id)
FROM guest_meals;
Kết quả:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
Khi tạo bảng, chúng tôi không cung cấp giá trị mặc định cho guest_id
và chúng tôi cũng đặt nó thành NOT NULL
. Do đó, chúng tôi gặp lỗi khi cố gắng trả về giá trị mặc định của nó.
Cột Số nguyên sử dụng AUTO_INCREMENT
Đối với các cột số nguyên sử dụng AUTO_INCREMENT
, giá trị trả về là 0
.
Ví dụ:hãy tạo một bảng với AUTO_INCREMENT
cột:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
cột sử dụng INT
(số nguyên) kiểu dữ liệu và được đặt thành AUTO_INCREMENT
.
Bây giờ hãy chèn một số hàng:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Bây giờ, hãy trả về giá trị mặc định của guest_id
cột:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest;
Kết quả:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id)
cột cho thấy giá trị mặc định là 0
cho tất cả các hàng. guest_id
cột hiển thị giá trị thực đã được chèn (được tạo bởi AUTO_INCREMENT
).