读《MySql必知必会》笔记

MySql必知必会

2017-12-21

意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页

登陆:

mysql -u root-p -h myserver -P 9999

SHOW STATUS,用于显示广泛的服务器状态信息

DESCRIBE tableName;是SHOW COLUMNS FROM tableName;的一种快捷方式

SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句

SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限

SHOW ERRORS和SHOW WARNINGS, 用来显示服务器错误或警告消息

help show 获取更多SHOW相关命令

不能部分使用DISTINCT,DISTINCT关键字应用于所有列而不仅是前置它的列

IN操作符一般比OR操作符清单执行更快。

IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句

MySQL 支 持 使 用 NOT 对 IN 、 BETWEEN 和EXISTS子句取反

正则:

虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE ‘%‘也不能匹配用值NULL作为产品名的行

MySQL中的正则表达式匹配不区分大小写,为区分大小写,可使用BINARY关键字,如WHERE prod_name REGEXP BINARY ‘JetPack .000‘

全文本搜索:

指定FULLTEXT后,使用两个函数Match()和Against()执行全文本搜索

想找出所有提到anvils的注释。只有一个注释包含词anvils,但你还想找出可能与你的搜索有关的所有其他行,即使它们不包含词anvils。

在使用查询扩展时, MySQL对数据和
索引进行两遍扫描来完成搜索:
q 首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行;
q 其次, MySQL检查这些匹配行并选择所有有用的词(我们将会简要地解释MySQL如何断定什么有用,什么无用)。
q 再其次, MySQL再次进行全文本搜索,这次不仅使用原来的条件,而且还使用所有有用的词。
利用查询扩展,能找出可能相关的结果,即使它们并不精确包含所查找的词。

布尔方式( booleanmode)。即使没有FULLTEXT索引也可以使用,但这是一种非常缓慢的操作(其性能将随着数据量的增加而降低)

q 要匹配的词;
q 要排斥的词(如果某行包含这个词,则不返回该行,即使它包含
其他指定的词也是如此);
q 排列提示(指定某些词比其他词更重要,更重要的词等级更高);
q 表达式分组;
q 另外一些内容

匹配词heavy,但-rope*明确地指示MySQL排除包含rope*

全文本搜索的某些重要的说明

忽略词中的单引号。例如, don‘t索引为don’t

仅MyISAM数据库引擎中支持全文本搜索,(mysql5.6 Innodb好像也支持了)

select insert

不一定要求列名匹配。事实上, MySQL甚至不关心SELECT返回的列名。它使用的是列的位置

IGNORE关键字 如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。为即使是发生错误,也继续进行更新,可使用IGNORE关键字,如下所示:
UPDATE IGNORE tableName

TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据

每个表只允许一个AUTO_INCREMENT列,而且它必须被索引,使它成为主键。

q InnoDB是一个可靠的事务处理引擎(参见第26章),它不支持全文本搜索;

q MEMORY在功能等同于MyISAM, 但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
q MyISAM是一个性能极高的引擎,它支持全文本搜索(参见第18章),但不支持事务处理。

外键不能跨引擎 混用引擎类型有一个大缺陷。外键(用于强制实施引用完整性,如第1章所述)不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键

视图:

视图不能索引,也不能有关联的触发器或默认值。

存储过程:

游标(cursor) 是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。

在这个例子中,我们增加了另一个名为t的变量(存储每个订单的合计)。 此存储过程还在运行中创建了一个新表(如果它不存在的话),名为ordertotals。这个表将保存存储过程生成的结果。ETCH像以前一样取每个order_num,然后用CALL执行另一个存储过程(我们在前一章中创建)来计算每个订单的带税的合计(结果存储到t)。最后,用INSERT保存每个订单的订单号和合计。

触发器:

只有表才支持触发器,视图不支持(临时表也不支持)。

SELECT的其他COLLATE子句 除了这里看到的在ORDER BY子句中使用以外, COLLATE还可以用于GROUP BY、 HAVING、聚集函数、别名等。

如果绝对需要,串可以在字符集之间进行转换。为此,使用Cast()或Convert()

show grants for username;

create user haogp identified by ‘haogp’

grant select on *.* to haogp;

revoke select on *.* from haogp;

set password for haogp = Password(‘haogp’);

grant select on *.* to [email protected]’%’ identified by ‘haogp’;

如果从一个表中删除大量数据,应该使用OPTIMIZE TABLE来收回所用的空间,从而优化表的性能。

重要的mysqld命令行选项:
q --help显示帮助——一个选项列表;
q --safe-mode装载减去某些最佳配置的服务器;
q --verbose显示全文本消息(为获得更详细的帮助消息与--help联合使用);
q --version显示版本信息然后退出。

日志:

主要的日志文件有以下几种。
q 错误日志。它包含启动和关闭问题以及任意关键错误的细节。此日志通常名为hostname.err,位于data目录中。此日志名可用--log-error命令行选项更改。
q 查询日志。它记录所有MySQL活动,在诊断问题时非常有用。此日志文件可能会很快地变得非常大,因此不应该长期使用它。此日志通常名为hostname.log,位于data目录中。此名字可以用--log命令行选项更改。
q 二进制日志。它记录更新过数据(或者可能更新过数据)的所有语句。此日志通常名为hostname-bin,位于data目录内。此名字可以用--log-bin命令行选项更改。注意, 这个日志文件是MySQL5中添加的,以前的MySQL版本中使用的是更新日志。
q 缓慢查询日志。顾名思义,此日志记录执行缓慢的任何查询。这个日志在确定数据库何处需要优化很有用。此日志通常名为hostname-slow.log , 位 于 data 目 录 中 。 此 名 字 可 以 用--log-slow-queries命令行选项更改。
在使用日志时,可用FLUSH LOGS语句来刷新和重新开始所有日志文件

 

主要单词:

主键primary key

SQL (发音为字母S-Q-L或sequel)是结构化查询语言 ( Structured Query
Language)的缩写

ASC ( ASCENDING)升序排序

时间: 2024-10-24 16:55:16

读《MySql必知必会》笔记的相关文章

读《问题解决的思路和方法》笔记

麦肯锡解决问题的7步 1:界定问题-->通过反复问为什么来界定问题--> 一开始问题是表象,比如讨厌周末天气,但通常对于改变气候,结论是不可能,更深层次的原因在表象之下,比如为什么讨厌天气,可能是每个周末都很疲惫 问题界定的结果必须是明确且可执行的,考虑我们能够施加的影响,良好界定符合 SMART 原则 (S)具体 (M)可衡量 (A)以行动为导向 (R)相关的 (T)有时限性的 2:将问题分解成议题 考虑这个问题的关键要素有哪些 3:去除不重要的议题(优先排序) 根据80/20原则,考虑解决

读《编程高手箴言》笔记一

最近无意在朋友的书柜上翻到一本<编程高手箴言>,之前对带有“高手”.“速成”.“7天成才”这样字眼的书籍都有种偏见,总觉得都是些不靠谱的吹嘘.但这本书不一样,翻开大致浏览一下,感觉写得挺中肯,挺实际,于是拿回家有时间就翻翻.并将书上感觉写得好的地方摘录下来. 正确的入门方法 工欲善其事,必先利其器,要想成功,没有一个艰苦的过程是不可能的,所以一开始的时候就要有耐心.如果你准备花5年的时间成为高手,那我敢说你基本不用等到5年,你只要有这个耐心就足够了,你可能2---3年内就达到了目标.但如果你想

《编写可读代码的艺术》读书笔记

表面内容 1.代码的写法应当是别人理解他所需的时间最小化.一条注释可以让你更快理解代码.尽管减少代码行数是一个好目标,但是八里街代码所需的时间最小化是一个更好的目标. 2.选择专业的词,比如函数名使用getxxx(),这个get没有表达出很多信息,是从缓存中得到?从数据库中得到?或者从网络得到?如果是网络,可以用更专业的fetchxxx()或者downloadxxx() 3.tmp,retval这样泛泛的名字,可以根据情况命名,比如tmpFile,让人知道变量是一个临时的文件.(tmp这个名字只

从底层开发谈WebGIS中实现地理长度固定的可视窗口的思路和方法

1.具体问题 在公司某边界城市的项目中,对方提出因为自己的地图安全度要求比较高,需要实现以下两个需求: a.地图的可视范围永远控制在6平方公里以内. b.系统退出时自动删掉所有缓存到本地的瓦片. 第二个问题比较简单,不做讨论,这里主要谈谈第一个问题解决的思路. 2.问题分析 a.不能通过单纯的固定地图大小.因为是地理长度固定,而不是屏幕可视长度固定,换句话说是指,在不同的地图级别下,可视屏幕长度是变化的,因为此时固定的地理长度对应的可视长度是变化的.所以,单纯的通过调整地图可视屏幕大小是行不通的

关于解题的思路与方法

很多学生问我这个问题,拿来一道题(或实际一个问题)解决它的思路和方法是什么. 其实人的思维是最难描述的.每个人的思考方式和习惯都不尽相同,解决同一个问题达到同一个效果的方式也是如此.简单的讲,"思路"是难以给出一个单一模式的,但是前人还是总结了很多方法.下面列出我个人比较常用的解题方法和思路,供大家参考. 博文首发地址:http://blog.csdn.net/duzixi 先说说解体思路. 解体思路有两大基本套路:一个是"自上而下",另一个是"自下而上&

阅读ICONIX方法笔记

主要步骤包括:1.域建模(领域模型)2.用例建模(动态模型)3.分析建模  4.健壮性分析5.交互建模(绘出时序图和设计级类图)      域模型(是一种由内向外的方式来分析系统的)(1) 确定直实世界中的抽象,即系统中将涉及的主要的概念性对象.(2) 域类(可以认为是实体类)的来源就是需求.领域知识以及问题陈述中的相关名词或名词短语等术语.(3) 识别完了域类后,就可以进行问题域建模,即进行域类图的绘制(可以有类之间的关联和泛化等关系)注意:这里的域类图只是一种表现形式,里面的一个类的层次关系

Windows删除删除文件提示无法读源文件或磁盘解决方法

创建一份文本文档,写入以下二行代码: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 保存后,把TXT改成BAT批处理格式 把要删的文件拖到这个批处理文件上,会自动运行并删除. Windows删除删除文件提示无法读源文件或磁盘解决方法,布布扣,bubuko.com

CPU利用率异常的分析思路和方法交流探讨

CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层面的问题?在上线前的测试过程中,经常会遇到新版本应用的CPU占用率比旧版本高,那么到底是新增的或者变更的什么模块导致呢?面对这种情况,我们应该如何定位和诊断问题的根本原因? 本期专题讨论会分享采用什么样的分析思路.分析方法和分析工具进行CPU使用情况的分析:并帮助大家解答以下问题: 1. CPU利用

运行Scrapy程序时出现No module named win32api问题的解决思路和方法

有小伙伴在群里边反映说在使用Scrapy的时候,发现创建项目一切顺利,但是在执行Scrapy爬虫程序的时候却出现下列报错:“No module named win32api”,如下图所示,但是不知道怎么破,今天就这个问题讲解一下解决方案. 出现这个报错是因为在Windows下我们缺少一个包,叫pypiwin32,这个报错一般只是在Windows下出现.很多小伙伴看到“No module named win32api”,于是乎便想着直接输入安装命令“pip install win32api”,结果

ARM应用调试思路、方法总结、笔记

一.应用调试1:使用strace命令来跟踪系统调用 二.应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./configure --target=arm-linuxmake把arm-linux-gdb复制到/bin目录 cd gdb/gdbserver/./configure --host=arm-linuxcp gdbserver /work/nfs_root/first_fs/bin 编译要调试的应用,编