技术的王国太过迷人,我刚从事IT就被各种技术所引诱迷惑,什么都想学。我还算言而有信的那一类人,还好有一丁点毅力,于是各种东西都沾染了一点。但是这种遍地开花的情况实在和我的智商不匹配。我没有那么多的精力去学那么多的东西。慢慢的要学会暂时放弃一些技术,先深化学习自己工作中要用到的东西。比如mysql等。对于自己特别喜欢的东西,比如linux,因为太过高深和复杂。我又不想放弃,那么就每天分给linux一个小时的时间,熟悉下命令,徐徐渐进。等我赖以生存的各种技能比较完善后,我想可以抽出大量的时间去研究linux了。
我是一边看书一边敲栗子的,书名是《MySQL核心技术与最佳实践》。一边学习,看到有用的东西就随手记下来,因此笔记一定会显得有些凌乱。有些知识点以前我就已经掌握了,可能我就不会往上面写了。这仅仅是一篇自我学习的笔记而已,所以你看到这里就可以止步了,我不想浪费你的学习时间。
InnoDB引擎与MyISAM引擎
mysql是关系型数据库。其中的存储引擎可以show engines来查看。我的版本是5.6.26的,查看版本用select version() 来查看。5.6.26的mysql有9种存储引擎。其中最常见最老生常谈的也就是MyISAM 与InnoDB。如果业务上是非事物(transcation)的那么这两种存储引擎都差不多,在性能上没什么差别。如果业务中需要大多数的select查询,那么可以用MyISAM存储引擎。如果是需要事物,则需要用回InnoDB存储。
MySQL的备份
备份的时候为了避免数据不一致的情况,再数据库备份期间,不允许对数据库进行写操作。
可以用 flush tables with read lock;
现将内存中的表数据扫描恢复到表里面。然后锁定表。同事给予读权限。也就是说在数据库备份的时候,还是有读权限的。
等数据库的备份操作完成之后,然后对数据库解锁。tables unlock;
MySQL数据类型
书本上这个数据类型结构图画的挺好的,到网上搜了一下,都花的不好看。于是还是自己画一个吧,用不了多长时间。
麻蛋,我的画图工具坏了,我就总结个知识,何苦呢。
下面还是文字吧,文字来的快,省力。
小数类型分为精确小数类型和浮点小数类型。
小数类型包括decimal精确类型。
浮点小数,包括单精度和双精度。(这个我也不知道是啥意思,有兴趣的百度之吧,比较常用的是decimal)。'
decimal(length, precision) 。lengh表示这个数总共有多长,precision表示小数点后有多长。
MySQL的字符串类型
MySQL主要支持六种字符串类型,char , varchar, tinyintm, text, mediumtext, longtext.
在字符串的类型上面我以前认识不清。犯过许多错误。看过书,然后实验后,就明白了许多。
以下内容直接引用《MySQL 核心技术与最佳实践》第三章节。
char(n) 是定长字符串类型, 表示占用n个字符(注意不是字节)的存储空间,n的最大值为255.例如,对于中文简体字符集gbk编码来说,char(255)表示可以存储255个汉字,而每个汉字占用两个字节的存储空间。对于一个utf8字符集的字符串而言,char(255)表示可以存储255个汉字,而每个汉字占用3个字节的存储空间。
varchar(n)为变长字符串类型,这就意味着此类字符串占用的存储空间就是字符串自身占用的存储空间,与n无关。这与char(n)不同,这与char(n)不同。例如对于中文简体字符集gbk的字符串而言,varchar(255)表示可以存储255个汉字。而每个汉字占用两个字节的存储空间。假若这个字符串没有那么多的汉字,例如仅仅包括一个“中”字,那么varchar(255)仅仅占用一个字符(2个字节)的存储空间,如果不考虑其他开销。而char(255) 必须占用255个字符长度的存储空间,哪怕里面只存储一个汉字。
各种字符类型占用的存储空间:
MySQL的日期类型
MySQL主要支持5中日期类型。date, time,year,datetime,timestamp。
date类型。格式支持年月日。YYYY—MM—DD;
time类型。时分秒。 HH:ii:ss。
datetime 是date与time的结合体。也就是年月日。时分秒了。
timestamp 和datetime差不多。
可是学习上不能讲究差不多。我们还是来看下timestamp与datetime的区别吧。
表示的取值范围不同,datetime的取值范围远远大于timestamp的取值范围。timestamp到2037年就玩完了。
如果timestamp不赋值,那么该字段值的值实际上是mysql服务器当前的日期和时间。
对同一个timestamp类型的日期或者时间。不同的失去显示的结果不同。使用MySQL命令show varialbes like "time_zone" 可以会显示如下的信息。
这个SYSTEM就表示用的是系统的时间。
当对包含timestamp数据的记录进行修改是,timestamp数据将自动更新为mysql服务器当前的日期和时间。
MySQL二进制类型
我应该不会在MySQL数据库存二进制的数据类型,至少目前不会涉及。只了解一下mysql可以存二进制数据,我想就够了。以后有需要再回来研究。
一点感悟:
(1)在符合应用要求(取值范围 精度)的情况下,尽量使用短的的数据类型。
(2) 数据类型越简单越好。
(3)尽量采用精确的小数类型。
(4)尽量用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
(5) 尽量避免null字段,建议将字段指定为not null 约束。这是由于,在mysql中含有空值的列很难进行查询优化,null值会是索引的统计信息以及比较优化运算变得更加复杂。推荐使用0,一个特殊的值或者一个空字符串代替null值。
本人博客所有文章,均为原创。部分文章中或引用相关资料,但均已著明来源出处。可随意转载、分享,但需加本文链接,以及版权说明。
以上就是Mysql学习笔记(一)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

ACID属性包括原子性、一致性、隔离性和持久性,是数据库设计的基石。1.原子性确保事务要么完全成功,要么完全失败。2.一致性保证数据库在事务前后保持一致状态。3.隔离性确保事务之间互不干扰。4.持久性确保事务提交后数据永久保存。

MySQL既是数据库管理系统(DBMS),也与编程语言紧密相关。1)作为DBMS,MySQL用于存储、组织和检索数据,优化索引可提高查询性能。2)通过SQL与编程语言结合,嵌入在如Python中,使用ORM工具如SQLAlchemy可简化操作。3)性能优化包括索引、查询、缓存、分库分表和事务管理。

MySQL使用SQL命令管理数据。1.基本命令包括SELECT、INSERT、UPDATE和DELETE。2.高级用法涉及JOIN、子查询和聚合函数。3.常见错误有语法、逻辑和性能问题。4.优化技巧包括使用索引、避免SELECT*和使用LIMIT。

MySQL是一种高效的关系型数据库管理系统,适用于存储和管理数据。其优势包括高性能查询、灵活的事务处理和丰富的数据类型。实际应用中,MySQL常用于电商平台、社交网络和内容管理系统,但需注意性能优化、数据安全和扩展性。

SQL和MySQL的关系是标准语言与具体实现的关系。1.SQL是用于管理和操作关系数据库的标准语言,允许进行数据的增、删、改、查。2.MySQL是一个具体的数据库管理系统,使用SQL作为其操作语言,并提供高效的数据存储和管理。

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

EXPLAIN命令的关键指标包括type、key、rows和Extra。1)type反映查询的访问类型,值越高效率越高,如const优于ALL。2)key显示使用的索引,NULL表示无索引。3)rows预估扫描行数,影响查询性能。4)Extra提供额外信息,如Usingfilesort提示需要优化。

Usingtemporary在MySQL查询中表示需要创建临时表,常见于使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通过优化索引和重写查询避免其出现,提升查询性能。具体来说,Usingtemporary出现在EXPLAIN输出中时,意味着MySQL需要创建临时表来处理查询。这通常发生在以下情况:1)使用DISTINCT或GROUPBY时进行去重或分组;2)ORDERBY包含非索引列时进行排序;3)使用复杂的子查询或联接操作。优化方法包括:1)为ORDERBY和GROUPB


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。