2021数据库考试题及答案 mysql题目和详细答案(13)


当一个DECIMAL或NUMERIC列被赋给了其大小超过指定(或缺省的)precision和scale隐含的范围的值,Mysql存储表示那个范围的相应的端点值 。
35.CHAR 和VARCHAR 的区别?区别一,定长和变长char 表示定长,长度固定,varchar表示变长,即长度可变 。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长 。因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率 。varchar则刚好相反,以时间换空间 。区别之二,存储的容量不同对 char 来说,最多能存放的字符个数 255,和编码无关 。而 varchar 呢,最多能存放 65532 个字符 。varchar的最大有效长度由最大行大小和使用的字符集确定 。整体最大长度是 65,532字节 。36.HAVNG 子句 和 WHERE的异同点?一、相同点:二者的相同点是在功能上来说的,HAVING子句和WHERE子句都可以用来设定限制条件以使查询结果满足一定的条件限制 。
二、区别如下:WHERE是先分组再筛选记录,WHERE在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选 。在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用 。而HAVING子句中可以 。HAVING 子句是聚组函数唯一出现的地方 。在查询过程中聚合语句(SUM,MIN,MAX,AVG,COUNT)要比HAVING子句优先执行 。而WHERE子句在查询过程中执行优先级高于聚合语句 。HAVING 子句中的每一个元素必须出现在SELECT列表中 。37.drop,delete与truncate的区别?drop直接删掉表 truncate删除表中数据,再插入时自增长id又从1开始 delete删除表中数据,可以加where字句 。
delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作 。truncate TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的 。并且在删除的过程中不会激活与表有关的删除触发器 。执行速度快 。表和索引所占空间 。当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间 。drop语句将表所占用的空间全释放掉 。应用范围 。truncate只能对TABLE;delete可以是table和viewtruncate和delete只删除数据,而drop则删除整个表(结构和数据) 。truncate与不带where的delete :只删除数据,而不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid 。delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效 。如果有相应的 trigger,执行的时候将被触发 。truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚在没有备份情况下,谨慎使用 drop 与 truncate 。要删除部分数据行采用delete且注意结合where来约束影响范围 。回滚段要足够大 。要删除表用drop;若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现 。如果和事务有关,或老师想触发trigger,还是用delete 。truncate table 表名 速度快,而且效率高,因为: truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行 。但 truncate TABLE 比 delete速度快,且使用的系统和事务日志资源少 。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项 。truncate TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放 。truncate TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变 。新行标识所用的计数值重置为该列的种子 。如果想保留标识计数值,请改用 delete 。如果要删除表定义及其数据,请使用 drop TABLE 语句 。对于由 FOREIGN KEY 约束引用的表,不能使用 truncate TABLE,而应使用不带 WHERE 子句的 delete语句 。由于 truncate TABLE 不记录在日志中,所以它不能激活触发器 。38.MyISAM和InnoDB区别MyISAM是MySQL的默认数据库引擎(5.5版之前) 。虽然性能极佳,?且提供了?量的特性,包括全?索引、压缩、空间函数等,但MyISAM不?持事务和?级锁,?且最?的缺陷就是崩溃后?法安全恢复 。不过,5.5版本之后,MySQL引?了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB 。?多数时候我们使?的都是 InnoDB 存储引擎,但是在某些情况下使? MyISAM 也是合适的?如读密集的情况下 。(如果你不介意 MyISAM 崩溃恢复问题的话) 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: