Omitting Columns in INSERT Statements in MySQL

Q

How To Omit Columns with Default Values in INSERT Statement in MySQL?

✍: FYIcenter.com

A

If you don't want to specify values for columns that have default values, or you want to specify values to columns in an order different than how they are defined, you can provide a column list in the INSERT statement. If a column is omitted in the column, MySQL applies 3 rules:

  • If default value is defined for the column, that default value will be used.
  • If no default value is defined for the column and NULL is allowed, NULL will be used.
  • If no default value is defined for the column and NULL is not allowed, MySQL will provide '' for character type columns, and 0 for numeric columns.

The following tutorial exercise gives you some good examples:

mysql> INSERT INTO fyi_links (url, id) 
  VALUES ('sqa.fyicenter.com', 103);
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> INSERT INTO fyi_links (id) VALUES (110);
Query OK, 1 row affected, 1 warning (0.06 sec)

mysql> INSERT INTO fyi_links (url) 
   VALUES ('www.fyicenter.com');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SELECT id, url, notes, counts, DATE(created) 
   FROM fyi_links;
+-----+-------------------+-------+--------+---------------+
| id  | url               | notes | counts | DATE(created) |
+-----+-------------------+-------+--------+---------------+
| 101 | dev.fyicenter.com | NULL  |      0 | 2006-04-30    |
| 102 | dba.fyicenter.com | NULL  |      0 | 2006-07-01    |
| 103 | sqa.fyicenter.com | NULL  |   NULL | 2006-07-01    |
| 110 |                   | NULL  |   NULL | 2006-07-01    |
|   0 | www.fyicenter.com | NULL  |   NULL | 2006-07-01    |
+-----+-------------------+-------+--------+---------------+
5 rows in set (0.00 sec)

 

INSERT, UPDATE and DELETE Statements in MySQL

⇒⇒MySQL Database Tutorials

2016-10-17, 194👍, 0💬