MySQL 使用方法简单教程:
一、启动MySQL服务器,实际上上篇已讲到如何启动MySQL。两种方法:
(1)是用winmysqladmin,如果机器启动时已自动运行,则可直接进入下一步 *** 作。
(2)是在DOS方式下运行。d:/mysql/bin/mysqld
二、进入mysql交互 *** 作界面,在DOS方式下,运行:
(1)d:/mysql/bin/mysql -u root -p出现提示符,此时已进入mysql的交互 *** 作方式。
(2)如果出现 "ERROR 2003: Can‘t connect to MySQL server on ‘localhost‘ (10061)“,说明你的MySQL还没有启动。
三、退出MySQL *** 作界面,在mysql>提示符下输入quit可以随时退出交互 *** 作界面:
(1)mysql>quit
(2)Bye
(3)你也可以用control-D退出。
四、使用SHOW语句找出在服务器上当前存在什么数据库:
mysql>SHOW DATABASES
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)
五、创建一个数据库abccs:
mysql>CREATE DATABASE abccs
注意不同 *** 作系统对大小写的敏感。
六、选择你所创建的数据库:
mysql>USE abccs
Database changed
此时你已经进入你刚才所建立的数据库abccs.
一、MySQL安装(Window7 安装)
步骤1:在任何版本的 Windows 默认安装是现在比以前要容易得多,MySQL巧妙地打包安装程序。只需下载安装包,随地把它解压缩,并运行 mysql.exe,这里点击:DOWNLOAD 链接,进入一下页面:
步骤2:这里点击:DOWNLOAD 链接,进入一下页面:
步骤3:这里要求注册网站帐号,但可以直接通过。如上点击 "No thanks, just start my download"
二、提示下载保存文件,下载完成后(本教程中下载完成的文件是:mysql-5.6.25-winx64.zip)解压文件放到目录:D:\software 下,这是一个免安装包,这里不需要安装步骤。
三、在本教程中MySQL执行文件在:D:\software\mysql-5.6.25-winx64\bin, 它通过从命令提示符第一次进入测试MySQL服务器。转到mysqld服务器的位置,这里进入 D:\software\mysql-5.6.25-winx64\bin,然后输入mysqld.exe。
四、如果一切顺利,会看到有关启动和InnoDB一些消息。如果没有看到,可能有权限问题。请确保保存数据的目录可以访问任何根据用户(可能是MySQL)运行数据库进程。
五、MySQL不会自己添加到开始菜单,并没有特别漂亮的GUI的方式来停止服务器。 因此,如果倾向于通过双击可执行 mysqld 启动服务器,应该记住通过并用 mysqladmin,任务列表,任务管理器或其他 Windows 特定方式来执行。
你有SQL基础吗?如果有基础根本不什么视频,MySQL是最容易入门的数据库。你可以到MySQL官网上找些资料即可,数据库重点是在 *** 作实践,自己电脑上安装一个,多练习练习,慢慢就都会了。
你报考学习班了吗?学习班有内部资料,我也报考VF二级了,而且通过了,你到淘宝网看看吧,以下是我在老师那考的一步分资料。1、 备注型字段与字符型字段有什么区别?
字符型(Character)数据:是描述不具有计算能力的文字数据类型。字符型数据由汉字、英文字母、数字字符、空格及其他专用字符组成,长度范围是0--254个字符。使用时必须用双引号("")或单引号('')括起来,一个汉字相当于两个字符。
备注型(Memo)数据:用于表示较长的字符型数据。备注型数据没有数据长度限制,仅受限于现有的磁盘空间。它只用于数据表中的字段类型的定义,其字段长度固定为4个字符,而实际数据被存放在与数据表文件同名的备注文件中(.fpt),长度根据数据的内容而定。
2、 信息和数据有什么区别?
信息(Information)是客观事物属性的反映,并对人类的客观行为产生影响。
数据(Data)是反映客观事物属性的记录,是信息的载体。如数值、文字、声音、图形、图像等,是信息的具体表现形式。
3、 数据处理 的目的是什么?
数据处理也称为信息处理。所谓数据处理,实际上就是利用计算机对各种类型的数据进行处理。数据处理包括对数据的采集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列 *** 作过程。
数据处理的目的是从大量的、原始的数据中获得人们所需要的资料并提取有用的数据成份,作为行为和决策的依据。
4、 什么是数据模型?
数据模型是指反映客观事物及客观事物间联系的数据组织的结构和形式。
5、 关系模型有哪些主要的特点?
关系模型的主要特点:
(1) 关系中每一数据项是独立的,是最基本的数据单位;
(2) 每一竖列称为一个字段,数据项是同属性的,列数根据需要而设,且各列的顺序是任意的; (3) 每一横行称为一个记录,由一个事物的诸多属性构成,且各行的顺序可以是任意的; (4) 一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录行。
6、 什么是数据库?
所谓数据库,就是以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器上形成的,能为多个用户共享的,与应用程序彼此独立的一组相关数据的集合。
7、 什么是关系数据库?
关系数据库(Relational Data Base)是由若干张二维表组成的。一张二维表称为一个关系或一个数据表
8、 数据库应用系统的主要组成部分是什么?
数据库应用系统是由计算机硬件、软件、数据和人员所组成的,为用户提供信息服务的系统。
9、 内存变量、数组变量、字段变量有何区别?
内存变量的类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型6种,它的定义是通过赋值语句来进行的。 如:a="abcd"
数组变量简称数组 数组是一组有序的变量的集合。每一个变量存放一个数据,每一个数组存放一组数据。每一个数组都有一个名字,称为数组名。数组中的每一个变量称为数组元素,每一个数组元素的名子由数组名和下标组成,下标即数组元素在数组中的位置。数组分为一维数组、二维数组 通过Dimension或Declare定义
字段变量:指数据表中已定义的任意一个字段。 字段变量的数据类型有数值型、浮点型、货币型、整型、双精度型、字符型、逻辑型、日期型、日期时间型、备注型和通用型等。
10、 利用表设计器创建表与用表向导创建表有什么区别?????????????????
11、 删除表中的数据有几种方法,有什么不同?
逻辑删除表中的记录:Delete [<范围>] For [<条件表达式>]
物理删除表中的记录Pack 物理删除表中所有逻辑删除的记录
Zap物理删除表中所有的记录
12、 简述数据表的组成?
一个数据表由数据表名、数据表的结构、数据表的记录三要素构成。
13、 什么是索引?
索引是使表中的记录按照一定的顺序排列的技术,是一个由索引序号和表的记录号组成的列表。
14、 索引类型有几种,各有什么特点?
1.主索引(Primary Index)
索引表达式的值不能重复。主索引只用于数据库表,且一张表只能创建一个主索引,自由表不能创建主索引。
2.候选索引(Candidate Index)
索引表达式的值不能重复。一张表可以建立多个侯选索引,侯选索引可用于数据库表和自由表
3.普通索引(Regular Index)
索引表达式的值可以出现重复,且在索引表中,具有重复值的记录也被重复存贮。
4.唯一索引(Unique Index)
索引表达式的值可以出现重复,但在索引表中,只存贮其中的第一个。
15、 为什么要建立索引,意义是什么?
索引是使
有序,有序就可进行快速查询。
16、 如何使用索引?
按索引字段,索引表达式排序
SET ORDER TO [TAG<索引标识名>]
17、 在数据库 *** 作环境下对数据表进行 *** 作有什么好处?
只有把有关系的表存放在同一个数据库中,确定它们的关联关系,表中的数据才能被更充分的利用。
18、 数据库中的数据表间有几种关联关系,建立这些关联的依据是什么?
一对一
一对多 多对一;建立数据库文件中的表间关联,一是要建立关联的表具有相同属性的字段;二是每个表都要以该字段建立索引。
视图是从一个或多个数据表中导出的"表"。
查询可以从单个或多个表中提取有用的数据。利用查询可以实现对数据库中数据的浏览、筛选、排序、检索、统计及加工等 *** 作;利用查询可以为其他数据库提供新的数据表
19、 视图和查询有什么不同?各有什么特点?
利用视图可以更新数据表中的数据。因为视图可以限定数据表中数据的使用范围,因此,也就限定了可更新的数据,数据表中其他的数据就不会被破坏,由此可以提高数据维护的安全性。
使用查询和使用视图一样,比使用数据表和数据库更方便、快捷和安全。
视图和查询相比,视图比查询多了一个更新功能,但是查询的输出格式多样化。
20、 项目管理吕是什么?使用它有什么好处?
项目管理器是按一定的顺序和逻辑关系,对数据库应用系统的文件进行有效组织的工具。使用项目管理器可以用最简单可视化的方法对数据表和数据库进行管理,在进行应用程序开发时,可以有效地组织数据表、表单、数据库、菜单、类、程序和其他文件,并将它们编译成可独立运行的.APP或.EXE文件。
21、 什么是类?什么是对象?
所谓类(Class),就是具有共同属性和行为特征的对象的集合与抽象。
对象(Object)是反映客观事物属性及行为特征的描述。每个对象都具有描述其特征的属性(用数据来表示),以及附属于它的行为(用代码来实现,称为对象的"方法")
22、 类与对象的根本区别是什么?
类是对象的抽象,对象是类的实例。类是不能直接被引用的,必须将类定义成对象方可使用,将类转换成对象。
23、 事件与方法有何不同?各自有什么特征?
常用事件:单击(click)、鼠标按键(mousedown)、激活事件(activate)、计时器(timer)
常用方法:设置焦点(setfocus)、刷新(refresh)、释放(release)、移动(move)、重置(reset)、显示(show)
24、 表单设计有几种方法,各自有什么特点?
用菜单方式,命令方式,表单向导创建表单 除使用表单设计器创建新的表单外,还可以使用表单向导创建新的表单,不过由表单向导创建的只能是数据表单。
简述“文本框”与“标签”控件的作用?
"文本框"控件主要用于表中非备注型和通用型字段值的输入、输出,以及内存变量赋值和输出等 *** 作
标签控件
"标签"控件能按一定格式在表单上显示文本信息,用来显示表单中各种说明和提示信息。一旦"标签"控件的属性、事件和方法被定义,输出信息将根据这些定义所指定的格式输出。
25、 简述“文本框”与“标签”控件的主要区别。
"文本框"控件与"标签"控件最主要的区别在于它们使用的数据源(controlsource)是不同的。
"标签"控件的数据源来自于其"Caption"属性,"文本框"控件的数据源来自于其"Control Source"属性,可以是表中的非备注型、通用型字段和内存变量。
"文本框"控件的属性主要包括:"文本框"的大小,"文本框"中输入、输出信息字体的大小、风格和颜色等。
26、 表单控件的属性如何定义?有几种方法?
表单常用属性:autocenter、 backcolor、 caption、 height、 maxbutton、 width、picture
利用属性窗口设置对象属性 利用代码窗口编辑事件过程 利用布局工具栏排列控件
27、 什么是当前记录?它在表 *** 作中有什么作用?
当前 *** 作的记录,称为当前记录,在系统内部,有一个记录指针始终指向当前记录
, 当表打开时,当前记录为第一个记录,即记录指针指向第一个记录。表文件一旦打开,表中的记录指针可以移动的,数据表中记录的定位即移动记录指针,实质上就是确定哪一个记录为当前记录。
28、 逻辑删除记录和物理删除记录有什么不同?
逻辑删除就是给暂时不使用的记录加一个删除标记。另外,对需要彻底删除的记录,也必须要先做逻辑删除后再做物理删除。
物理删除就是把无效的记录彻底从磁盘中删除掉。若要想彻底删除表中部分无效的数据,必须先做逻辑删除后再做物理删除,若要想彻底删除表中全部无效的数据,也可直接做物理删除。
29、 过程式程序的基本结构是什么?
Visual FoxPro不仅支持传统的过程式程序设计技术,还支持面向对象程序设计技术,并在程序语言方面作了强有力的扩充。
过程式编程在设计程序时,必须考虑程序代码的全部流程,而面向对象编程在设计程序时,考虑的则是如何创建对象以及创建什么样的对象。
面向对象编程是对过程式编程思想的变革,它引入了许多新的概念,提出了比过程式编程语言更高级的面向对象编程的语言,这些概念和语言使得开发应用程序变得更容易,耗时更少、效率更高。
MySQL的应用
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为 *** 作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL管理
可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web介面管理MySQL资料库。
phpMyBackupPro也是由PHP写成的,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。
另外,还有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat 等等。
Mysql存储引擎
MyISAM Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务
InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定
BDB 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
Merge 将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
Federated 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
CSV 逻辑上由逗号分割数据的存储引擎
BlackHole 黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继
另外,Mysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。
Mysql最常见的应用架构
单点(Single),适合小规模应用
复制(Replication),适合中小规模应用
集群(Cluster),适合大规模应用
mysql历史版本
MySQL公司目前在同时开发两个版本的软件,4.1版以及5.0版。4.1版本的代码已经发布并有望在8个月后公布最终代码。而5.0版本的最后产品将在6个月后发布。
MySQL4.1版本中增加了不少新的性能,包括对主键的更高速度的缓存,对子查询的更好的支持,以及应网络约会网站所要求的,基于地理信息的查询。
而其同步开发的5.0版本则把目标对准了企业用户,对于4.1版本中的所有新特性,5.0版本悉数收入囊中,并且独具以下特点:对外键的良好支持;系统自动报错机制以及对存储过程的充分支持。
Mysql中文视频教学
左光华的mysql网络数据库开发教学视频http://www.tudou.com/playlist/mysql/
Mysql6.0的alpha版于2007年初发布,新版增加了对falcon存储引擎的支持。Falcon是Mysql社区自主开发的引擎,支持ACID特性事务,支持行锁,拥有高性能的并发性。Mysql AB公司想用Falcon替代已经非常流行的InnoDB引擎,因为拥有后者技术的InnoBase已经被竞争对手Oracle所收购。
2008年1月16日,Sun Microsystems宣布收购MySQL AB,出价约10亿美元现金包括期权。 http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html
MySQL的基本命令
[ ]中的内容为可选项
--创建数据库
mysql>create database 数据库名称
--创建表
mysql>create table 表名 (
列的名字(id)类型(int(4))primary key(定义主键) auto_increment(描述 自增),
……,
);
--查看所有数据库
mysql>show databases 数据库名称
--使用某个数据库
mysql>use database 数据库名称
--查看所使用数据库下所有的表
mysql>show tables
--显示表的属性结构
mysql>desc 表名
--选择表中数据的显示
--* 代表选择所有列 ,
mysql>select * from 表名 where id=?[and name=?] [or name=?]
mysql>select id,name from 表名order by 某一列的名称 desc(降序,asc为升序)
--删除表中的数据
mysql>delete from table where id=?[or name=? (and name=?)]
--删除表
mysql>drop table
--删除数据库
mysql>drop database
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
注:[1]索引不是万能的!索引可以加快数据检索 *** 作,但会使数据修改 *** 作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止 MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。[2]另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
1. InnoDB数据表的索引
与MyISAM数据表相比,索引对InnoDB数据的重要性要大得多。在 InnoDB数据表上,索引对InnoDB数据表的重要性要在得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。"数据行级锁定"的意思是指在事务 *** 作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
2. 限制
如果WEHERE子句的查询条件里有不等号(WHERE coloum != ...),MySQL将无法使用索引。
类似地,如果WHERE子句的查询条件里使用了函数(WHERE DAY(column) = ...),MySQL也将无法使用索引。
在JOIN *** 作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。
如果WHERE子句的查询条件里使用比较 *** 作符LIKE和REGEXP,MySQL 只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKE 'abc%',MySQL将使用索引;如果查询条件是LIKE '%abc',MySQL将不使用索引。
在ORDER BY *** 作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDER BY方面也没什么作用)
如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如"0/1"或"Y/N"等值,就没有必要为它创建一个索引。
普通索引、唯一索引和主索引
1. 普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column = ...)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2. 唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料"数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是 MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
3. 主索引
在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。
4. 外键索引
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。
5. 复合索引
索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引。这种索引的特点是MySQL可以有选择地使用一个这样的索引。如果查询 *** 作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX(columnA, columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A, B, C)可以当做A或(A, B)的索引来使用,但不能当做B、C或(B, C)的索引来使用。
6. 索引的长度
在为CHAR和VARCHAR类型的数据列定义索引时,可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。这么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15个字符已经足以把搜索范围缩小到很少的几条数据记录了。
在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引jlkjljkjlj全文索引
文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索 *** 作。如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。这种检索往往以LIKE %word%的形式出现,这对MySQL来说很复杂,如果需要处理的数据量很大,响应时间就会很长。
这类场合正是全文索引(full-text index)可以大显身手的地方。在生成这种类型的索引时,MySQL将把在文本中出现的所有单词创建为一份清单,查询 *** 作将根据这份清单去检索有关的数据记录。全文索引即可以随数据表一同创建,也可以等日后有必要时再使用下面这条命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查询命令去检索那些包含着一个或多个给定单词的数据记录了。下面是这类查询命令的基本语法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST('word1', 'word2', 'word3')
上面这条命令将把column1和column2字段里有word1、word2和word3的数据记录全部查询出来。
注解:InnoDB数据表不支持全文索引。
查询和索引的优化
只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。只有当数据库里的记录超过了1000条、数据总量也超过了MySQL服务器上的内存总量时,数据库的性能测试结果才有意义。
在不确定应该在哪些数据列上创建索引的时候,人们从EXPLAIN SELECT命令那里往往可以获得一些帮助。这其实只是简单地给一条普通的SELECT命令加一个EXPLAIN关键字作为前缀而已。有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。MySQL将以表格的形式把查询的执行过程和用到的索引(如果有的话)等信息列出来。
在EXPLAIN命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。type列指定了本数据表与其它数据表之间的关联关系(JOIN)。在各种类型的关联关系当中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍--这种情况往往可以用一索引来避免)。
possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。比如说,对于一个INTEGER数据列的索引,这个字节长度将是4。如果用到了复合索引,在key_len数据列里还可以看到MySQL具体使用了它的哪些部分。作为一般规律,key_len数据列里的值越小越好(意思是更快)。
ref数据列给出了关联关系中另一个数据表里的数据列的名字。row数据列是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。row数据列里的所有数字的乘积可以让我们大致了解这个查询需要处理多少组合。
最后,extra数据列提供了与JOIN *** 作有关的更多信息,比如说,如果MySQL在执行这个查询时必须创建一个临时数据表,就会在extra列看到using temporary字样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)