MySQL 8 DBA基础教程
上QQ阅读APP看书,第一时间看更新

5.5 经典习题与面试题

1.经典习题

在shop数据库中创建一个购物车表cart,内容如表5-3所示。

表5-3 cart表的结构

按照下列要求进行表操作:

(1)随意添加2条完整数据记录,插入到表中。

(2)在第2条数据之前插入一条数据,数据的保质期字段为空。

(3)删除添加的第一条数据。

(4)更新之前插入的保质期字段为空的数据,将其保质期设置为“过期”。

(5)删除保质期为“过期”的所有数据。

2.面试题及解答

(1)插入记录时,哪种情况下不需要在INSERT语句中指定字段名?

在INSERT语句中指定字段名是为了指明将数据插入哪个字段中。如果INSERT语句为表中的所有字段赋值,就可以不指明字段名,数据库系统会按顺序将数据一次性插入所有字段中。有些表的字段特别多,有些字段不需要赋值,这样就必须指出为哪些字段赋值。

(2)如何为自增字段(AUTO_INCREMENT)赋值?

在INSERT语句中可以直接为自增字段赋值。但是,大部分的自增字段需要数据库系统为其自动生成一个值,这样可以保证这个值的唯一性。用户可以通过两种方式让数据库系统自动为自增字段赋值:第一种方法是在INSERT语句中不为该字段赋值;第二种方法是在INSERT语句中将该字段赋值为NULL。而且,其值是上条记录中该字段的取值加1。

(3)如何进行联表删除?

如果某个学生退表了,就必须从学生表中删除这个学生的信息,同时,必须从数据库中删除所有与该同学相关的图书信息、成绩信息等,这就必须进行联表删除。在学生表删除这个学生的信息时,要同时删除所有其他表中该同学的信息,这个可以通过外键来实现,其他表中的信息与学生表中的信息都是通过学号来联系的,根据学号查询存在该同学信息的表,删除相应的数据。联表删除可以保证数据库中数据的一致性。