MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB DEFAULT() Objaśnienie

W MariaDB, DEFAULT() to wbudowana funkcja, która zwraca domyślną wartość kolumny tabeli.

Jeśli kolumna nie ma wartości domyślnej i jest NULLABLE , a następnie NULL jest zwracany. Jeśli kolumna nie ma wartości domyślnej i jest nie NULLABLE , zwracany jest błąd.

Składnia

Składnia wygląda tak:

DEFAULT(col_name)

Gdzie col_name to nazwa kolumny, dla której ma zostać zwrócona wartość domyślna.

W niektórych przypadkach można go również używać bez nawiasów i argumentów:

DEFAULT

Ta składnia może być użyta do jawnego ustawienia kolumny na jej wartość domyślną.

Przykład

Oto przykład pokazujący, jak działa funkcja.

Załóżmy, że tworzymy taką tabelę:

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

Tutaj ustawiamy domyślną wartość dla meal kolumna. W szczególności użyliśmy DEFAULT 'Salad' aby ustawić domyślny posiłek na Salad .

Używa DEFAULT klauzula CREATE TABLE oświadczenie. Chociaż jest to związane z naszym celem tutaj (ustawia domyślną wartość dla kolumny), nie należy go mylić z DEFAULT() funkcja, której dotyczy ten artykuł.

Teraz wstawmy kilka wierszy:

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

Niektóre z tych wpisów wyraźnie określają, jakiego posiłku chce gość, podczas gdy inne nie. Ci, którzy tego nie zrobią, użyją tylko domyślnego posiłku (Salad ).

Więc teraz wybierzmy te wiersze z tabeli. Uwzględnimy DEFAULT() funkcja w naszym wyborze:

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

Wynik:

+----------+---------------+---------+--------------------------+-----------------+
| 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) kolumna zwraca wartości domyślne, a meal kolumna zwraca rzeczywiste wartości, które zostały wstawione.

Podobnie DEFAULT(special_request) kolumna zwraca wartości domyślne dla tej kolumny, a special_request kolumna zwraca rzeczywiste wartości, które zostały wstawione.

Odnośnie special_request kolumna, w rzeczywistości nie ustawiliśmy wartości domyślnej dla tej kolumny, więc wynikiem jest NULL . Zauważ, że jeśli kolumna nie była NULLABLE , to otrzymalibyśmy błąd (patrz poniżej). Ale kolumna jest NULLABLE , a więc domyślna wartość NULL zwrócone.

Jasne wstawianie wartości domyślnej

Możesz użyć DEFAULT słowo kluczowe bez nawiasów, aby jawnie wstawić domyślną wartość do kolumny.

Oto przykład:

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

Teraz wybierzmy ten wiersz:

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

Wynik:

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

W obu przypadkach wstawił wartość domyślną dla odpowiedniej kolumny. Na meal kolumna, to była Salad . Dla special_request kolumna, to było NULL .

Kolumny bez wartości null

Jak wspomniano, próba uzyskania wartości domyślnej z NULLABLE kolumna, która nie ma wartości domyślnej, powoduje błąd.

Przykład:

SELECT DEFAULT(guest_id)
FROM guest_meals;

Wynik:

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

Kiedy tworzyliśmy tabelę, nie podaliśmy domyślnej wartości dla guest_id kolumna, a także ustawiamy ją na NOT NULL . Z tego powodu otrzymujemy błąd podczas próby zwrócenia wartości domyślnej.

Kolumny liczb całkowitych przy użyciu AUTO_INCREMENT

Dla kolumn liczb całkowitych przy użyciu AUTO_INCREMENT , zwracana wartość to 0 .

Jako przykład stwórzmy tabelę z AUTO_INCREMENT kolumna:

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

guest_id kolumna używa INT (integer) typ danych i jest ustawiony na AUTO_INCREMENT .

Teraz wstaw kilka wierszy:

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

Teraz zwróćmy domyślną wartość guest_id kolumna:

SELECT 
    DEFAULT(guest_id),
    guest_id
FROM guest;

Wynik:

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

DEFAULT(guest_id) kolumna pokazuje, że domyślna wartość to 0 dla wszystkich rzędów. guest_id kolumna pokazuje rzeczywistą wstawioną wartość (która została wygenerowana przez 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. Łatwe tworzenie zapory SQL dzięki ClusterControl i ProxySQL

  2. Jak REGEXP_REPLACE() działa w MariaDB

  3. Jak działa CHAR() w MariaDB

  4. Jak działa MAKE_SET() w MariaDB

  5. 11 funkcji do pobrania dnia, miesiąca i roku z daty w MariaDB