面试1、为什么建表时,加 not null default ‘’ 或 default 0

    答:不想让表中出现null值。

    面试2、为什么不想要 null 的值

    答:(1)不好比较。null是一种特殊值,比较时只能用专门的is null 和 is not null来比较。碰到运算符,通常返回null。

    1. 2)效率不高。影响提高索引效果。因此,我们往往在建表时 not null default '' default 0

    面试3、带AUTO_INCREMENT约束的字段值是从1开始的吗?
    在MySQL中,默认AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的值,这样新插入的记录的自增字段值从初始值开始递增,如在表中插入第一条记录,同时指定id值为5,则以后插入的记录的id值就会从6开始往上增加。添加主键约束时,往往需要设置字段自动增加属性。

    面试4、并不是每个表都可以任意选择存储引擎?
    外键约束(FOREIGN KEY)不能跨引擎使用。

    MySQL支持多种存储引擎,每一个表都可以指定一个不同的存储引擎,需要注意的是:外键约束是用来保证数据的参照完整性的,如果表之间需要关联外键,却指定了不同的存储引擎,那么这些表之间是不能创建外键约束的。所以说,存储引擎的选择也不完全是随意的。