无论是运维、开发、测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库、学MySQL,到底是要学习它的哪些东西呢?

1、如何快速掌握MySQL?

​培养兴趣

兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL也不例外。

夯实基础

计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深 入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于MySQL的学习来说, SQL语句是其中最为基础的部分,很多操作都是通过SQL语句来实现的。所以在学习的过程中, 读者要多编写SQL语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。

及时学习新知识

正确、有效地利用搜索引擎,可以搜索到很多关于MySQL的相关知识。同时,参考别 人解决问题的思路,也可以吸取别人的经验,及时获取最新的技术资料。

多实践操作

数据库系统具有极强的操作性,需要多动手上机操作。在实际操作的过程中才能发现问题, 并思考解决问题的方法和思路,只有这样才能提高实战的操作能力。

2、如何选择服务器的类型?

MySQL服务器配置窗口中各个参数的含义如下:

【Server Configuration Type】该选项用于设置服务器的类型,单击该选项右侧的向下按钮, 即可看到包括3个选项。

3个选项的具体含义如下:

Development Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行 着多个桌面应用程序。将MySQL服务器配置成使用最少的系统资源。

Server Machine (服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起 运行,例如FTP、email和web服务器。MySQL服务器配置成使用适当比例的系统资源。

DedicatedMySQL Server Machine (专用 MySQL 服务器):该选项代表只运行MySQL服务的服务器。假定运行没有运行其它应用程序。MySQL服务器配置成使用所有可用系统资源。作为初学者,建议选择【DevelopmentMachine】(开发者机器)选项,这样占用系统的资源 比较少。

3、如何选择存储引擎?

不同存储引擎都有各自的特点,以适应不同的需求,如下表所示。为了做出选择:

首先需 要考虑每一个存储引擎提供了哪些不同的功能。如果要提供提交,回滚和崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控 制,InnoDB是个很好的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较 高的处理效率;如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。如果只有INSERT和SELECT操作,可以选择Archive引擎,Archive存储引擎支持高并发的插 入操作,但是本身并不是事务安全的。Archive存储引擎非常适合存储归档数据,如记录日志信 息可以使用Archive引擎。

使用哪一种引擎要根据需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求。

使用合适的存储引擎,将会提高整个数据库的性能。

4、如何查看默认存储引擎?

使用SHOW ENGINES语句查看系统中所有的存储引擎,其中包括默认的存储引擎。可以看出来当前数据库系统中有五种存储引擎,默认是MyISAM。还可以使用一种直接的方法查看默认存储引擎。执行结果直接显示了当前默认的存储引擎为MyISAM。

5、表删除操作须谨慎

表删除操作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有 任何的确认信息提示,因此执行删除操时,应当慎重。在删除表前,最好对表中的数据进行备份, 这样当操作失误时,可以对数据进行恢复,以免造成无法挽回的后果。同样的,在使用ALTER TABLE进行表的基本修改操作时,在执行操作过程之前,也应该 确保对数据进行完整的备份,因为数据库的改变是无法撤销的,如果添加了一个不需要的字段, 可以将其删除;相同的,如果删除了一个需要的列,该列下面的所有数据都将会丢失。

6、每个表中都要有一个主键吗?

并不是每一个表中都需要主键,一般的,如果多个表之间进行连接操作时,需要用到主键。 因此并不需要为每个表建立主键,而且有些情况最好不使用主键。

7、每个表都可以任意

选择存储引擎吗?

外键约束(FOREIGN KEY)不能跨引擎使用。MySQL支持多种存储引擎,每一个表都可 以指定一个不同的存储引擎,但是要注意:外键约束是用来保证数据的参照完整性,如果表之间 需要关联外键,却指定了不同的存储引擎,这些表之间是不能创建外键约束的。所以说,存储引 擎的选择也不完全是随意的。

8、带AUTO_INCREMENT约束的字段值是从1开始的吗?

默认的,在MySQL中,AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的 值,这样新插入的记录的自增字段值从初始值开始递增,如在tb_emp8中插入第一条记录,同时 指定id值为5,则以后插入的记录的id值就会从6开始往上增加。添加唯一性的主键约束时, 往往需要设置字段自动增加属性。

9、TIMESTAMP与DATATIME两者的区别

TIMESTAMP与DATETIME除了存储字节和支持的范围不同外,还有一个最大的区别就是: DATETIME在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关; 而TIMESTAMP值的存储是以UTC(世界标准时间)格式保存的,存储时对当前时区进行转换, 检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。

10、选择数据类型的方法和技巧是什么?

MySQL提供了大量的数据类型,为了优化存储,提高数据库性能,在任何情况下均应使用 最精确的类型。即在所有可以表示该列值的类型中,该类型使用的存储最少。

整数和浮点数

如果不需要小数部分,则使用整数来保存数据;如果需要表示小数部分,则使用浮点数类 型。对于浮点数据列,存入的数值会对该列定义的小数位进行四舍五入。例如如果列的值的范 围为1?99999,若使用整数,则MEDIUMINT UNSIGNED是最好的类型;若需要存储小数,则 使用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 和 SET

ENUM只能取单值,它的数据列表是一个枚举集合。它的合法取值列表最多允许有65 535 个成员。因此,在需要从多个值中选取一个时,可以使用ENUM。比如:性别字段适合定义为 ENUM类型,每次只能从’男’或’女’中取一个值。SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值。 在需要取多个值的时候,适合使用SET类型,比如:要存储一个人兴趣爱好,最好使用SET类型。ENUM和SET的值是以字符串形式出现的,但在内部,MySQL以数值的形式存储它们。

BLOB 和 TEXT

BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息。BLOB主 要存储图片、音频信息等,而TEXT只能存储纯文本文件。应分清两者的用途。

varchar保存带格式的数据_软件测试必备之数据库知识(一)相关推荐

  1. 数据库中的datatime的长度怎么设定_软件测试必备之数据库知识(一)

    无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢? 1.如何快速掌握MySQL? ​培养兴趣 兴趣是最好的老师,不论学 ...

  2. oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析  人工智能+Python | 人工智能+物联网 进入数据时代,大数据技术成为互联网发 ...

  3. 怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...

    免费学习推荐: 一.索引的概念 1.索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) . 2.使用索引后可以不用 ...

  4. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc

    如何向MySQL数据库的表中录入数据 当建好了数据库及表时,首先想到的就是向数据库的表中输入数据,这就涉及到如何向数据库录入数据,下面我们就来探讨一下这个问题. 1.常用的方法是使用insert语句( ...

  5. c++怎么可以在二进制文件中读取带string的数据_文件处理 | csv文件读写

    欢迎关注公众号 学习资料不会少 文件处理 在我们做自动化测试的过程中,常常会将数据文件存放在csv或者Excel文件里边.这一章节内容将给大家介绍,如何使用python进行csv和Excel文件的处理 ...

  6. unity导入osgb格式的数据_游戏开发声音格式的选择

    [声明:本文为音乐人胡正伟原创文章,新浪V博@艺能帮,转载请注明出处] 音频格式是指要在计算机内播放或是处理音频文件,是对声音文件进行数.模转换的过程.在游戏开发过程中,常见的音频格式有:无损格式WA ...

  7. 接口返回xml格式的数据_接口测试之Jmeter串联xml数据格式请求

    点击上方蓝色字体,关注我们 要求 1.测试支付及支付检测两个接口 2.支付及检测的接口请求为xml格式 3.支付请求数据要多组不一样的数据 4.每个接口请求有些参数要求全局唯一 5.模拟正常场景,支付 ...

  8. 如何产生高斯带限白噪声数据_车间噪声对我们的身体产生巨大影响,我们该如何解决?...

    在许多加工企业的机加车间中,机床噪声往往在80分贝以上,工人无法正常交流,说话只能靠" 吼". 也许你认为自己已经习惯了噪音,觉得日复一日身处其中,似乎它对身体没有多大伤害.但事实 ...

  9. mysql schema 保存数据_如何在mysql数据库中保存apache spark schema输出

    任何人都可以告诉我,如果有任何方式在apache的火花存储在mysql数据库的JavaRDD?我从2个CSV文件中获取输入,然后在对其内容进行连接操作之后,我需要将输出(输出JavaRDD)保存在my ...

最新文章

  1. 【HM】第3课:JavaScript高级
  2. C#Project不生成.vhost.exe和.pdb文件的方法
  3. Netscape Mozilla源代码指南
  4. bzoj3171: [Tjoi2013]循环格(费用流)
  5. Emotion英语学习
  6. 音视频中时间戳增量计算
  7. C++的cin和cout取消同步
  8. C#+Sql数据库备份
  9. 算法设计与分析——动态规划——石子合并问题
  10. numpy中dot, multiply, *区别
  11. 弹出框(bootStrap模态框、bootbox、dbailog)
  12. 毕业设计-基于SpringBoot体育运动场馆管理系统+开题报告-任务书等
  13. Mac下使用Parallel Desktop进行虚拟机的网络配置
  14. html gif 蒙层,使用蒙层实现启动图动画效果
  15. 三生诀游戏服务器维护,《三生诀》7月26日更新公告
  16. walking机器人入门教程-深度学习-使用yolov5进行物体识别
  17. Python入门之字典
  18. 【Android多媒体(重采样与混频)】从playback流程分析AudioResampler,AudioMixer
  19. location常见方法
  20. Bootstrap—后台框架Ace

热门文章

  1. 实验六 html网页设计,网页设计.html · 谢泽华/面向对象与软件工程实验二:网页模仿 - Gitee.com...
  2. linux 子进程exit6,Linux内核之do_exit
  3. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
  4. jq控制div是否展示_选择控制台_调度台之前,这几点你应该要看!
  5. 刨根问底:C++中宽字符类型(wchar_t)的编码一定是Unicode?长度一定是16位?
  6. 8g ubuntu 树莓派4b_树莓派4B(4G版本)安装Ubuntu 19.10
  7. python 爬取贝壳网小区名称_利用python爬取贝壳网租房信息
  8. fio模拟mysql写入速度_IO压力测试工具 -- FIO 使用说明
  9. mysql backdoor_Mysql UDF BackDoor
  10. mycat mysql 主从切换_Mycat读写分离与主从切换