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 特定方式来执行。
众所周知, MySQL的驱动表与被驱动表是优化器自动优化选择的结果 (与表连接的前后顺序等无关),我们可以用explain执行计划来知晓:
如上所示,前面一行t1是驱动表,后面一行t2是被驱动表。那么驱动表与被驱动表的选择是否有规律可循呢?下面是百度搜索两个主流的博文对驱动表与被驱动表的阐释:
1. MySQL连接查询驱动表被驱动表以及性能优化 - 阿伟~ - 博客园 博文A 主要结论:
2. mysql驱动表与被驱动表及join优化_java小小小黑的博客-CSDN博客_mysql驱动表和被驱动表 博文B 其主要结论:
两个帖子的结论是都差不多,而且还给出了例子来佐证。那么网上的结论是否权威?是否有普遍性?是否存在缺陷?
让我们来一起打破砂锅问到底。下面有两张表结构一模一样的表t1,t2:其中t1 100条数据,t2 1000条数据;t1(t2)结构如下:
按照上面博文的结论,left join左边是t2表,应该是驱动表。我们查看下结果:
与 博文B 中观点1相违背(同理观点2也违背),与实际不符,但究竟这是为什么呢?
下面发一张MySQL的执行过程(来源于《MySQL实战45讲》中01讲【一条SQL查询语句是如何执行的】)
so die si ne,原来sql执行的过程是这样呀。等等,不对,这跟刚才SQL又有什么关系,上面left join中t2表还是左边的呀。
我们知道MySQL高版本的性能越来越好,它是不断进行优化迭代的。远古的mysql版本可能还需要人工把小表放在前面,大表放在后面等这些需要人工调优的经验早就已经被解决了。也就是说我们写的语句,MySQL为了追求更好的效率,它在执行器执行前已经帮我们优化了。那么实际优化后的sql如何查看呢?用show warning命令:
其中Message就是优化后实际执行的sql语句,格式化后如下:
优化后left join左连接变成了内连接(inner) join。所以用优化后的sql看,表t1是小表所以作为驱动表,与实际结果相符。
left join 竟然优化成了join,太神奇了,但这是为什么呢?原因在于mysql中null与任何值做等值或者不等值比较的时候都是null,即使是select null=null 也是null。这样where 条件t1.a=t2.a查询条件不会包含t2.a为NULL的行,实际效果其实跟join一样,被优化器智能的优化了。
我们直接看执行计划看实际结果吧:
结果显示t2是驱动表,t1是被驱动表。t2是1000条数据按理说是大表应该是被驱动表,与 博文A , 博文B 的结论又不一致了。
《MySQL实战45讲》中34讲【到底可不可以使用join】已经讲的很透彻了,很深入了,我就不在这里献丑了。啰嗦几句大概就是驱动表是全表扫描不走索引,所以选被驱动表t1可以走索引,不会全表扫描,减少IO次数,性能高。里面对大表小表的总结,简直是精髓,特意在此再次着重强调:
在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与join的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表。
按照上面分析,我们先独立思考下MySQL会选择哪张表作为驱动表呢?
表t1,t2在字段a上都有索引不会全表扫描,其中t1.a=5条件过滤后只有一条,很显然嘛,t1数据量少是小表,肯定是驱动表,错不了,再说了前面的红色粗体已经强调了,不会有错的。
有冇搞错?事实又被打脸了。还记得在开篇我们说过的mysql优化器会对sql语句进行优化的吗?下面我们看下执行计划与优化的sql语句:
格式化后的优化SQL如下:
优化后两表t1,t2都走索引,并且都只有一条结果返回,因此都只会扫描一行,数据量一样,所以谁在前面谁就是驱动表,也就是上面sql中表t2。一切都释然,豁然开通!
回头再仔细想想,高,实在是高!仔细深思之后MySQL优化后的句子真让人猛拍大腿。高明之处在于:
1. 本来join连接是个M*N的嵌套循环,优化后变成了M+N的判断,两表不再嵌套判断了。
2. 优化后,两表没有多大必然联系,只需把两表的结果集拼接即可,互不干扰。如果mysql未来可以多线程查询,岂不十分快哉!
小伙伴们还记得我们在上一章 MySQL索引初探 中编码类型不一致发生隐式转换时有时候走索引,有时候索引又失效的问题吗?下面我们选取有代表性的一条记录来分析:
其中表demo_test总共有640条数据,demo_test_ass有3条数据。显然经过过滤条件t.rid>1完成后demo_test_ass数据量小,应该作为驱动表。虽然test.c_utf8mb4 = t.c2两字段连接中发生了t.c2字段发生隐式转换,但是实际上并不影响被驱动表test上的c_utf8mb4索引。
好了,本章到此结束,让我们一起 总结一下MySQL驱动表与被驱动表的选取原则 :
หน ง 同等条件,优先选取有索引的表作为被驱动表。 在此介绍一下什么叫同等条件,比如上面的②中的语句。 两表没有其他额外的过滤条件,因此选关联字段有索引的t1作为被驱动表。但是如果加了条件(and t1.id=3),此时t1数据量少,就选取了t2作为被驱动表。
สอง MySQL选择驱动表与被驱动表是基于优化器优化后的,小表是驱动表,大表是被驱动表。 基于优化器优化后开篇的 博文A与B 结论成立。
当然这都是我一家之言,并不是官方结论,目前暂未找到官方确切对于驱动表与被驱动表的解释,请大家踊跃拍砖!
Mysql基础教程
· 如何利用存储过程和触发器来管理数据[9月13日]· 关于MySQL编码问题的经验总结[8月23日]· SQL Server 2005 CE基础概要[8月17日]· SQL Server执行SQL语句时内存占用特点[7月31日]· 解析SQLServer事务日志压缩与删除的方法[7月30日]· sql2005安装sp1后报更新出错的处理方法[7月30日]· SQL Server与Oracle、DB2三种数据库比较[7月25日]· ORACLE 常用的SQL语法和数据对象[7月16日]· 打造SQL Server2000的安全策略[7月10日]· 快速掌握MySQL数据库中SELECT语句[6月22日]· 数据库新手入门之MYSQL出错代码列表[6月20日]· MySQL 5.0新特性教程 存储过程:第二讲[6月17日]· MySQL 5.0新特性教程 存储过程:第一讲[6月16日]· 如何在MySQL数据库中直接储存图片[6月16日]· SQL Server 查询分析器快捷键集合[6月14日]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)