本期学习MySQL命令行工具和操作 1、MySQL命令行工具 (1)、MySQL MySQL是一个简单的SQL外壳(有GNU readline功能)。它支持交互式和非交互式使用。...(6)、MySQLShow MySQLShow,客户可用来很快地查找存在哪些数据库,数据库中的表,表中的列或索引。...(7)、Perror Perror为系统错误代码或存储引擎(表处理)错误代码打印其描述信息。 (8)、Replace Replace实用工具可以及时更改文件或标准输入中的字符串。...+删除数据库+推出MySQL管理工具 (3)、增加用户 + 显示用户 + 修改密码 + 删除用户 (4)、进入数据库 + 创建表 + 显示数据库下所有的表 + 显示表的定义 + 向表中插入数据 +...显示表的所有内容 + 删除表中的所有内容 + 删除表定义 (5)、跟新某记录的值 + 给表增加一列 + 删除表中的一列
当我们这样做时,我们无法在事务中运行迁移,因此使用 atomic = False 来运行这些很重要。 删除列/表 由于我们的部署过程,这很复杂。...当我们部署时,我们运行迁移,然后推出应用程序代码,这需要一段时间。这意味着如果我们只是删除一个列或模型,那么 sentry 中的代码将查找这些列/表并在部署完成之前出错。...因此,一旦我们在 Postgres 中重命名该表,如果旧代码尝试访问它,它就会立即开始出错。有两种方法可以处理重命名表: 不要在 Postgres 中重命名表。...停止写入旧表并从代码中删除引用。 丢弃旧表。 一般来说,这是不值得做的,与回报相比,这需要冒很多风险/付出很多努力。 添加列 创建新列时,它们应始终创建为可为空的。...因此,一旦我们在 Postgres 中重命名该列,如果旧代码尝试访问它,它就会立即开始出错。有两种方法可以处理重命名列: 不要重命名 Postgres 中的列。
EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法,但该动能也有局限性,它的选择并不总是最优的,展示的也并不一定是真相。...如果查询中没有子查询或关联查询,那么只会有唯一的SELECT,每一行的该列中都将显示一个1,否则,内层的SELECT语句一般会顺序编号,对应于其在原始语句中的位置。...2.6 key 显示mysql决定采用哪一个索引来优化对该表的访问,如果该索引没有出现在possible_keys列中,那么MySQL选用它是出于另外的原因——例如,它可能选择了一个覆盖索引,哪怕它没有...filesort有两种,一种是内存排序,一种是磁盘排序,无法得知。 Distinct: 一旦MySQL找到了与行相联合匹配的行,就不再搜索了,常见于关联查询。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
关于MySQL 8.0 JSON数据类型,后面准备通过一个系列的文章来进行详细的介绍,这样方便大家对MySQL中JSON数据类型的使用有更好的了解; 很多业务人员在用 JSON 数据类型时会遇到各种各样的问题...但当你看完今天的内容之后,会真正认识到 JSON 数据类型的威力,从而在实际工作中更好地存储非结构化的数据。...MySQL 8.0还支持RFC 7396中定义的JSON合并补丁格式关系型的结构化存储存在一定的弊端,因为它需要预先定义好所有的列以及列对应的类型。...,但如果不是,则尝试失败: mysql>CREATE TABLE t1 (jdoc JSON); Query OK, 0 rows affected (0.01 sec) mysql>INSERT...8.0中,优化器可以执行JSON列的局部就地更新,而不是删除旧文档并将新文档全部写入该列。
using filesort 当需要的排序和使用索引的排序不一致时,即无法通过索引排序,在获取结果之后,还需要对结果进行再一次的排序。 MySQL 中无法利用索引完成的排序操作称为“文件排序”。...当我们试图对一个没有索引的字段进行排序时,就是filesoft。它跟文件没有任何关系,实际上是内部的一个快速排序。...在 server 层筛选没有被下推到存储引擎层 where 条件,满足则使用,否则丢弃。 ? 二、优化经验 要对经常进行搜索,排序,分组的列创建索引。...如果没有创建 PRIMARY KEY 索引,但表具有一个或多个 UNIQUE 索引,则 MySQL 将删除第一个 UNIQUE 索引。 如果从表中删除了某列,则索引会受到影响。...对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
内存耗尽仍然可能发生,但通常只会在尝试为 MySQL 分配过多内存时发生。我们在“配置内存使用”中讨论了防止这种情况发生的最佳配置设置,在第五章中。...有各种选项可以显示或隐藏列。官方文档有点混乱,我们不得不深入源代码中找出到底显示了什么。以下是每列显示的内容: rrqm/s 和 wrqm/s 每秒排队的合并读写请求数。...(MySQL 仅在连接关闭时添加线程到缓存中,并且仅在创建新连接时从缓存中删除线程。)...你可以强制它快速关闭,但然后它只需在重新启动时执行更多的恢复,因此实际上无法加快关闭和重新启动周期时间。...但如果无法执行查询,那么打开连接是没有用的,因此被拒绝并显示“连接过多”错误是一种快速失败和廉价失败的方式。
存储引擎接受数据但会丢弃它,不会存储。...如果只设置了ALL_NON_LOSSY,但没有设置ALL_LOSSY,那么尝试进行可能导致数据丢失的转换(例如INT到TINYINT,或CHAR(25)到VARCHAR(20))会导致副本停止并显示错误...(相同的错误代码),错误会被记录,但复制会继续。...如果一个成员实际上与组的其他成员隔离开来,它可能会尝试传播其观点,但这不会产生任何后果,因为它无法获得其他成员的多数同意。...如果一个成员实际上与组的其他成员隔离开来,它可能会尝试传播其观点,但这不会产生任何后果,因为它无法获得其他成员的多数同意。
,通过里面输出结果的字段解释中可以分析执行了的sql语句类型,但发现不太适合一般的初级使用者,而通过日志文件查看sql语句是最直接的方法。...state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态, 一个sql语句,已查询为例,可能需要经过copying to tmp...table,Sorting result,Sending data等状态才可以完成, info列,显示这个sql语句,因为长度有 限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据...deleting from main table 服务器正在执行多表删除中的第一部分,刚删除第一个表。 ...例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。
我会缩减它。 Computer(计算机)将文本存储为1和0。本段中的第一个字母存储为“01000011”,你的计算机显示为“C”。你的计算机分两步选择“C”: 1....你可能没有意识到,但我们的计算机在幕后同意了UTF-8。如果他们没有,然后当我输入 “?”时,你会看到一堆随机数据。 MySQL的“utf8”字符集与其他程序不一致。当他们说“?”时,它会犹豫。...当MySQL开发人员第一次尝试使用UTF-8时,每个字符的后六个字节,他们可能会犹豫不决:一个CHAR(1)列需要六个字节; CHAR(2)列需要12个字节; 等等。...它得到了很好的记录和广泛采用,任何理解UTF-8的人都会同意这是正确的。 但显然,MySQL开发人员(或商人)担心一两个用户会做两件事: 1.选择CHAR列。(CHAR格式现在是遗物。...想要速度和空间的用户使用“utf8”CHAR列仍然是错误的,因为那些列仍然比它们原来更大更慢。想要正确性的开发人员使用“utf8”是错误的,因为它无法存储 “?”
要禁用日志组件,请从log_error_services值中删除它。然后,如果组件是可加载的,并且您还想卸载它,请使用UNINSTALL COMPONENT。还要删除您定义的任何相关组件变量设置。...在未被丢弃的消息中,log_error_suppression_list会丢弃具有WARNING优先级和任何命名错误代码的消息。...或者,将设置添加到服务器选项文件中。 当使用log_filter_dragnet时,log_error_suppression_list会被忽略。 要停止使用过滤语言,首先从错误日志组件集中删除它。...实际上,这个规则可以被省略,因为没有比 INFORMATION 更大的 prio 值,因此实际上它什么也不丢弃。 err_code 数字事件错误代码。...在 MySQL 5.7 中,启用二进制日志记录时必须指定服务器 ID,否则服务器将无法启动。在 MySQL 8.0 中,默认情况下将server_id系统变量设置为 1。
比如:删除主键、修改列类型、修改字符集,这些操作会导致行记录格式发生变化(无法通过全量 + 增量实现 Online)。...MySQL中,表级别的锁有2种 一种是我们通常说的表锁,由InnoDB引擎实现,如lock tables … read/write,表锁影响较大,不常用。...而如果我担心它选择了锁而导致我们的表不能读也不能写,显然这不是我们想要的结果,我们希望:如果选择了锁就不要执行,直接退出执行;如果没有选择锁就执行。想要达到我们希望的这个效果,该怎么做呢?...、修改列定义、添加/删除索引等。...很多 MySQL 用户经常在表无法正常的进行 DML 时就觉得是锁表了,这种说法其实过于宽泛,实际上能够影响 DML 操作的锁至少包括以下几种(默认为 InnoDB 表): MDL 锁 表锁 行锁
实质上,索引是一个数据结构,它存储来自特定列的值,这意味着当我们通过索引字段进行搜索时,我们有一个方便的快捷方式来访问这些值。...当我们通过未加索引的字段进行搜索时,我们必须发现找到该值的完整路径,没有任何捷径。搜索未加索引的字段就像不得不观看《魔戒》中 Frodo走过没有标记的中土世界:这需要很长时间。...这里的时间序列问题是没有关于哪些片段应该被索引的约定,所以我们需要随时注意我们的模式。 查询范围 当一个查询结果让我失望时,我通常跳入命令行。当我第一次发现时间序列数据库时,我就是这么做的。...使用* (all)运行查询可能会在数据库检索点时锁定数据库。 有几个选项可以限制您的查询,同时改善它。 使用时间范围。...假设您忽略了我之前的一些建议,您需要运行一个没有时间窗口或子查询的查询。您可以通过设置进程来删除过期数据来控制数据量。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。...因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 ---- 普通索引 创建索引 这是最基本的索引,它没有任何限制。...以下实例为在表中添加索引。 mysql> ALTER TABLE testalter_tbl ADD INDEX (c); 你还可以在 ALTER 命令中使用 DROP 子句来删除索引。...尝试以下实例删除索引: mysql> ALTER TABLE testalter_tbl DROP INDEX c; ---- 使用 ALTER 命令添加和删除主键 主键作用于列上(可以一个列或多个列联合主键...---- 显示索引信息 你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
如果启用严格的SQL模式,则会发生错误,并且列保持不变。 当 NO_UNSIGNED_SUBTRACTION使能时,即使有任何操作数是无符号的,减法结果也是有符号的。...有关其他讨论和示例,请参见 第12.19.3节“MySQL处理GROUP BY”。 PAD_CHAR_TO_FULL_LENGTH 默认情况下,尾部空格CHAR在检索时从列值中删除 。...字符串列显示不包括在MySQL 4.1中引入的字符集和整理属性。对于CHAR与 VARCHAR列,如果核对是二进制的,BINARY被附加到列类型。 该 表选项显示为 。...当要插入的新行不包含定义中NULL没有显式DEFAULT子句的非列的值时,缺少值。(对于 NULL列,NULL如果值缺失则插入。)严格模式也会影响DDL语句,如CREATE TABLE。...丢弃在唯一键值上复制现有行的行。 DELETE: IGNORE导致MySQL在删除行的过程中忽略错误。 INSERT:与 IGNORE,在唯一键值上复制现有行的行将被丢弃。
在脚本之家看到的这篇文章(http://www.jb51.net/article/46401.htm),转载过来: MySQL错误代码大全 本章列出了当你用任何主机语言调用MySQL时可能出现的错误。...服务器错误代码和消息 服务器错误信息来自下述源文件: · 错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。...) 消息:删除'%s'时出错 (errno: %d) · 错误:1012 SQLSTATE: HY000 (ER_CANT_FIND_SYSTEM_REC) 消息:无法读取系统表中的记录。...客户端错误代码和消息 客户端错误信息来自下述源文件: · 圆括号中的错误值和符号与include/errmsg.h MySQL源文件中的定义对应。...· 消息值与libmysql/errmsg.c文件中列出的错误消息对应。%d和%s分别代表数值和字符串,显示时,它们将被消息值取代。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。...因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 ---- 普通索引 创建索引 这是最基本的索引,它没有任何限制。...以下实例为在表中添加索引。 mysql> ALTER TABLE testalter_tbl ADD INDEX (c); 你还可以在 ALTER 命令中使用 DROP 子句来删除索引。...尝试以下实例删除索引: mysql> ALTER TABLE testalter_tbl DROP INDEX c; ---- 使用 ALTER 命令添加和删除主键 主键作用于列上(可以一个列或多个列联合主键...---- 显示索引信息 你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
因此,假如你有机会获得root用户来登录,可以用mysql中mysqladmin二进制来创建任何数据库。 在删除任何数据库时要注意,因为删除数据库时所有的数据在数据库中。...> 18、MySQL NULL值 我们已经看到SQL SELECT命令和WHERE子句一起使用,来从MySQL表中提取数据,但是,当我们试图给出一个条件,比较字段或列值设置为NULL,它确不能正常工作。...如果打算使用事务在MySQL编程,那么需要使用一个特殊的方式来创建表。 有许多类型的表其支持事务,但目前最流行的一种是:InnoDB. 支持InnoDB表需要特定的编译参数,在源代码编译MySQL时。...这意味着,如果你想在表中重新排位现有列,首先必须删除(DROP )它,然后在新的位置添加(ADD)它。 更改列定义或名称 要改变列的定义,使用MODIFY 或CHANGE 子句以及ALTER命令。...如果记录与现有现有不重复时,MySQL将其正常插入。如果记录是一个重复的,则 IGNORE 关键字告诉MySQL丢弃它而不会产生错误。 下面的例子不会有错误,也不会插入重复的记录。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。...因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 普通索引 创建索引 这是最基本的索引,它没有任何限制。...尝试以下实例删除索引: mysql> ALTER TABLE testalter_tbl DROP INDEX c; 使用 ALTER 命令添加和删除主键 主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空...显示索引信息 你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。...③注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
也不例外,它需要更多的代码,更多的检查和特殊的索引逻辑,有些开发人员完全没有意识到,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。...因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推 迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。...当我们通过二级索引统计数据的时候,无需扫描数据文件;而通过主键索引统计数据时,由于主键索引与数据文件存放在一起,所以每次都会扫描数据文件,所以主键索引统计没有二级索引效率高。...优化order by语句 基于索引的排序 MySQL的弱点之一是它的排序。虽然MySQL可以在1秒中查询大约15,000条记录,但由于MySQL在查询时最多只能使用一个索引。...这是使用索引的最慢的连接之一 MySQL没有发现好的可以使用的索引,但发现如果来自前面的表的列值已知,可能部分索引可以使用。
****************************** mysql数据库中常见的错误代码: mysql数据库中如果有语法错误,错误码是1064 Duplicate key name 'jun'...重复添加键,重复添加的错误代码是: 1061 错误代码1215 无法添加外键约束的解决思路:两个数据类型不一致 #这是mysql语句中有错误的话会报错的提示,并会提示你在哪附近出错了,出错位置在near...如果想将某列添加为第一列 alter table test_table add test int (5) default 4 first mysql中的注释: 1、单行注释可以用"#"...这样的话各个国家无法沟通,这时出现了Unocode编码,几乎收纳了全世界大部分的字符, 计算机每次读取3个字节,但是没有规定编码的二进制传输和二进制解码,而且有的时候单字母的 话占用3个字节比较浪费资源...,需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储 于是在Unicode的基础上出现了新的解决方案,utf-8, utf-16, utf-32
领取专属 10元无门槛券
手把手带您无忧上云