Default Values
--------------

If the SQL_MODE contains STRICT_TRANS_TABLES and you are inserting into a
transactional table (like InnoDB), or if the SQL_MODE contains
STRICT_ALL_TABLES, all NOT NULL columns which do not have a DEFAULT value (and
are not AUTO_INCREMENT) must be explicitly referenced in INSERT statements. If
not, an error like this is produced:

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

In all other cases, if a NOT NULL column without a DEFAULT value is not
referenced, an empty value will be inserted (for example, 0 for INTEGER
columns and '' for CHAR columns). See NULL Values in MariaDB:Inserting for
examples.

If a NOT NULL column having a DEFAULT value is not referenced, NULL will be
inserted.

If a NULL column having a DEFAULT value is not referenced, its default value
will be inserted. It is also possible to explicitly assign the default value
using the DEFAULT keyword or the DEFAULT() function.

If the DEFAULT keyword is used but the column does not have a DEFAULT value,
an error like this is produced:

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

Duplicate Values
----------------

By default, if you try to insert a duplicate row and there is a UNIQUE index,
INSERT stops and an error like this is produced:

ERROR 1062 (23000): Duplicate entry 'dup_value' for key 'col'

To handle duplicates you can use the IGNORE clause, INSERT ON DUPLICATE KEY
UPDATE or the REPLACE statement. Note that the IGNORE and DELAYED options are
ignored when you use ON DUPLICATE KEY UPDATE.

URL: https://mariadb.com/kb/en/insert-default-duplicate-values/