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

下载本文档

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

文档简介

第3章习题答案习题1答案一、MySQL数据类型分类(参考3.1节):数值类型:包含整数类型(tinyint、smallint、mediumint、int、bigint)和小数类型(精确小数decimal、单精度浮点数float、双精度浮点数double);字符串类型:char(n)、varchar(n)、tinytext、text、mediumtext、longtext;日期类型:date(日期)、time(时间)、year(年份)、datetime(日期时间)、timestamp(时间戳);布尔类型:仅含true和false两个取值,大小写不敏感,显示时true转1、false转0;特殊说明:null严格来说是“空值/未知值”常量(非数据类型),但可适配所有数据类型,常被归为一类讨论。二、数据类型选择原则(参考3.1.7节):满足应用需求(取值范围、精度)的前提下,优先选“短”数据类型,减少存储和计算开销;主键优先选整数类型,避免字符串(整数处理开销小,检索效率高,如IP地址可通过函数转整数存储);不允许误差时用精确小数decimal(如财务计算),对精度要求低用float(如经纬度),需高精度大范围用double;存储日期时间优先用日期类型(本质是数值,支持运算),而非字符串类型;尽量避免字段取null,建议设非空约束(notnull),可用0、特殊值或空字符串替代(null会增加索引统计和查询优化难度)。习题2答案char(n)(定长字符串)与varchar(n)(变长字符串)的核心区别(参考3.1.3节):存储方式不同:char(n)固定占用n个字符的存储空间,无论实际存储内容长度;varchar(n)仅占用内容实际长度的存储空间(忽略额外开销);存储空间开销:例如存储单个“中”字,char(255)需占用255个字符空间,varchar(255)仅占用1个字符空间;n的最大值限制:char(n)的n最大值固定为255(与字符集无关);varchar(n)的n最大值与字符集相关(如gbk下最大32767,utf8下最大21845);适用场景:char(n)适合长度固定的字符串(如身份证号、手机号);varchar(n)适合长度不固定的字符串(如姓名、地址)。习题3答案一、对null的理解(参考3.1.6节):null表示“空值”“未知值”“值不确定”或“值不存在”,大小写不敏感。它不是数据类型,而是一种常量/约束,但可适配所有数据类型(即任何类型的字段都可取值为null)。核心特点是“不确定性”——任何数据与null进行算术、比较或逻辑运算,结果均为null。二、null的使用注意事项:null与null比较无意义:null=null和null!=null的结果均为null,需用isnull(判断是否为null)或isnotnull(判断是否非null)运算符;避免字段默认取null:含null的列难以查询优化,会增加索引统计复杂度,建议用非空约束(notnull)+替代值(0、空字符串等);注意约束兼容性:默认值约束字段可取值为null(录入null时会覆盖默认值),需明确业务是否允许字段为null;计算场景规避null:涉及统计(如sum、avg)或算术运算时,需先用ifnull()函数将null转换为有效数值(如ifnull(score,0)),避免结果异常。习题4答案一、选课系统5个表的表结构与父子关系(参考3.2、3.6节及温馨提示1):1.核心表结构(关键字段+约束):classes(班级表):主键class_no(自增整数),字段含className等,非空/唯一性约束;student(学生表):主键student_no(如11位字符),外键class_no(参照classes.class_no),字段含student_name(非空)等;teacher(教师表):主键teacher_no,字段含teacher_name(非空)、subject等;course(课程表):主键course_no,外键teacher_no(参照teacher.teacher_no),字段含course_name(唯一)、capacity(默认值等);choose(选课表):复合主键(student_no,course_no),外键student_no(参照student.student_no)、外键course_no(参照course.course_no),字段含score(无符号小数/整数)等。2.父子关系(外键参照决定):classes(父表)→student(子表):一个班级包含多个学生,删除/更新班级需考虑级联规则;teacher(父表)→course(子表):一个教师可授多门课,课程依赖教师存在;student(父表)→choose(子表)、course(父表)→choose(子表):选课记录依赖学生和课程存在,是多对多关系的中间表。二、可解决的问题域:基础信息管理:查询/维护学生、教师、班级、课程的基础信息(如某班级所有学生、某教师授课程);选课核心业务:学生选课(新增choose记录)、退课(删除choose记录)、查询已选课程;成绩管理:录入/修改学生课程成绩、查询成绩(如某学生所有成绩、某课程平均分);统计分析:统计班级选课率、课程满员情况、教师授课数量等;权限与约束校验:确保选课合法性(如学生只能选存在的课程)、成绩范围有效性(通过约束/触发器)。习题5答案一、对索引的理解(参考3.6.1节):索引是依附于表字段的“数据目录”,本质是字段值的拷贝,经排序后以特定数据结构(如BTREE)存储在磁盘中(MyISAM存于MYI文件,InnoDB存于表空间文件)。其核心作用是避免全表扫描,快速定位数据(类比《现代汉语词典》的音节表/部首检字表)。关键特性:①一个表可创建多个索引(多个目录);②支持单字段、复合字段(多关键字)、前缀(字段部分值)索引;③索引由MySQL自动维护(insert/delete/update时同步更新);④InnoDB表必有聚簇索引(主键为核心,表记录按聚簇索引排序)。二、索引并非越多越好(参考3.6.1节):索引是“双刃剑”,过多索引会带来负面影响:增加存储开销:索引是冗余数据,需额外占用磁盘空间;降低更新效率:对表执行insert/delete/update时,需同步修改所有相关索引(维持索引与字段值一致性),索引越多,IO操作越多,更新速度越慢;影响服务器性能:频繁更新的表(如高频选课记录),过多索引会导致硬盘IO激增,可能引发服务器性能下降甚至宕机。合理原则:在“提高检索效率”与“降低更新成本”间平衡,仅对核心检索字段(如where、join、groupby用到的字段)创建索引。习题6答案索引关键字选取原则(参考3.6.2节):离散度优先原则:字段值越离散(Cardinality值越大)越适合,如学号、身份证号(唯一值)适合,性别(仅男女)不适合;存储空间最小原则:优先选占用空间小的字段(如整数优于字符串),减少索引存储和检索开销;固定长度优先原则:优先选固定长度字段(如char(n)优于text),提升索引管理效率;业务高频原则:where子句、groupby子句、orderby子句及表连接字段(如外键)优先创建索引;更新规避原则:更新频繁的字段(如实时分数排名字段)不适合创建索引,避免频繁维护索引;最左前缀原则:复合索引等效于其所有前缀组合(如(a,b,c)等效于(a)、(a,b)、(a,b,c)),避免创建重复索引;前缀索引优先原则:对长字符串字段(如姓名、地址),可仅对前缀部分(如姓、地址前6位)创建索引,节省空间并提升效率。习题7答案一、常见索引种类(参考3.6.1、3.6.4节):按存储结构分:聚簇索引(InnoDB核心,表记录与索引同文件,按主键排序)、非聚簇索引(辅助索引,如MyISAM主索引、InnoDB辅助索引);按功能分:主索引(主键关联,自动创建,唯一且非空)、唯一性索引(由唯一约束自动创建,允许null但值唯一)、普通索引(手动创建,无唯一性限制);按关键字类型分:单字段索引(单个字段作为关键字)、复合索引(多个字段组合作为关键字)、前缀索引(字段前缀作为关键字)、全文索引(针对长文本检索)。二、全文索引定义与特性(参考3.6.4节):全文索引是专为长字符串(如文章内容、备注)设计的索引类型,核心作用是大幅提升模糊检索(如关键词匹配)效率,支持自然语言检索。关键说明:适用字段:仅支持char、varchar、text类型字段;存储引擎支持:MyISAM从3.23.23版本支持,InnoDB从5.6版本支持;中文支持:MySQL5.7.6+内置ngram中文分词解析器,需搭配withparserngram创建,才能实现中文全文检索;限制:不支持前缀索引,索引维护成本高于普通索引,适合检索频率远高于更新频率的场景(如新闻、文档库)。习题8答案MySQL中索引与约束的核心关系(参考3.6.3节):核心关联:主键约束、唯一性约束、外键约束均基于索引实现,索引是约束的“物理支撑”,约束是索引的“逻辑意义”;本质区别:①约束是逻辑层面的规则,用于保证数据完整性(如主键唯一、外键参照有

温馨提示

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

评论

0/150

提交评论