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


选择原则,根据选定的存储引擎,确定如何选择合适的数据类型,下面的选择方法按存储引擎分类 :
MyISAM 数据存储引擎和数据列MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列 。
MEMORY存储引擎和数据列MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系 。两者都是作为CHAR类型处理的 。InnoDB 存储引擎和数据列建议使用 VARCHAR类型对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行 都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使 用可变长度VARCHAR列简单 。因而,主要的性能因 是数据行使用的存储总量 。由于 CHAR 平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和年盘I/O是比较好的 。6.聊聊Mysql字符集!mysql服务器可以支持多种字符集(可以用show character set命令查看所有mysql支持的字符集),在同一台服务器、同一个数据库、甚至同一个表的不同字段都可以指定使用不同的字符集,相比oracle等其他数据库管理系统,在同一个数据库只能使用相同的字符集,mysql明显存在更大的灵活性 。
mysql的字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念 。字符集是用来定义mysql存储字符串的方式,校对规则则是定义了比较字符串的方式 。字符集和校对规则是一对多的关系, MySQL支持30多种字符集的70多种校对规则 。
每个字符集至少对应一个校对规则 。可以用SHOW COLLATION LIKE ‘utf8%’;命令查看相关字符集的校对规则
7.如何选择字符集?对数据库来说,字符集更加重要,因为数据库存储的数据大部分都是各种文字,字符集对数据库的存储,处理性能,以及日后系统的移植,推广都会有影响 。mysql5.6目前支持几十种字符集,包括ucs2,utf16,utf16le,utf32,utf8和utf8mb4等Unicode字符集 。根据应用的需求,考虑以下几方面的因素 。
满足应用支持语言的需求,如果应用要处理各种各样的文字,或者将发布到使用不同语言的国家或地区,就应该选择Unicode字符集 。对Mysql来说,目前就是utf8,如果要存储emoji表情需使用utf8mb4 。如果应用中涉及已有数据的导入,就要充分考虑数据库字符集对已有数据的兼容性 。假如已有数据是gbk文字,如果选择gb2312-80为数据库字符集,就很有可能出现某些文字无法正确导入的问题如果数据库只支持一般中文,数据量很大,性能要求也很高,那就应该选择双字节长编码的中文字符集,比如gbk 。因为,相对于utf8而言,gbk比较“小”,每个汉字只占2个字节,而utf8汉字编码需要3个字节,这样可以减少磁盘I/O,数据库Cache以及网络传输的时间,从而提高性能 。相反,如果应用主要处理英文字符,仅有少量汉字数据,那么选择utf8更好,因为gbk,ucs2,utf16的西文字符编码都是2个字节,会造成很多不必要的开销 。如果数据库需要做大量的字符运算,如比较,排序等,那么选择定长字符集可能更好,因为定长字符集的处理速度要比变长字符集的处理速度快 。如果所有客户端程序都支持相同的字符集,则应该优先选择该字符集作为数据库字符集,这样可以避免因字符集转换带来的性能开销和数据损失 。建议在能够完全满足应用的前提下,尽量使用小的字为集 。因为更小的字为集意味着能够节省空间然 减少网络传输字节数,同时由于存储空间的较小间接的提高了系统的性能 。
8.如何查询最后一行记录?select*fromlinksorderbyiddesclimit1;9.sql注入问题?SQL注入攻击(SQL Injection),简称为注入攻击,SQL注入,被广泛用于非法获取网站控制权 。这是在应用程序的数据库层中发生的安全漏洞 。在设计程序中,忽略了对输入字符串中包含的SQL命令的检查,并且将数据库误认为是要运行的常规SQL命令,这导致数据库受到攻击,从而可能导致盗窃,修改和删除数据,并进一步导致网站嵌入恶意代码,植入后门程序的危害等 。


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

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