无论是运维、开发、测试,还是架构师,数据库技术都是必备的加薪神器。学习什么?01如何快速掌握MySQL?培养兴趣是最好的老师。无论学习什么知识,兴趣都能大大提高学习效率。当然,学习MySQL5.6也不例外。巩固基础计算机领域的技术非常重视基础,这在刚开始学习时可能没有意识到。随着技术应用的深入,只有扎实的基础,才能在技术的道路上走得更快、更远。对于MySQL的学习,SQL语句是最基础的部分,很多操作都是通过SQL语句实现的。因此,读者在学习的过程中,要多写SQL语句,用不同的实现语句来完成同一个功能,深刻体会其中的差异。及时学习新知识,正确有效地使用搜索引擎,可以找到很多关于MySQL5.6的相关知识。同时,通过参考别人解决问题的思路,也可以借鉴别人的经验,及时获取最新的技术信息。多实践操作数据库系统可操作性极强,需要多次动手操作。只有在实际操作过程中才能发现问题,才能思考解决问题的方法和思路。只有这样,才能提高实战的操作能力。02如何选择服务器类型?MySQL服务器配置窗口中各参数的含义如下。【ServerConfigurationType】该选项用于设置服务器的类型。单击选项右侧的向下按钮可以看到包含3个选项。三个选项的具体含义如下:DevelopmentMachine(开发机器):该选项代表典型的个人桌面工作站。假设机器上运行着多个桌面应用程序。配置MySQL服务器以使用最少的系统资源。ServerMachine(服务器):此选项代表服务器,MySQL服务器可以与其他应用程序一起运行,例如FTP、电子邮件和网络服务器。MySQL服务器配置为使用适当比例的系统资源。DedicatedMySQLServerMachine(专用的MySQL服务器):这个选项代表一台只运行MySQL服务的服务器。假设没有其他应用程序正在运行。MySQL服务器配置为使用所有可用的系统资源。作为初学者,建议选择[DevelopmentMachine](开发者机器)选项,占用系统资源少。03如何选择存储引擎不同的存储引擎各有特点,可以满足不同的需求,如下表所示。为了做出选择:首先你需要考虑每个存储引擎提供了哪些不同的功能。如果你想提供提交、回滚和崩溃恢复能力的事务安全(ACID兼容)能力,并且需要并发控制,InnoDB是一个不错的选择。如果数据表主要用于插入和查询记录,MyISAM引擎可以提供更高的处理效率;如果数据只是临时存储,数据量不大,对数据安全性要求不高,可以选择将数据保存在内存中MySQL中的Memory引擎就是使用这个引擎作为临时表来存储中间结果的查询。如果只有INSERT和SELECT操作,可以选择Archive引擎。Archive存储引擎支持高度并发的插入操作,但它不是事务安全的。Archive存储引擎非常适合存储归档数据,比如记录日志信息,可以使用Archive引擎。使用哪种引擎要根据需要灵活选择。一个数据库中的多个表可以使用不同的引擎来满足各种性能和实际需求。使用合适的存储引擎会提高整个数据库的性能。04如何查看默认存储引擎?使用SHOWENGINES语句查看系统中所有的存储引擎,包括默认的存储引擎。可以看出当前数据库系统中有五种存储引擎,默认的是MyISAM。还有一种直接查看默认存储引擎的方法。执行结果直接显示当前默认的存储引擎是MyISAM。05删除表时要小心删除表操作会将表的定义和表中的数据一起删除,而MySQL在执行删除操作时不会提示任何确认信息,所以执行删除操作时要谨慎.在删除表之前,最好备份表中的数据,这样当出现操作错误时,可以恢复数据,避免造成不可挽回的后果。同样,在使用ALTERTABLE进行基本的表修改操作时,也应确保在执行操作过程之前数据已完全备份,因为数据库更改无法撤消。如果添加了不需要的字段,可以将其删除;同样,如果您删除了一个必填列,该列下的所有数据都将丢失。06每个表都有主键吗?并非每个表都需要主键。一般多张表连接时,需要主键。因此,没有必要为每个表都建立主键,有些情况下最好不要使用主键。07每个表可以任意选择存储引擎吗?外键约束(FOREIGNKEY)不能跨引擎使用。MySQL支持多种存储引擎。每个表可以指定不同的存储引擎,但需要注意的是使用外键约束来保证数据的引用完整性。如果表之间需要关联外键,则指定不同的存储引擎。存储引擎,这些表之间不能创建外键约束。因此,存储引擎的选择并不是完全随意的。08AUTO_INCREMENT的字段值是否从1开始?默认情况下,在MySQL中,AUTO_INCREMENT的初始值为1,每有一条新记录,字段值自动增加1。在设置自增属性(AUTO_INCREMENT)时,还可以指定第一条插入记录的自增字段的值,使得新插入记录的自增字段的值从初始值开始增加,比如在tb_emp8条记录中插入***,指定id值为5,那么后面插入的记录id值将从6增加。在添加唯一主键约束时,往往需要设置字段auto-增量属性。09TIMESTAMP和DATATIME的区别除了存储字节和支持的范围不同之外,TIMESTAMP和DATETIME还有一个很大的区别:DATETIME在存储日期数据时,是按照实际输入的格式存储的,即输入什么就输入什么store与时区无关;而TIMESTAMP值的存储是以UTC(世界标准时间)格式保存的,存储时转换当前时区,检索时再转换回当前时区。即查询时,显示的时间值根据当前时区不同而不同。10选择数据类型的方法和技巧MySQL提供了大量的数据类型。为了优化存储和提高数据库性能,在任何情况下都应该使用最准确的类型。也就是说,在所有可以表示该列值的类型中,该类型使用的存储量最少。整数和浮点数如果不需要小数部分则使用整数来存储数据;如果他们需要表示小数部分,请使用浮点数类型。对于浮点数据列,存储的值四舍五入到为该列定义的小数位数。比如列的取值范围是1到99999,如果使用整数,MEDIUMINTUNSIGNED是最好的类型;如果需要存储小数,则使用FLOAT类型。浮点类型包括FLOAT和DOUBLE类型。DOUBLE类型的精度高于FLOAT类型。因此,如果需要更高的存储精度,应该选择DOUBLE类型。浮点数和定点数浮点数FLOAT和DOUBLE相对于定点数DECIMAL的优点是:在一定长度的情况下,浮点数可以表示更大的数据范围。但是由于浮点数容易出错,所以在精度要求比较高的情况下,建议使用DECIMAL进行存储。DECIMAL在MySQL中以字符串形式存储,用于定义对精度要求较高的数据,如货币。在数据迁移中,float(M,D)是一个非标准的SQL定义,可能会导致数据库迁移出现问题,所以不要这样使用。另外两个浮点数在进行减法和比较运算时也容易出问题,所以在进行计算时一定要小心。对于数值比较,最好使用DECIMAL类型。日期和时间类型MySQL有许多数据类型用于不同类型的日期和时间,例如YEAR和TIME。如果只需要记录年份,可以使用YEAR类型;如果只需要记录时间,只需要使用TIME类型即可。如果需要同时记录日期和时间,可以使用TIMESTAMP或者DATETIME类型。由于TIMESTAMP列的取值范围小于DATETIME,所以存储范围较大的日期最好使用DATETIME。TIMESTAMP还有一个DATETIME没有的属性。默认情况下,当插入记录但未指定列值TIMESTAMP时,MySQL会将TIMESTAMP列设置为当前时间。因此,当需要插入记录和插入当前时间时,使用TIMESTAMP比较方便,而且TIMESTAMP在空间上比DATETIME更高效。CHAR和VARCHAR的特点及选择CHAR和VARCHAR的区别:CHAR是定长字符,VARCHAR是变长字符;CHAR会自动删除插入数据的尾随空格,而VARCHAR不会删除尾随空格。CHAR是定长的,所以处理速度比VARCHAR快,但缺点是浪费存储空间。因此,如果存储量不大,但要求速度,可以使用CHAR类型,反之,可以使用VARCHAR类型。存储引擎对CHAR和VARCHAR选择的影响:对于MyISAM存储引擎:***使用定长数据列,而不是变长数据列。这使得整个表静态化,使数据检索更快,以空间换取时间。对于InnoDB存储引擎:使用变长数据列,因为InnoDB数据表的存储格式不区分定长和变长,所以使用CHAR不一定比使用VARCHAR好,但是因为VARCHAR是按照实际长度,更节省空间,因此对磁盘I/O总量和数据存储量更好。ENUM和SETENUM只能取单值,其数据列表为枚举集。其合法值列表最多允许65535个成员。因此,当您需要从多个值中选择一个时,您可以使用ENUM。例如:gender字段适合定义为ENUM类型,每次只能从'male'或'female'中取一个值。SET可以取多个值。其合法值列表最多允许64个成员。空字符串也是有效的SET值。当需要取多个值时,使用SET类型比较合适,比如:存储一个人的爱好,最好使用SET类型。ENUM和SET的值以字符串形式出现,但在内部,MySQL将它们存储为数字。BLOB和TEXTBLOB是二进制字符串,TEXT是非二进制字符串,两者都可以存储大容量的信息。BLOB主要存放图片、音频信息等,而TEXT只能存放纯文本文件。应区分两者的目的。带你了解10个MySQL数据库技巧(二)
