8.3 MySQL简介
MySQL是一个小型关系数据库管理系统,由瑞典MySQLAB公司开发。MySQL的命运可以说是一波三折,2008年1月MySQL被SUN公司收购,2010年4月SUN公司又被甲骨文(Oracle)公司收购。由于其体积小、速度快,尤其是免费这一特点,许多中小型网站为了降低网站成本而选择了MySQL。
8.3.1 MySQL服务器的启动
数据库是数据库表的容器,而数据库服务器则是数据库的“引擎”,只有启动了“引擎”,才可以操作数据库,启动MySQL服务器的方法在“PHP入门”章节已经进行了详细的讲解,这里不再赘述。
8.3.2 连接MySQL服务器
启动MySQL服务器后,需要使用MySQL客户端成功打开一个MySQL服务器连接,才能实现与MySQL数据库之间的交互,如图8-5所示。MySQL提供了MySQL console命令窗口客户端实现与MySQL服务器之间的交互。单击系统托盘中的WampServer图标,选择“MySQL”,单击“MySQL console”,打开MySQL命令窗口MySQL console,如图8-6所示。
输入MySQL服务器root用户的密码按回车键(若密码是默认密码空字符串,直接按回车键即可)。如果密码输入正确,将出现如图8-7所示的提示界面(提示当前数据库连接的ID号为1或别的整数),此时表明MySQL命令窗口成功连接数据库服务器。
此后,就可以在MySQL命令窗口中输入MySQL命令或SQL语句完成数据库各种操作,例如在MySQL命令窗口中输入MySQL命令“show databases;”,可以查看当前的MySQL服务器上已经存在了哪些数据库,如图8-8所示。
不要忘记 “show databases;”后面的分号,且分号须使用英文分号“;”。在MySQL命令窗口中,分号代表一条MySQL命令或SQL语句的结束。
默认情况下,MySQL命令和SQL语句的关键字大小写不敏感,例如使用“SHOWDATABASES;”同样也可以查看当前MySQL服务器的数据库。
从图 8-8 中可以看到,每个 MySQL 数据库服务器可以同时承载多个数据库,默认情况下MySQL服务器承载了两个数据库:information_schema和 mysql,这两个数据库为系统数据库。系统数据库存储了 MySQL 服务器的相关信息以及用户数据库的相关信息,并为用户数据库提供服务。系统数据库由MySQL服务进程自动维护,普通用户不要修改这两个系统数据库的信息。
8.3.3 MyISAM和InnoDB存储引擎
MySQL提供了8种存储引擎,在MySQL命令窗口中输入MySQL命令“show engines;”,可以查看MySQL支持的存储引擎,如图8-9所示。从图中可以看到,当前的MySQL数据库服务器中MyISAM是默认的存储引擎(Default)。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。MyISAM 表可以被压缩,而且支持全文搜索,但 MyISAM 表不是事务安全的,而且也不支持外键(Foreign Key)。如果某个数据库表需要执行大量的select语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。
InnoDB 存储引擎是事务安全的,并且它还支持外键,如果需要一个事务安全的存储引擎,建议使用InnoDB。如果某个数据库表需要执行大量的insert或update语句,出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。对于支持事务的InnoDB表,影响速度的主要原因是autocommit选项默认是打开的,而且程序没有显式调用“begin transaction;”(开始事务)和“commit;”(提交事务),导致每条insert或update语句都自动开始事务和提交事务,严重影响了SQL语句执行效率。可以在执行SQL语句前调用“begin transaction;”,多条SQL形成一个事务,将大大提高性能。
如果当前MySQL服务器默认的存储引擎是MyISAM,创建新数据库表时,该表的存储引擎默认是MyISAM(存储引擎针对的是数据库表)。
由于本章有一些关于MySQL外键的实验,因此需要将MySQL存储引擎修改为InnoDB。可以使用 MySQL 命令“set table_type=InnoDB;”临时地将默认的存储引擎修改为 InnoDB(若要永久地修改默认的存储引擎,需要配置MySQL配置文件my.ini),然后使用MySQL命令“show variables like 'table_type';”查看当前表的存储引擎,如图8-10所示。
存储引擎的相关说明如下。
有关事务的概念请参考其他数据库专业书籍。
可以用“show create table table_name;”命令查看table_name表的存储引擎。
任何一种存储引擎都不是万能的,只有恰当地针对业务类型来选择合适的存储引擎,才能最大发挥MySQL的性能优势。
共有条评论 网友评论