MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

MariaDB DEFAULT () Giải thích

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 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 ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về Phân cụm ProxySQL trong ClusterControl

  2. Cách MAKE_SET () hoạt động trong MariaDB

  3. Đặt ngôn ngữ được sử dụng cho các chức năng ngày và giờ trong MariaDB

  4. So sánh các giải pháp chuyển đổi dự phòng DBaaS với thiết lập khôi phục thủ công

  5. Cách MAKETIME () hoạt động trong MariaDB