1.5 MySQL基本操作

在1.4节中详细介绍了MySQL的安装过程。安装过程结束之后的第一件事就是对安装MySQL是否成功进行验证。通常情况下,如果安装过程中没有出现错误提示,即可以认为这次是安装成功的。本节将介绍最简单的验证安装的方法,以及如何启动和配置服务器。

1.5.1 启动和登录MySQL

MySQL数据库分为客户端和服务器端,只有服务器端服务开启以后,才可以通过客户端登录MySQL数据库。下面首先介绍启动MySQL服务器的方法。

【范例1】

默认情况下MySQL安装完成之后会自动启动MySQL服务。也可以通过命令启动,命令语法如下:

net start|stop mysql服务名称

上述命令中的start和stop分别表示启动和停止,只能使用其中之一;mysql服务名称是指安装MySQL时指定的名称,默认值是MySQL56。

启动MySQL服务命令如下:

net start MySQL56

停止MySQL服务命令如下:

net stop MySQL56

除了命令方式之外,还可以打开系统的【服务】管理界面对MySQL服务进行管理。如图1-16所示为右击MySQL56服务名称弹出快捷菜单的效果,在这里可以启动、停止、暂停、重新启动和查看服务的属性。

图1-16 管理MySQL56服务

从图1-16中可以看到,当前MySQL服务处于启动状态,启动类型是随Windows系统自动启动,登录方式为网络服务。

【范例2】

MySQL服务启动以后,开发者可以通过客户端来登录MySQL数据库。登录MySQL数据库有两种方式:一种是使用命令,另一种是使用MySQL Workbench工具。

使用命令登录到MySQL服务器的方法是从系统的【开始】菜单中找到MySQL的程序组,然后展开MySQL Server 5.6列表选择MySQL 5.6 Command Line Client – Unicode工具,如图1-17所示。此时会进入Windows的命令提示符窗口,窗口标题为“MySQL 5.6 Command Line Client – Unicode”。在窗口中输入安装MySQL时指定的密码,按下回车键即可进行连接,如果连接成功将显示欢迎信息,并显示当前MySQL的版本号,同时显示有mysql>提示符表示进入命令行状态,如图1-18所示。

图1-17 MySQL程序组

图1-18 登录到MySQL数据库

下面对图1-18中所显示的重要信息进行说明。

(1)Commands end with ; or \g:说明MySQL控制台下的命令是以分号(;)或“\g”来结束的,遇到这个结束符就开始执行命令。

(2)Your MySQL connection id is 2:id表示MySQL数据库的连接次数,如果数据库是新安装,这是第一次登录。如果安装成功后已经登录过,将会显示其他的数字。

(3)Server version:Server version之后的内容表示当前数据库版本,这里安装的版本是5.6.19 MySQL Community Server (GPL)。

(4)Type 'help;' or '\h' for help:表示输入“help;”或者“\h”可以看到帮助信息。

(5)Type '\c' to clear the current input statement:表示遇到“\c”就清除当前输入语句。

提示

图1-18这种方式实际上是调用的mysql命令。因此,读者也可在命令行下输入mysql命令来登录到MySQL服务器。

如果在如图1-17所示MySQL程序组中选择MySQL Workbench 6.1 CE选项,在弹出的窗口中同样可以登录到MySQL。方法是:在MySQL Workbench窗口中选择Database|Connect to Database命令,打开Setup New Connection对话框来设置连接信息。

在Connection Name文本框中为连接设置一个别名,这里为“MySQL Default Connection”。然后在Connection Method列表中选择连接MySQL采用的方式,默认值为TCP/IP。Hostname文本框中是MySQL数据库的IP或者机器名,默认的127.0.0.1表示本机,同时在Port文本框中需要指定对应的端口号,默认为3306。Username文本框用于设置登录MySQL使用的用户名,默认为root;单击Store in Vault按钮在弹出的对话框中输入登录密码,如图1-19所示。

图1-19 设置连接信息

设置完成之后单击Test Connection按钮对连接进行测试,如果成功将会弹出成功对话框,最后单击OK按钮保存并返回主窗口。此时主窗口会出现名为MySQL Default Connection的连接区域,双击该区域即可建立连接并打开同名的选项卡。在该选项卡下可以对MySQL的所有方面进行管理,这里也是图形界面的主要工作区域,例如,从左侧的Navigator窗格中单击Server Status链接可以查看当前MySQL服务器的状态信息,如图1-20所示。

图1-20 MySQL Workbench工具查看MySQL信息

1.5.2 常用命令

登录MySQL数据库后就可以执行一些语句查看操作结果了。在MySQL Workbench工具中通过鼠标操作可以很直观地查看所需信息,非常简单。因此,本节以客户端为例讲解常用的命令。

【范例3】

在“mysql>”提示符下直接输入SELECT语句即可完成简单的查询操作。例如,下面的命令显示了MySQL服务器的版本号和当前日期。这里要注意的是,MySQL命令不区分大小写。

mysql> SELECT VERSION(),CURRENT_DATE();
    +-----------------+--------------------------+
    | VERSION()  | CURRENT_DATE() |
    +-----------------+--------------------------+
    | 5.6.19       | 2014-07-07        |
    +-----------------+--------------------------+

【范例4】

如果一条SQL语句比较长,可将其分成多行来输入,并在最后输入分号“;”来作为结束。这种方法需要注意SQL语句中的逗号与结束符分号之间的用法。例如,如下代码所示:

mysql> SELECT
        -> USER()
        -> ,
        -> NOW()
        -> ;
    +--------------------+-----------------------------+
    | USER()       | NOW()              |
    +--------------------+-----------------------------+
    | root@localhost  | 2014-07-07 15:18:30  |
    +--------------------+-----------------------------+

【范例5】

如果用户需要一次执行多条语句,可以直接以分号分隔每个语句,如下所示:

mysql> SELECT USER();SELECT NOW();
    +---------------------------+
    | USER()            |
    +---------------------------+
    | root@localhost      |
    +---------------------------+
    
    +---------------------------+
    | NOW()            |
    +---------------------------+
    | 2014-07-07 15:25:10  |
    +---------------------------+

【范例6】

使用SHOW DATABASES语句可以显示当前MySQL服务器上已经存在的数据库列表。

mysql> SHOW DATABASES;
    +------------------------------+
    | Database             |
    +------------------------------+
    | information_schema    |
    | mysql                |
    | performance_schema    |
    | sakila                |
    | test                  |
    | world                |
    +------------------------------+

【范例7】

使用“USE 数据库名”语句可以打开指定的数据库。使用“SELECT DATABASE()”语句可显示当前所在的数据库。

mysql> USE world;
    Database changed
    mysql> SELECT DATABASE();
    +------------------+
    | DATABASE() |
    +------------------+
    | world        |
    +------------------+

【范例8】

如果要查看当前数据库中所有数据表的名称,可以使用“SHOW TABLES”语句。例如,要查看world数据库下所有数据表名称,命令如下:

mysql> SHOW TABLES;
    +-----------------------+
    | Tables_in_world  |
    +-----------------------+
    | city             |
    | country          |
    | countrylanguage   |
    +-----------------------+

【范例9】

当命令输入错误而又无法改变(多行语句情况下)时,只需在输入分号前输入“\c”即可取消这条命令。示例如下:

mysql> select
        -> now()
        -> c
        -> \c

1.5.3 MySQL配置文件

MySQL数据库安装完成以后,可能会根据实际情况更改MySQL的某些配置。一般可以通过两种方式进行更改:一种是通过配置向导进行更改;另一种是通过手动方式更改。

MySQL的配置文件为my.ini,默认保存在安装MySQL时指定的Data Path目录下。在MySQL的安装目录有一个my-default.ini文件里面存放的是一些默认参考配置信息,而数据库真正使用的是my.ini文件。因此,只要修改my.ini中的内容就可以达到更改配置的目的。my.ini文件中包含大量的内容,下面介绍该文件时会去掉大量的注释内容,然后从客户端配置和服务器端配置进行介绍。

提示

如果读者安装时选择的配置不一样,那么配置文件就会稍有不同。通常情况下,读者经常修改的是默认字符集、默认存储引擎和端口等信息,其他参数比较复杂,一般不进行修改。另外,每次修改参数后,必须重新启动MySQL服务才会有效。

1.客户端配置

客户端的配置内容比较简单,port参数表示MySQL数据库的端口,默认端口是3306。default-character-set参数是客户端的默认字符集,默认设置是utf8。如果想要更改客户端的设置内容,可以直接在my.ini文件中进行更改。部分内容如下。

# Other default tuning values
    # MySQL Server Instance Configuration File
    # ------------------------------------------------------------------
    # Generated by the MySQL Server Instance Configuration Wizard
    # 该文件是使用MySQL配置向导生成的
    # CLIENT SECTION
    # ------------------------------------------------------------------
    # 下面将会是客户端的各个参数的介绍。[client]和[mysql]都是客户端的。
    #
    [client]
    no-beep
    
    # pipe
    # socket=mysql
    port=3306
    
    [mysql]
    default-character-set=utf8

2.服务器端配置

与客户端内容相比,服务器端的配置要复杂得多,自动生成的文件内容是通过英文解释说明的,如下通过中文对相关的内容进行了解释说明。

# SERVER SECTION
    # ------------------------------------------------------------------
    # 下面是服务器端各个参数的介绍。[mysqlId]表示下面的内容属于服务器端。
    # server_type=3
    [mysqld]
    # port参数表示MySQL数据库的端口,默认端口是3306。
    port=3306
    # basedir参数表示MySQL安装路径,此处显示的安装路径为F磁盘。
    # basedir="F:/Program Files/MySQL/MySQL Server 5.6/"
    # datadir参数表示MySQL数据文件的存储位置。
    datadir="F:/Documents and Settings/All Users/Application Data/MySQL/
    MySQL Server 5.6/data\"
    # character-set-server参数表示默认的字符集,这个字符集是服务器端的。
    character-set-server=utf8
    # default-storage-engine参数表示默认的存储引擎,存储引擎表示数据的存储方式。
    default-storage-engine=INNODB
    # sql-mode参数表示SQL模式的参数,通过这个参数,可以设置检验SQL语句的严格程度。
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    # plugin-load参数表示Windows身份验证
    # plugin-load=authentication_windows.dll
    # 通用查询日志和慢查询日志
    log-output=NONE
    general-log=0
    general_log_file="WS.log"
    slow-query-log=0
    slow_query_log_file="WS-slow.log"
    long_query_time=10
    # 二进制日志
    # log-bin
    # 错误日志
    log-error="WS.err"
    # max_connections参数表示允许同时访问MySQL服务器的最大连接数。其中一个连接将保
    # 留作为管理员登录。
    max_connections=100
    # query_cache_size参数表示查询时的缓存大小。缓存中可以存储以前的SELECT语句查询
    # 过的信息,遇到相同的查询时,可以直接从缓存中取出结果。
    query_cache_size=1M
    # table_open_cache参数表示所有进程打开表的总数。
    table_open_cache=2000
    # tmp_table_size参数表示内存中临时表的最大值。
    tmp_table_size=5M
    # thread_cache_size参数表示保留客户端线程的缓存。
    thread_cache_size=9

3.InnoDB存储引擎使用的参数

InnoDB是MySQL 5.6.19数据库的默认存储引擎,在my.ini文件中还包含InnoDB和MyISAM存储引擎使用的参数。如下文件内容所示为InnoDB存储引擎的一些常用参数。

#*** INNODB Specific options ***
    # InnoDB_data_home_dir=0.0
    # InnoDB_additional_mem_pool_size参数表示附加的内存池,用来存储InnoDB表的内容。
    InnoDB_additional_mem_pool_size=2M
    # InnoDB_flush_log_at_trx_commit参数设置提交日志的时机。
    InnoDB_flush_log_at_trx_commit=1
    # InnoDB_log_buffer_size参数表示用来存储日志数据的缓冲区的大小。
    InnoDB_log_buffer_size=1M
    # InnoDB_buffer_pool_size表示缓存的大小。InnoDB使用一个缓冲池来保存索引和原始数据。
    InnoDB_buffer_pool_size=8M
    # InnoDB_log_file_size参数表示日志文件的大小。
    InnoDB_log_file_size=48M
    # InnoDB_thread_concurrency参数表示在InnoDB存储引擎允许的线程最大数。
    InnoDB_thread_concurrency=8

提示

本节仅列出了my.ini文件中三个方面的常用配置内容,该文件中的实际内容非常复杂,读者可以打开熟悉一下,这里不再详述。