MySQL PADRÃO

Resumo : neste tutorial, você aprenderá sobre a restrição MySQL DEFAULT e como usá-la de forma eficaz.

Introdução à restrição MySQL DEFAULT

A restrição do MySQL DEFAULTpermite especificar um valor padrão para uma coluna. Aqui está a sintaxe da DEFAULTrestrição:

column_name data_type DEFAULT default_value;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe, você especifica a DEFAULTpalavra-chave seguida pelo valor padrão da coluna. O tipo do valor padrão corresponde ao tipo de dados da coluna.

Deve default_valueser uma constante literal, por exemplo, um número ou uma string. Não pode ser uma função ou uma expressão. No entanto, o MySQL permite que você defina a data e hora atuais ( CURRENT_TIMESTAMP) nas colunas TIMESTAMPe DATETIME.

Quando você define uma coluna sem a NOT NULLrestrição, a coluna assumirá implicitamente NULLcomo valor padrão.

Se uma coluna tiver uma DEFAULTrestrição e a instrução INSERTor UPDATEnão fornecer o valor para essa coluna, o MySQL usará o valor padrão especificado na DEFAULTrestrição.

Normalmente, você define as DEFAULTrestrições para colunas ao criar a tabela . O MySQL também permite adicionar restrições padrão às colunas das tabelas existentes. Se não quiser usar valores padrão para colunas, você poderá remover as restrições padrão.

Exemplo de restrição MySQL DEFAULT

O exemplo a seguir cria uma nova tabela chamada cart_itemscom quatro colunas item_id, name, quantitye sales_tax:

CREATE TABLE cart_items 
(
    item_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    quantity INT NOT NULL,
    price DEC(5,2) NOT NULL,
    sales_tax DEC(5,2) NOT NULL DEFAULT 0.1,
    CHECK(quantity > 0),
    CHECK(sales_tax >= 0) 
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A sales_taxcoluna tem um valor padrão de 0,1 (10%). A seguinte declaração mostra a cart_itemstabela:

DESC cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| item_id   | int          | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255) | NO   |     | NULL    |                |
| quantity  | int          | NO   |     | NULL    |                |
| price     | decimal(5,2) | NO   |     | NULL    |                |
| sales_tax | decimal(5,2) | NO   |     | 0.10    |                |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)Linguagem de código:  texto simples  ( texto simples )

A INSERTinstrução a seguir adiciona um novo item à cart_itemstabela:

INSERT INTO cart_items(name, quantity, price)
VALUES('Keyboard', 1, 50);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, a INSERTinstrução não fornece um valor para a sales_taxcoluna. A sales_taxcoluna usa o valor padrão especificado na DEFAULTrestrição:

SELECT * FROM cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+---------+----------+----------+-------+-----------+
| item_id | name     | quantity | price | sales_tax |
+---------+----------+----------+-------+-----------+
|       1 | Keyboard |        1 | 50.00 |      0.10 |
+---------+----------+----------+-------+-----------+
1 row in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Além disso, você pode usar explicitamente a DEFAULTpalavra-chave ao inserir uma nova linha na cart_itemstabela:

INSERT INTO cart_items(name, quantity, price, sales_tax)
VALUES('Battery',4, 0.25 , DEFAULT);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste caso, a sales_taxcoluna assume o valor padrão:

SELECT * FROM cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+---------+----------+----------+-------+-----------+
| item_id | name     | quantity | price | sales_tax |
+---------+----------+----------+-------+-----------+
|       1 | Keyboard |        1 | 50.00 |      0.10 |
|       2 | Battery  |        4 |  0.25 |      0.10 |
+---------+----------+----------+-------+-----------+
2 rows in set (0.01 sec)Linguagem de código:  texto simples  ( texto simples )

Adicionando uma restrição DEFAULT a uma coluna

Para adicionar uma restrição padrão a uma coluna de uma tabela existente, use a ALTER TABLEinstrução:

ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT default_value;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O exemplo a seguir adiciona uma DEFAULTrestrição à quantitycoluna da cart_itesmtabela:

ALTER TABLE cart_items
ALTER COLUMN quantity SET DEFAULT 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Se você descrever a cart_itemstabela, verá as alterações:

DESC cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| item_id   | int          | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255) | NO   |     | NULL    |                |
| quantity  | int          | NO   |     | 1       |                |
| price     | decimal(5,2) | NO   |     | NULL    |                |
| sales_tax | decimal(5,2) | NO   |     | 0.10    |                |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

A instrução a seguir insere uma nova linha na cart_itemstabela sem especificar um valor para a quantitycoluna:

INSERT INTO cart_items(name, price, sales_tax)
VALUES('Maintenance services',25.99, 0)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O valor da quantitycoluna será padronizado como 1:

SELECT * FROM cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+---------+----------------------+----------+-------+-----------+
| item_id | name                 | quantity | price | sales_tax |
+---------+----------------------+----------+-------+-----------+
|       1 | Keyboard             |        1 | 50.00 |      0.10 |
|       2 | Battery              |        4 |  0.25 |      0.10 |
|       3 | Maintenance services |        1 | 25.99 |      0.00 |
+---------+----------------------+----------+-------+-----------+
3 rows in set (0.00 sec)    Linguagem de código:  texto simples  ( texto simples )

Removendo uma restrição DEFAULT de uma coluna

Para remover uma DEFAULTrestrição de uma coluna, você usa a ALTER TABLEinstrução:

ALTER TABLE table_name
ALTER column_name DROP DEFAULT;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O exemplo a seguir remove a DEFAULTrestrição da quantitycoluna da cart_itemstabela:

ALTER TABLE cart_items
ALTER COLUMN quantity DROP DEFAULT;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

E aqui está a nova cart_itemsestrutura:

DESC cart_items;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| item_id   | int          | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255) | NO   |     | NULL    |                |
| quantity  | int          | NO   |     | NULL    |                |
| price     | decimal(5,2) | NO   |     | NULL    |                |
| sales_tax | decimal(5,2) | NO   |     | 0.10    |                |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Resumo

  • As restrições do MySQL DEFAULTdefinem valores padrão para colunas.
  • Use DEFAULT default_valuepara definir uma restrição padrão para uma coluna.
  • Use ALTER TABLE ... ALTER COLUMN ... SET DEFAULTpara adicionar uma DEFAULTrestrição a uma coluna de uma tabela existente.
  • Use ALTER TABLE ... ALTER COLUMN ... DROP DEFAULTpara eliminar uma DEFAULTrestrição de uma coluna de uma tabela existente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *