第4章 习题答案_第1页
第4章 习题答案_第2页
第4章 习题答案_第3页
第4章 习题答案_第4页
第4章 习题答案_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章表记录的更新习题答案习题1:nul与null有什么区别?两者核心区别在于本质含义及参与运算的行为不同,具体如下:本质含义不同:nul指ASCII0(即字符序列“\0”),是一个具体的字符;null表示“未知”“不存在”或“无意义”,并非具体值。存储与处理不同:以gbk字符集的char(5)为例,若仅存储“张三”(占2个存储空间),剩余3个空间会填入“\0”(nul);而null表示该字段无有效数据,不占用具体存储(逻辑上的空)。运算行为不同:nul可参与算术运算(当作整数0处理)和字符串连接(当作空字符串处理);null与任何数据进行算术、比较或逻辑运算时,结果永远是null(未知)。习题2:truncate语句与delete语句有什么区别?两者均用于删除表记录,但核心逻辑与特性差异显著,具体区别如下:删除原理不同:delete语句仅删除表中符合条件的记录(无where子句时删除所有记录),表结构、索引、约束等保持不变;truncate语句本质是先删除表(droptable),再重建与原表结构一致的新表,并非单纯删除记录。返回结果不同:delete语句返回被删除的记录行数;truncate语句执行成功后返回结果恒为0。事务兼容性不同:delete语句支持事务回滚(执行后可通过rollback恢复记录);truncate语句不支持事务回滚,执行后记录无法恢复。触发器触发不同:delete语句会触发表上的delete触发器;truncate语句不会触发任何触发器。自增计数器影响不同:delete语句不重置自增字段的计数器(后续插入时自增值延续之前的序列);truncate语句会重置自增字段的计数器(后续插入时自增值从起始值重新开始)。外键约束下的执行差异:delete语句删除父表记录时,若记录无子表关联(或符合外键级联规则)可执行成功;truncate语句清空父表时,只要存在外键约束,永远执行失败(需先解除外键约束)。习题3:更新操作与字符集有什么关系?更新操作与外键约束有什么关系?(1)更新操作与字符集的关系字符集决定了更新操作(insert、update)中字符串的存储、解析与显示,核心关联如下:若插入/修改的字符串包含特殊字符(如中文、特殊符号),需确保字段字符集与字符串字符集一致,否则可能出现乱码(如将gbk编码的中文插入utf8字段)。处理MySQL特殊字符序列(如\'、\n、\t等)时,字符集需支持该类转义规则,否则可能导致转义失败(如部分老旧字符集不支持换行符转义)。更新操作中字符串长度限制与字符集相关(如utf8中一个中文占3字节,gbk中占2字节),若超出字段长度限制,会导致更新失败。(2)更新操作与外键约束的关系外键约束强制父表与子表的数据一致性,直接限制更新操作(insert、update、delete)的执行,核心规则如下:插入操作:原则上需先插入父表数据,再插入子表数据;子表中外键字段值必须是父表对应主键字段的有效值或null(若外键允许null),否则插入失败。修改操作:修改子表外键字段值时,新值必须是父表对应主键的有效值;修改父表主键字段值时,需确保无子女表记录关联该值(或配置级联更新规则),否则修改失败。删除操作:原则上需先删除子表关联数据,再删除父表数据;直接删除父表中被子女表关联的记录时,会因违背外键约束而失败(或配置级联删除规则)。习题4:数据库表中自增型字段的值一定连续吗?不一定连续。自增字段的值是否连续,取决于插入、删除操作的执行情况,核心场景如下:插入操作失败但自增计数器递增:若插入记录时因违背约束(如外键、唯一性约束)导致失败,自增字段的计数器仍会自动加1,后续成功插入的记录会跳过该序号(如course表插入失败后,自增ID从6开始)。手动指定自增字段值:若手动为自增字段插入非连续值(如classes表中手动插入class_no=5),会打破自增序列的连续性。删除记录后插入:删除表中中间位置的记录(如删除class_no=2的记录),后续插入的自增记录会延续之前的计数器(如下次插入为class_no=6),导致序列不连续。习题5:replace语句与insert语句有什么区别?两者均用于向表中添加数据,但核心逻辑(冲突处理)差异显著,具体区别如下:冲突处理逻辑不同:insert语句插入记录时,若新记录的主键或唯一性约束字段值与现有记录冲突,会直接抛出错误(如ERROR1062),插入失败;replace语句插入时,若存在上述冲突,会先删除原有冲突记录,再插入新记录(无冲突时则直接插入,与insert功能一致)。操作本质不同:insert是单纯的“添加”操作;replace是“删除+添加”的组合操作,属于原子操作(要么全成,要么全败)。事务与触发器影响不同:replace语句中的删除行为会触发delete触发器(若存在),而insert语句仅触发insert触发器;replace无需额外引入事务即可保证原子性,insert若需处理冲突则需结合事务与delete语句。自增字段影响不同:replace语句因包含删除操作,若删除记录涉及自增字段,后续插入的自增值会延续计数器(不回退);insert语句失败时自增计数器仍递增,但成功时仅按正常序列赋值。习题6:执行了delete语句后,表结构被删除了吗?使用什么命令可以删除表结构?执行delete语句后,表结构不会被删除。delete语句的作用仅为删除表中的记录,表的结构(字段、类型、索引、约束等)、索引、约束等均保持不变,后续仍可向表中插入新记录。删除表结构的命令是droptable,语法格式为:droptable[ifexists]表名;。该命令会彻底删除表的所有内容(记录、索引)和表结构,删除后无法通过简单操作恢复,需谨慎使用。习题7:已知选修choose表的记录如表4-8所示,完成下列操作。前提说明:choose表字段说明——choose_no(主键,可能自增)、student_no(外键,关联student表)、course_no(外键,关联course表)、score(成绩)、create_time(创建时间)、update_time(更新时间);服务器当前时间使用current_timestamp函数获取。(1)使用SQL语句向选修choose表添加上述记录信息sql

usechoose;

insertintochoose(choose_no,student_no,course_no,score,create_time,update_time)

values

(1,'2024001',2,40,current_timestamp,null),

(2,'2024001',1,50,current_timestamp,null),

(3,'2024002',3,60,current_timestamp,null),

(4,'2024002',2,70,current_timestamp,null),

(5,'2024003',1,80,current_timestamp,null),

(6,'2024004',2,90,current_timestamp,null),

(7,'2024005',3,null,current_timestamp,null),

(8,'2024005',1,null,current_timestamp,null);

说明:若choose_no为自增字段,可省略choose_no字段及对应值,由MySQL自动生成。(2)实现田七(2024005)将课程从Java(course_no=1)调为MySQL(course_no=2),并更新调课时间为当前时间sql

usechoose;

updatechoose

setcourse_no=2,update_time=current_timestamp

wherestudent_no='2024005'andcourse_no=1;

说明:where条件精准定位田七选修Java课程的记录,通过set子句修改课程号并更新时间;若存在多条关联记录,可结合choose_no进一步精准定位。(3)实现田七(2024005)退选C语言(course_no=3)sql

usechoose;

deletefromchoose

wherestudent_no='2024005'andcourse_no=3;说明:where条件精准定位田七选修C语言的记录;删除前需确保该记录无其他外键约束关联(本题无额外约束,可直接删除)。(4)录入最终成绩,最终成绩=(原成绩*70%)+30sql

usechoose;

updatechoose

setscore=score*0.7+30,update_time=current_timestamp

wherescoreisnotnull;--仅更新已有成绩的记录,避免null参与运算

说明:添加wherescoreisnotnull,防止null参与运算(null运算结果仍为null);同时更新update_time字段,记录成绩修

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论