MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

MariaDB DEFAULT() Dijelaskan

Di MariaDB, DEFAULT() adalah fungsi bawaan yang mengembalikan nilai default untuk kolom tabel.

Jika kolom tidak memiliki nilai default dan NULLABLE , lalu NULL dikembalikan. Jika kolom tidak memiliki nilai default dan tidak NULLABLE , kesalahan dikembalikan.

Sintaks

Sintaksnya seperti ini:

DEFAULT(col_name)

Dimana col_name adalah nama kolom untuk mengembalikan nilai default.

Itu juga dapat digunakan tanpa tanda kurung dan argumen dalam kasus-kasus tertentu:

DEFAULT

Sintaks ini dapat digunakan untuk secara eksplisit menyetel kolom ke nilai defaultnya.

Contoh

Berikut ini contoh untuk mendemonstrasikan cara kerja fungsi.

Misalkan kita membuat tabel seperti ini:

CREATE TABLE guest_meals (
  guest_id INT NOT NULL,
  meal VARCHAR(255) DEFAULT 'Salad',
  special_request VARCHAR(255),
  PRIMARY KEY (guest_id)
);

Di sini, kami menetapkan nilai default untuk meal kolom. Secara khusus, kami menggunakan DEFAULT 'Salad' untuk mengatur makanan default ke Salad .

Ini menggunakan DEFAULT klausa dari CREATE TABLE penyataan. Meskipun terkait dengan tujuan kita di sini (ini menetapkan nilai default untuk kolom), jangan bingung dengan DEFAULT() tentang fungsi artikel ini.

Sekarang mari kita masukkan beberapa baris:

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');

Beberapa entri ini secara eksplisit menyatakan makanan mana yang diinginkan tamu sementara yang lain tidak. Yang tidak hanya akan menggunakan makanan standar (Salad ).

Jadi sekarang mari kita pilih baris-baris itu dari tabel. Kami akan menyertakan DEFAULT() fungsi dalam pilihan kami:

SELECT 
    guest_id,
    DEFAULT(meal),
    meal,
    DEFAULT(special_request),
    special_request
FROM guest_meals;

Hasil:

+----------+---------------+---------+--------------------------+-----------------+
| 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) kolom mengembalikan nilai default, dan meal kolom mengembalikan nilai aktual yang dimasukkan.

Demikian pula, DEFAULT(special_request) kolom mengembalikan nilai default untuk kolom itu, dan special_request kolom mengembalikan nilai aktual yang dimasukkan.

Mengenai special_request kolom, kami tidak benar-benar menetapkan nilai default untuk kolom ini dan hasilnya adalah NULL . Perhatikan bahwa jika kolomnya bukan NULLABLE , maka kami akan mendapatkan kesalahan (lihat di bawah). Tapi kolomnya adalah NULLABLE , dan nilai default NULL dikembalikan.

Memasukkan Nilai Default Secara Eksplisit

Anda dapat menggunakan DEFAULT kata kunci tanpa tanda kurung untuk secara eksplisit memasukkan nilai default ke dalam kolom.

Ini contohnya:

INSERT INTO guest_meals (guest_id, meal, special_request) 
VALUES (6, DEFAULT, DEFAULT);

Sekarang mari kita pilih baris itu:

SELECT 
    guest_id,
    DEFAULT(meal),
    meal,
    DEFAULT(special_request),
    special_request
FROM guest_meals
WHERE guest_id = 6;

Hasil:

+----------+---------------+-------+--------------------------+-----------------+
| guest_id | DEFAULT(meal) | meal  | DEFAULT(special_request) | special_request |
+----------+---------------+-------+--------------------------+-----------------+
|        6 | Salad         | Salad | NULL                     | NULL            |
+----------+---------------+-------+--------------------------+-----------------+

Dalam kedua kasus, itu memasukkan nilai default untuk masing-masing kolom. Untuk meal kolom, ini adalah Salad . Untuk special_request kolom, ini adalah NULL .

Kolom Tidak Dapat Dibatalkan

Seperti yang disebutkan, mencoba mendapatkan nilai default dari non-NULLABLE kolom yang tidak memiliki nilai default menghasilkan kesalahan.

Contoh:

SELECT DEFAULT(guest_id)
FROM guest_meals;

Hasil:

ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value

Saat membuat tabel, kami tidak memberikan nilai default untuk guest_id kolom, dan kami juga mengaturnya ke NOT NULL . Karena itu, kami mendapatkan kesalahan saat mencoba mengembalikan nilai defaultnya.

Kolom Bilangan Bulat menggunakan AUTO_INCREMENT

Untuk kolom bilangan bulat menggunakan AUTO_INCREMENT , nilai yang dikembalikan adalah 0 .

Sebagai contoh, mari kita buat tabel dengan AUTO_INCREMENT kolom:

CREATE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

guest_id kolom menggunakan INT (bilangan bulat) tipe data, dan disetel ke AUTO_INCREMENT .

Sekarang masukkan beberapa baris:

INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Sekarang, mari kembalikan nilai default guest_id kolom:

SELECT 
    DEFAULT(guest_id),
    guest_id
FROM guest;

Hasil:

+-------------------+----------+
| DEFAULT(guest_id) | guest_id |
+-------------------+----------+
|                 0 |        1 |
|                 0 |        2 |
|                 0 |        3 |
+-------------------+----------+

DEFAULT(guest_id) kolom menunjukkan bahwa nilai default adalah 0 untuk semua baris. guest_id kolom menunjukkan nilai sebenarnya yang dimasukkan (yang dihasilkan oleh 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. Otomasi Basis Data dengan Wayang:Menyebarkan Replikasi MySQL &MariaDB

  2. MariaDB JSON_OBJECT() Dijelaskan

  3. Bagaimana DAYOFWEEK() Bekerja di MariaDB

  4. Pertimbangan tentang Enkripsi untuk Data saat Istirahat untuk MariaDB

  5. Menggunakan Mesin Penyimpanan MyRocks dengan Server MariaDB