性能优化 MySQL性能优化包括查询速度优化、数据库结构优化、MySQL服务器优化等。 优化简介 MySQL数据库优化是多方面的,优化表结构、索引、查询语句等使查询响应更快。 在MySQL中,可以使用SHOW STATUS语句查询一些MySQL数据库的性能参数。语句语法如下: SHOW STATUS LIKE 'value'; 其中,value是要查询的参数值,一些常用的性能参数如下: Connections:连接MySQL服务器的次数。 Uptime:MySQL服务器的上线时间。 Slow_queries:慢查询的次数。 Com_select:查询操作的次数。 Com_insert:插入操作的次数。 Com_update:更新操作的次数。 Com_delete:删除操作的次数。 优化查询 分析查询语句 MySQL提供了EXPLAIN语句和DESCRIBE语句,用来分析查询语句。 EXPLAIN语句的基本语法如下: EXPLAIN [EXTENDED] SELECT select_options 使用EXTENDED关键字,EXPLAIN语句将产生附加信息。执行该语句,可以分析SE.... 有更新! MySQL性能优化(十五) MySQL
MySQL日志 MySQL日志记录了MySQL数据库日常操作和错误信息。 日志简介 MySQL日志主要分为4类,使用这些日志文件,可以查看MySQL内部发生的事情。这4类日志分别是: 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。 查询日志:记录建立的客户端连接和执行的语句。 二进制日志:记录所有更改数据的语句,可以用于数据复制。 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。 通过刷新日志,可以强制关闭和重新打开日志文件(或者在某个情况下切换到一个新的日志)。当执行一个 FLUSH LOGS 语句或执行 mysqladmin flush-logs 或 mysqladmin refresh 时,将刷新日志。 二进制日志 二进制日志包含所有更新了数据或者已经存在更新了数据(例如,没有匹配任何行的一个DELETE)的语句。使用二进制日志的主要目的是最大可能地恢复数据库,因为二进制日志包含备份后进行的所有更新。 启动和设置二进制日志 默认情况下,二进制日志是关闭的,可以通过修改MySQL的配置文件来启动和设置二进制日志.... MySQL日志(十四) MySQL
数据备份与恢复 保证数据安全最重要的一个措施是确保对数据进行定期备份。如果数据库中的数据丢失或者出现错误,可以使用备份的数据进行恢复,这样就尽可能地降低了意外原因导致的损失。 数据备份 使用mysqldump命令备份 mysqldump命令执行时,可以将数据库备份成一个文本文件,该文件实际上包含了多个CREATE和INSERT语句,使用这些语句可以重新创建表和插入数据。 mysqldump备份单个数据库语句,基本语法格式如下: mysqldump -u user -h host -p dbname [tbname1 [tbname2...] ] > filename.sql tbname为dbname数据库中需要备份的数据表,可以指定多个需要备份的表,多个表名之间用空格隔开; 右箭头符号 “>” 告诉mysqldump将备份的数据表的定义和数据写入备份文件; filename.sql为备份文件的名称。 mysqldump备份多个数据库语句,基本语法格式如下: mysqldump -u user -h host -p --databases [dbnane1 [dbname.... MySQL数据备份与恢复(十三) MySQL
MySQL用户管理 MySQL是一个多用户数据库,可以为不同用户指定允许的权限。 权限表 MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由MySQL_install_db脚本初始化。存储账户权限信息表主要有user、db、host、tables_priv、columns_priv和procs_priv。 user表 user表是MySQL中最重要的一个权限表,记录允许连接到服务器的账户信息,里面的权限是全局的。 用户列 user表的用户列包括Host、User、authentication_string,分别表示主机名、用户名和密码。其中,User和Host为User表的联合主键。 权限列 权限列的字段决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。包括查询权限、修改权限等普通权限,还包括了关闭服务器、超级权限和加载用户等高级权限。普通权限用于操作数据库;高级权限用于数据库管理。如果要修改权限,可以使用GRANT语句或UPDATE语句更改user表的这些字段来修改用户对应的权限。 安全列 安全列只有6个字段,其中两个是ssl相关的.... 有更新! MySQL用户管理(十二) MySQL
MySQL触发器 MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。 创建触发器 触发器(trigger)是一个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句调用,也不需要手动启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。 创建只有一个执行语句的触发器 创建一个触发器的语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW trigger_stmt; 其中,trigger_name标识触发器的名称,用户自行指定; trigger_time标识触发时机,可以指定为BEFORE或AFTER; trigger_event标识触发事件,包括INSERT、UPDATE和DELETE; tb1_name标识建立触发器的表名,既在哪个表上建立触发器; trigger_stmt是触发器执行语句。 创建有多个执行语.... MySQL触发器(十一) MySQL
视图 数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据来自由定义视图查询所引用的表。 视图概述 在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。 视图的含义 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。 视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。 当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,若基本表的数据发生变化,则这种变化也可以自动反映到视图中。 视图的作用 简单化 安全性 逻辑数据独立性 创建视图 创建视图的语法形式 创建视图使用CREATE VIEW语句,基本语法格式如下: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ] VIEW view_name [(column_list)] AS SELECT_statement [WITH [C.... MySQL视图(十) MySQL
存储过程和函数 存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。 创建存储过程和函数 存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别是CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句来调用存储过程,只能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。 创建存储过程 创建存储过程需要使用CREATE PROCEDURE语句,基本语法格式如下: DELIMITER // --将结束符号指定为// CREATE PROCEDURE sp_name([proc_parameter]) [characteristics...] BEGIN routine_body; END // CREATE PROCEDURE为用来创建存储函数的关键字;sp_name为存储过程的名称;routine_body是SQL代码的内容,可以用BEGIN...END来表示SQL代码的开始和结束;proc_parameter为指定存储过程的参数列表,列表形式如下: .... MySQL存储过程和函数(九) MySQL
索引 索引用于快速找出某列中有一特定值的行。如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻数据文件,而不必查看所有数据。 索引简介 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。 索引的含义 索引是在存储引擎中实现的,每种存储引擎的索引都不一定完全相同。所有存储引擎支持每个表至少16个索引,总索引长度至少256字节。MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;MyISAM和InnoDB存储引擎只支持BTREE索引;MEMORY/HEAP存储引擎可以支持HASH和BTREE索引。 索引的分类 MySQL的索引可以分为以下几类: 普通索引和唯一索引 普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。 唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。 单列索引和组合索引 单列索引即一个索引只包含单个列,一个表可以有多个单列索引。 组合索引指在表的多个字段组合上创建的索引,只有在查询条件中使用.... MySQL索引(八) MySQL
插入、更新与删除数据 存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储、访问和维护数据的完整性。 插入数据 MySQL中使用INSERT语句向数据库表中插入新的数据记录。可以插入的方式有插入完整的记录、插入记录的一部分、插入多条记录、插入另一个查询的结果。 为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新纪录中的值。基本语法格式为: INSERT INTO table_name (column_list) VALUES (value_list); table_name指定要插入数据的表名,column_list指定要插入数据的那些列,value_list指定每个列应对应插入的数据。注意,使用改语句时字段列和数据值的数量必须相同。 INSERT语句后面的列名称顺序可以不是表定义时的顺序,即插入数据时,不需要按照表定义的顺序插入,只要保证值的顺序与列字段的顺序相同就可以。 提示:虽然使用INSERT插入数据时可以忽略插入数据的列名称,但是值如果不包含列名称,那么VALUES关键字后面的值不仅要求完整而且顺序必须和表定义.... MySQL插入、更新与删除数据(七) MySQL
查询数据 基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句。SELECT语句的基本格式是: SELECT {* | <字段列表>} [ FROM <表1>,<表2> [ WHERE <表达式> [ GROUP BY <group by definition> ] [ HAVING <expression> [{<operator> <expression>}...] ] [ ORDER BY <order by definition> ] [ LIMIT [offset,] <row count> ] ]; 其中,各条子句的含义如下: {*|<字段列表>} 包含星号通配符选字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段后不用加逗号。 FROM <表1>,<表2>...,表1和表2表示查询数据的来源,可以是单个或者多个。 WHERE 子句是可选.... MySQL查询数据(六) MySQL
MySQL函数 MySQL 函数简介 MySQL提供了大量丰富的函数,在进行数据库管理以及数据的查询和操作时将会经常用到各种函数。各类函数从功能方面主要分为数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等。 数学函数 数学函数主要用来处理数值数据,主要的数学函数有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。 绝对值函数ABS(x)和返回圆周率的功能PI() ABS(x) ABS(x)返回X的绝对值。 PI() PI()返回圆周率的值。默认的显示小数位数是6位。 平方根函数SQRT(x)和求余函数MOD(x,y) SQRT(x) SQRT(x)返回非负数x的二次方根。当x为负数时,返回结果为NULL。 MOD(x,y) MOD(x,y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,返回除法运算后的精确余数。 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x) CEIL(x)和CEILING(x) CEIL(x)和CEILING(x.... 有更新! MySQL函数(五) MySQL
数据类型和运算符 MySQL数据类型介绍 MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型。 数值数据类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点小数数据类型FLOAT和DOUBLE,定点小数类型DECIMAL。 日期/时间类型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。 字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。字符串类型又分文本字符串和二进制字符串。 整数类型 数值型数据类型主要用来存储数字。MySQL提供了多种数值数据类型,不同的数据类型提供了不同的取值范围,可以存储的值范围越大,其所需要的存储空间也会越大。MySQL主要提供的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。整数类型的属性字段可以添加AUTO_INCREMENT自增约束条件。 MySQL中整数型数据类型存储空间图如下: 不同整数类型的取值范围图如下: 在创建数据表时,指定INT(1.... 有更新! MySQL数据类型和运算符(四) MySQL
数据表的基本操作 概念:在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的每一个域。 创建数据表 概念:所谓创建数据表,指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。 创建表的语法格式 数据表属于数据库,在创建数据表之前,应该使用语句USE <数据库名>指定操作是在哪个数据库中进行,如果没有选择数据库,就会抛出“No database selected”的错误。 创建数据表的语句格式如下: CREATE TABLE <表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], ...... [表级别约束条件] ); 使用CREATE TABLE创建表时,必须指定以下信息: 要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INS.... 有更新! MySQL数据表基本操作(三) MySQL
数据库的基本操作 创建数据库 MySQL安装完成之后,将会在data目录下自动创建几个必须的数据库,可以使用查看数据库的语句查看当前所有存在的数据库,输入的语句如下: SHOW DATABASES; 初始时数据库列表中包含6个数据库。mysql是必需的,描述用户的访问权限。 创建数据库的基本SQL语法格式如下: CREATE DATABASE database_name; 查看数据库定义的语句如下: SHOW CREATE DATABASE database_name; 删除数据库 删除数据库是将已存在的数据库从磁盘空间上清除。清除之后,数据库中的所有数据也将一同被清除。删除数据库语句与创建数据库的命令相似。MySQL中删除数据库的基本语句格式为: DROP DATABASE database_name; 注:使用DROP DATABASE命令时要非常谨慎,在执行该命令时,MySQL不会给出任何提示确认信息,DROP DATABSE声明删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,不可恢复。 理解数据库存储引擎 数据库存储引擎是数据库底层软件组件,数据库管理系统(.... MySQL数据库基本操作(二) MySQL