
上QQ阅读APP看书,第一时间看更新
4.8 经典习题与面试题
1.经典习题
在shop数据库中创建一个购物车表cart,内容如表4-3所示。
表4-3 cart表结构

按照下列要求进行表操作:
(1)将name字段的数据改为VARCHAR(30),且保留非空约束。
(2)将sum_money字段的位置改到count字段的前面。
(3)将sum_money字段改名为total_money。
(4)在表中增加expiredays字段,数据类型为VARCHAR(4),表示是否已过期。
(5)删除count字段。
(6)将cart表的存储引擎更改为MyISAM类型。
(7)将cart表名更改为shoppingCart。
2.面试题及解答
(1)修改数据表的字段名称之后,会有部分约束条件丢失,原因何在?
在修改数据表的字段名称时,如果想保持原来的约束条件,一定要把原来的约束条件带上,否则就会丢失。
(2)为什么自增字段不能设置默认值?
一个表只能有一个自增字段,可以是任何整数类型,自增字段没有默认值。在没有设置初值的情况下,自增字段从1开始增加,插入记录时,不设置自增字段的值。自增字段处插入的值为NULL或者为0时,该字段的值在上一条记录的基础上加1。如果插入的记录中该字段的值为8,且下一条记录没有指定值,该字段的值就在此基础上加1。
(3)如何设置外键?
子表的外键必须依赖父表的某个字段,因此父表必须先于子表建立,而且父表中的被依赖字段必须是主键或者组合主键中的一个。如果不满足这些条件,就不能成功创建子表。
(4)如何删除父表?
删除父表是很麻烦的过程,因为子表的外键约束限制着父表的删除。有两种方法可以解决这个问题。第一种方法,先删除子表,再删除父表。这样做完全可以达到删除父表的目的,但是必须牺牲子表。第二种方法,先删除子表的外键约束,再删除父表。