1、孔祥盛孔祥盛MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之MySQLMySQL基础知识基础知识1 12 23 3 通过本章的学习,通过本章的学习,读者可以掌握一些常读者可以掌握一些常用的用的MySQL命令,从命令,从而对而对MySQL数据库进数据库进行一些简单的管理。行一些简单的管理。本章知识点较为繁本章知识点较为繁杂,希望保持一份儿杂,希望保持一份儿耐心。耐心。4 4字符集以及字符序设置字符集以及字符序设置MySQL概述概述 MySQL数据库管理数据库管理MySQL表管理表管理5 5系统变量系统变量内容一览内容一览 1 12 23 3MySQL由瑞典由瑞典MySQL AB
2、公司开发。公司开发。2008年年1月月MySQL被美国被美国的的SUN公司收购。公司收购。2009年年4月月SUN公司又被公司又被美国的甲骨文(美国的甲骨文(Oracle)公司收购。公司收购。MySQL服务的安装服务的安装MySQL的特点的特点MySQL服务的配置服务的配置45启动与停止启动与停止MySQL服务服务MySQL配置文件配置文件2.1 MySQL2.1 MySQL概述概述 6 67 7MySQLMySQL由瑞典由瑞典MySQL ABMySQL AB公公司开发。司开发。20082008年年1 1月月MySQLMySQL被美国被美国的的SUNSUN公司收购。公司收购。20092009年
3、年4 4月月SUNSUN公司又被公司又被美国的甲骨文(美国的甲骨文(OracleOracle)公司收购。公司收购。连接连接MySQLMySQL服务器关系数据库服务器关系数据库MySQLMySQL客户机客户机2.1 MySQL2.1 MySQL概述概述 MySQLMySQL是一个单进程多线程、支持多用是一个单进程多线程、支持多用户、基于客户机户、基于客户机/服务器(服务器(Client/ServerClient/Server简简称称C/SC/S)的关系数据库管理系统)的关系数据库管理系统 。性能高效性能高效 跨平台支持跨平台支持 简单易用简单易用 开源开源 支持多用户支持多用户2.1.1 MyS
4、QL2.1.1 MySQL特点特点MySQL的使用流程的使用流程 2.1.1 MySQL2.1.1 MySQL特点特点MySQL其他概念(请参看本书内容):其他概念(请参看本书内容):MySQL服务服务 MySQL服务实例服务实例 MySQL服务器服务器 端口号端口号2.1.1 MySQL2.1.1 MySQL特点特点MySQLMySQL服务的安装(请参看本书内容)。服务的安装(请参看本书内容)。建议自学,并上机操作。建议自学,并上机操作。注意:本书使用的注意:本书使用的MySQLMySQL为为5.65.6版本。版本。可以到可以到本书指定的网址下载本书指定的网址下载MySQLMySQL图形化安
5、装包图形化安装包mysql-5.6.5-m8-win32.msimysql-5.6.5-m8-win32.msi。2.1.2 MySQL2.1.2 MySQL服务的安装服务的安装MySQLMySQL服务的配置(请参看本书内容)。服务的配置(请参看本书内容)。建议自学,并上机操作。建议自学,并上机操作。配置过程中的其他知识点:配置过程中的其他知识点:OLAP OLAP与与OLTPOLTP Enable Strict Mode Enable Strict Mode选项选项 字符集字符集/字符序字符序 MySQL MySQL超级管理员超级管理员rootroot账户账户 my.ini my.ini配置
6、文件中配置文件中 2.1.3 MySQL2.1.3 MySQL服务的配置服务的配置MySQL服务的启动与停止(请参看本书内服务的启动与停止(请参看本书内容)。容)。建议自学,并上机操作。建议自学,并上机操作。2.1.4 2.1.4 启动与停止启动与停止MySQLMySQL服务服务my.ini配置文件包含了多种参数选项组,每个配置文件包含了多种参数选项组,每个参数选项组通过参数选项组通过“”指定,每个参数选项组指定,每个参数选项组可以配置多个参数信息。通常情况下,每个可以配置多个参数信息。通常情况下,每个参数遵循参数遵循“参数名参数名=参数值参数值”这种配置格式,参这种配置格式,参数名一般是小写
7、字母,参数名大小写敏感。数名一般是小写字母,参数名大小写敏感。常用的参数选项组有常用的参数选项组有“client”、“mysql”以以及及“mysqld”参数选项组参数选项组。2.1.5 2.1.5 MySQLMySQL配置文件配置文件client参数选项组参数选项组:配置了配置了MySQL自带的自带的MySQL5.6 命令行命令行窗口可以读取的参数信息窗口可以读取的参数信息。常用的参数是常用的参数是port(默认值是(默认值是3306)。修改该修改该port值会导致新打开的值会导致新打开的MySQL5.6 命令行窗口无法连接命令行窗口无法连接MySQL服务器服务器。2.1.5 2.1.5 M
8、ySQLMySQL配置文件配置文件mysql参数选项组参数选项组:配置了配置了MySQL客户机程序客户机程序mysql.exe可以可以读取的参数信息读取的参数信息。常用的参数有常用的参数有“prompt”、“default-character-set=gbk”。修改修改“mysql”参数选项组中的参数值,参数选项组中的参数值,将直接影响新打开的将直接影响新打开的MySQL客户机客户机。2.1.5 2.1.5 MySQLMySQL配置文件配置文件mysqld参数选项组参数选项组:配置了配置了MySQL服务程序服务程序mysqld.exe可以可以读取的参数信息,读取的参数信息,mysqld.exe
9、启动时,将启动时,将mysqld参数选项组的参数信息加载到服务器参数选项组的参数信息加载到服务器内存,继而生成内存,继而生成MySQL服务实例。服务实例。2.1.5 MySQL2.1.5 MySQL配置文件配置文件mysqld参数选项组参数选项组:常用的参数有常用的参数有“port”、“basedir”、“datadir”、“character-set-server”、“sql_mode”、“max_connections”以及以及“default_storage_engine”等。等。2.1.5 MySQL2.1.5 MySQL配置文件配置文件mysqld参数选项组参数选项组:修改修改“my
10、sqld”参数选项组的参数值,只参数选项组的参数值,只有重新启动有重新启动MySQL服务,将修改后的配置文服务,将修改后的配置文件参数信息加载到服务器内存后,新配置文件参数信息加载到服务器内存后,新配置文件才会在新的件才会在新的MySQL服务实例中生效。服务实例中生效。如果如果“mysqld”参数选项组的参数信息出参数选项组的参数信息出现错误,将会导致现错误,将会导致MySQL服务无法启动服务无法启动。2.1.5 MySQL2.1.5 MySQL配置文件配置文件MySQL客户机(客户机(本书使用前两个):本书使用前两个):MySQL5.6命令行窗口命令行窗口 CMD命令提示符窗口命令提示符窗口
11、 WEB浏览器(例如浏览器(例如phpMyAdmin)第三方客户机程序(例如第三方客户机程序(例如MySQL-Front、MySQL Manager for MySQL等)等)2.1.6 MySQL2.1.6 MySQL客户机客户机phpMyAdmin2.1.6 2.1.6 MySQLMySQL客户机客户机MySQL-FrontMySQL-Front2.1.6 MySQL2.1.6 MySQL客户机客户机MySQL Manager for MySQLMySQL Manager for MySQL2.1.6 MySQL2.1.6 MySQL客户机客户机2.1.6 MySQL2.1.6 MySQL
12、客户机客户机HeidiSQLHeidiSQLMySQL客户机客户机连接连接MySQL服务器服务器须提供:须提供:合法的登录主机:解决合法的登录主机:解决“from”的问题。的问题。合法的账户名以及密码:解决合法的账户名以及密码:解决“who”的问题。的问题。MySQL服务器主机名(或服务器主机名(或IP地址):解决地址):解决“to”的问题。的问题。端口号:解决端口号:解决“多卡多待多卡多待”的问题。的问题。MySQL客户机与客户机与MySQL服务器是同一台主机时,服务器是同一台主机时,主机名可以使用主机名可以使用localhost(或者(或者127.0.0.1)。)。2.1.7 2.1.7
13、连接连接MySQLMySQL服务器服务器当当MySQL客户机与客户机与MySQL服务器是同一台主机服务器是同一台主机时,打开命令提示符窗口,输入时,打开命令提示符窗口,输入mysql-h 127.0.0.1-P 3306-u root proot或者或者mysql-h localhost-P 3306-u root proot然后回车(注意然后回车(注意-p后面紧跟密码后面紧跟密码root),即可实),即可实现本地现本地MySQL客户机与本地客户机与本地MySQL服务器之间服务器之间的成功连接。的成功连接。2.1.7 2.1.7 连接连接MySQLMySQL服务器服务器2.1.7 2.1.7
14、连接连接MySQLMySQL服务器服务器1 12 23 3 MySQL MySQL由瑞典由瑞典MySQL MySQL ABAB公司开发,默认情况下公司开发,默认情况下MySQLMySQL使用的是使用的是latin1latin1字字符集。符集。由此可能导致由此可能导致MySQLMySQL数据库不够支持中文字符数据库不够支持中文字符串查询或者发生中文字符串查询或者发生中文字符串乱码等问题。串乱码等问题。MySQLMySQL字符集与字符序字符集与字符序字符集及字符序概念字符集及字符序概念MySQLMySQL的字符集转换过程的字符集转换过程45MySQLMySQL字符集的设置字符集的设置SQLSQL脚
15、本文件脚本文件2.2 2.2 字符集以及字符序设置字符集以及字符序设置 字符(字符(Character)是人类语言最小的表义符)是人类语言最小的表义符号,例如号,例如A、B等。给定一系列字符,对每个字等。给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这符赋予一个数值,用数值来代表对应的字符,这个数值就是字符的编码(个数值就是字符的编码(Character Encoding)。)。给定一系列字符并赋予对应的编码后,所有这给定一系列字符并赋予对应的编码后,所有这些些“字符和编码对字符和编码对”组成的集合就是字符集组成的集合就是字符集(Character Set)。2.2.1 2.
16、2.1 字符集及字符序概念字符集及字符序概念2.2.1 2.2.1 字符集及字符序概念字符集及字符序概念 字符序字符序(Collation)是指在同一字符集内字符之是指在同一字符集内字符之间的比较规则。一个字符集包含多种字符序,每间的比较规则。一个字符集包含多种字符序,每个字符序唯一对应一种字符集。个字符序唯一对应一种字符集。MySQL字符序命名规则是:以字符序对应的字字符序命名规则是:以字符序对应的字符集名称开头,以国家名居中(或以符集名称开头,以国家名居中(或以general居居中),以中),以ci、cs或或bin结尾。结尾。ci表示大小写不敏感,表示大小写不敏感,cs表示大小写敏感,表示
17、大小写敏感,bin表示按二进制编码值比较。表示按二进制编码值比较。2.2.1 2.2.1 字符集及字符序概念字符集及字符序概念 使用使用MySQLMySQL命令命令show character set;show character set;即可查看当前即可查看当前MySQLMySQL服务实例支持的字符集、字符服务实例支持的字符集、字符集默认的字符序以及字符集占用的最大字节长度集默认的字符序以及字符集占用的最大字节长度等信息等信息 latin1 latin1支持西欧字符、希腊字符等支持西欧字符、希腊字符等 gbk gbk支持中文简体字符支持中文简体字符 big5 big5支持中文繁体字符支持中文
18、繁体字符 utf8 utf8几乎支持世界所有国家的字符。几乎支持世界所有国家的字符。2.2.2 MySQL2.2.2 MySQL字符集及字符序字符集及字符序 使用使用MySQL命令命令show variables like character%;即可查看当前即可查看当前MySQL服务实例使用的字符集。服务实例使用的字符集。2.2.2 MySQL2.2.2 MySQL字符集及字符序字符集及字符序 character_set_clientcharacter_set_client:MySQLMySQL客户机字符集。客户机字符集。character_set_connection character_s
19、et_connection:数据通信链路字:数据通信链路字符集,当符集,当MySQLMySQL客户机向服务器发送请求时,请求客户机向服务器发送请求时,请求数据以该字符集进行编码。数据以该字符集进行编码。character_set_database character_set_database:数据库字符集。:数据库字符集。character_set_filesystem character_set_filesystem:MySQLMySQL服务器文服务器文件系统字符集,该值是固定的件系统字符集,该值是固定的binarybinary。2.2.2 MySQL2.2.2 MySQL字符集及字符序字符
20、集及字符序 character_set_results:结果集的字符集,:结果集的字符集,MySQL服务器向服务器向MySQL客户机返回执行结果时,客户机返回执行结果时,执行结果以该字符集进行编码。执行结果以该字符集进行编码。character_set_server:MySQL服务实例字符服务实例字符集。集。character_set_system:元数据:元数据(字段名、表字段名、表名、数据库名等名、数据库名等)的字符集,默认值为的字符集,默认值为utf8。2.2.2 2.2.2 MySQLMySQL字符集及字符序字符集及字符序 使用使用MySQL命令命令“show collation;”即
21、可查看即可查看当前当前MySQL服务实例支持的字符序。服务实例支持的字符序。2.2.2 2.2.2 MySQLMySQL字符集及字符序字符集及字符序2.2.3 2.2.3 MySQLMySQL字符集的转换过程字符集的转换过程 方法方法1:修改:修改my.ini配置文件,可修改配置文件,可修改MySQL默认的字符集。默认的字符集。方法方法2:MySQL提供下列提供下列MySQL命令可以命令可以“临临时地时地”修改修改MySQL“当前会话的当前会话的”字符集以及字符字符集以及字符序。序。2.2.4 MySQL2.2.4 MySQL字符集的设置字符集的设置 set character_set_cli
22、ent=gbk;set character_set_connection=gbk;set character_set_database=gbk;set character_set_results=gbk;set character_set_server=gbk;set collation_connection=gbk_chinese_ci;set collation_database=gbk_chinese_ci;set collation_server=gbk_chinese_ci;2.2.4 MySQL2.2.4 MySQL字符集的设置字符集的设置 方法3:使用MySQL命令“set na
23、mes gbk;”可以“临时一次性地临时一次性地”设置character_set_client、character_set_connection以及character_set_results的字符集为gbk 方法4:连接MySQL服务器时指定字符集 mysql-default-character-set=字符集字符集-h 服务器IP地址-u 账户名 p密码2.2.4 MySQL2.2.4 MySQL字符集的设置字符集的设置SQL基本的执行方法(两种):基本的执行方法(两种):.C:mysqlinit.sql source C:mysqlinit.sql2.2.5 SQL2.2.5 SQL脚本文
24、件脚本文件1 12 23 3 数据库是存储数据库数据库是存储数据库对象的容器。对象的容器。MySQLMySQL数据数据库的管理主要包括数据库的管理主要包括数据库的创建、选择当前操库的创建、选择当前操作的数据库、显示数据作的数据库、显示数据库结构以及删除数据库库结构以及删除数据库等操作等操作。查看数据库查看数据库创建数据库创建数据库显示数据库结构显示数据库结构4 45 5选择当前操作的数据库选择当前操作的数据库删除数据库删除数据库2.3 2.3 MySQLMySQL数据库管理数据库管理 create database choose;create database choose;成功创建成功创建c
25、hoosechoose数据库后,数据库后,数据库根目录下数据库根目录下会自动创建数据库目录。会自动创建数据库目录。2.3.1 2.3.1 创建数据库创建数据库 使用使用MySQLMySQL命令命令show databases;show databases;即可查看即可查看MySQLMySQL服务实服务实例上所有的数据库例上所有的数据库 2.3.2 2.3.2 查看数据库查看数据库 使用使用MySQLMySQL命令命令show create database choose;show create database choose;可以查看可以查看choosechoose数据库的相关信息(例如数据库
26、的相关信息(例如MySQLMySQL版本版本IDID号、默认字符集等信息)号、默认字符集等信息)。2.3.3 2.3.3 显示数据库结构显示数据库结构 执行执行“use choose;”use choose;”命令后,后续的命令后,后续的MySQLMySQL命令以及命令以及SQLSQL语句将自动操作语句将自动操作choosechoose数据库中所数据库中所有数据库对象有数据库对象。2.3.4 2.3.4 选择当前操作的数据库选择当前操作的数据库删除删除studentstudent数据库,使用数据库,使用SQLSQL语句语句drop database studentdrop database s
27、tudent;2.3.5 2.3.5 删除数据库删除数据库1 12 23 3表是数据库中最为重要表是数据库中最为重要的数据库对象的数据库对象 设置默认的存储引擎设置默认的存储引擎MyISAM和和InnoDB存储引擎存储引擎创建数据库表创建数据库表4 45 5显示表结构显示表结构表记录的管理表记录的管理2.4 MySQL2.4 MySQL表管理表管理 6 67 7表是数据库中最为重要表是数据库中最为重要的数据库对象的数据库对象 删除表删除表InnoDB表空间表空间2.4 MySQL2.4 MySQL表管理表管理 MySQLMySQL提供了插件式(提供了插件式(PluggablePluggable
28、)的存)的存储引擎,存储引擎是基于表的,同一个数据储引擎,存储引擎是基于表的,同一个数据库,不同的表,存储引擎可以不同。甚至同库,不同的表,存储引擎可以不同。甚至同一个数据库表,在不同的场合可以应用不同一个数据库表,在不同的场合可以应用不同的存储引擎。的存储引擎。2.4.1 2.4.1 MyISAMMyISAM和和InnoDBInnoDB存储引擎存储引擎 使用使用MySQL命令命令“show engines;”,即可查看即可查看MySQL服务实例支持的存储引擎。服务实例支持的存储引擎。2.4.1 2.4.1 MyISAMMyISAM和和InnoDBInnoDB存储引擎存储引擎1InnoDB存储
29、引擎的特点存储引擎的特点 支持外键(支持外键(Foreign Key)支持事务(支持事务(Transaction):如果某张表主要):如果某张表主要提供提供OLTP支持,需要执行大量的增、删、改操支持,需要执行大量的增、删、改操作(作(insert、delete、update语句),出于事务语句),出于事务安全方面的考虑,安全方面的考虑,InnoDB存储引擎是更好的选存储引擎是更好的选择。择。最新版本的最新版本的MySQL已经开始支持全文检索。已经开始支持全文检索。2.4.1 2.4.1 MyISAMMyISAM和和InnoDBInnoDB存储引擎存储引擎2MyISAM存储引擎的特点存储引擎的
30、特点 MyISAM具有检查和修复表的大多数工具。具有检查和修复表的大多数工具。MyISAM表可以被压缩表可以被压缩 MyISAM表最早支持全文索引表最早支持全文索引 但但MyISAM表不支持事务表不支持事务 但但MyISAM表不支持外键(表不支持外键(Foreign Key)。)。如果需要执行大量的如果需要执行大量的select语句,出于性能方面语句,出于性能方面的考虑,的考虑,MyISAM存储引擎是更好的选择。存储引擎是更好的选择。2.4.1 2.4.1 MyISAMMyISAM和和InnoDBInnoDB存储引擎存储引擎 MySQL5.6默认的默认的存储引擎是默认的默认的存储引擎是Inno
31、DB。使用使用MySQL命令命令set default_storage_engine=MyISAM;可以可以“临时地临时地”将将MySQL“当前会话的当前会话的”存储引存储引擎设置为擎设置为MyISAM,使用,使用MySQL命令命令“show engines;”可以查看当前可以查看当前MySQL服务实例默认的服务实例默认的存储引擎。存储引擎。2.4.2 2.4.2 设置默认的存储引擎设置默认的存储引擎 使用使用SQL语句语句“create table表名表名”即可创建即可创建一个数据库表。例如:一个数据库表。例如:use choose;set default_storage_engine=In
32、noDB;create table my_table(today datetime,name char(20);2.4.3 2.4.3 创建数据库表创建数据库表 成功创建成功创建InnoDB存储引擎的存储引擎的my_table表后,表后,MySQL服务实例会在数据库目录服务实例会在数据库目录choose中自动中自动创建一个名字为表名、后缀名为创建一个名字为表名、后缀名为frm的文件。的文件。my_table.frm。2.4.3 2.4.3 创建数据库表创建数据库表将将my_table表的存储引擎修改为表的存储引擎修改为MyISAM。use choose;alter table my_table
33、 engine=MyISAM;2.4.3 2.4.3 创建数据库表创建数据库表 使用使用MySQL命令命令“des table_name;”即可查看表名为即可查看表名为table_name的表结的表结构构。2.4.4 2.4.4 显示表结构显示表结构 使用使用MySQL命令命令“show create table table_name;”,查看名为,查看名为table_name表的详细表的详细信息。信息。2.4.4 2.4.4 显示表结构显示表结构use choose;insert into my_table values(now(),a);insert into my_table value
34、s(now(),a);insert into my_table values(now(),NULL);insert into my_table values(now(),);select*from my_table;2.4.5 2.4.5 表记录的管理表记录的管理任务布置任务布置1:完成本书场景描述:完成本书场景描述1:MyISAM表记表记录的管理的任务要求。录的管理的任务要求。任务布置任务布置2:完成本书场景描述:完成本书场景描述2:InnoDB表记录表记录的管理的任务要求。的管理的任务要求。2.4.5 2.4.5 表记录的管理表记录的管理 1.共享表空间:共享表空间:MySQL服务实例承载
35、的所有数服务实例承载的所有数据库的所有据库的所有InnoDB表的数据信息、索引信息、各表的数据信息、索引信息、各种元数据信息以及事务的回滚(种元数据信息以及事务的回滚(UNDO)信息,)信息,全部存放在共享表空间文件中。全部存放在共享表空间文件中。默认情况下该文件位于数据库根目录下,文件默认情况下该文件位于数据库根目录下,文件名是名是ibdata1,且文件的初始大小为,且文件的初始大小为10M。可以使。可以使用用MySQL命令命令“show variables like innodb_data_file_path;”查看该文件的的属性。查看该文件的的属性。2.4.6 InnoDB2.4.6 I
36、nnoDB表空间表空间2.4.6 2.4.6 InnoDBInnoDB表空间表空间 2.独享表空间:独享表空间:如果将全局系统变量如果将全局系统变量innodb_file_per_table的值设置为的值设置为ON(innodb_file_per_table的默认值为的默认值为OFF),那么),那么之后再创建之后再创建InnoDB存储引擎的新表,这些表的数存储引擎的新表,这些表的数据信息、索引信息都将保存到独享表空间文件。据信息、索引信息都将保存到独享表空间文件。2.4.6 InnoDB2.4.6 InnoDB表空间表空间独享表空独享表空间的设置间的设置2.4.6 InnoDB2.4.6 In
37、noDB表空间表空间use choose;alter table my_table engine=InnoDB;create table second_table(today datetime,name char(20);2.4.6 InnoDB2.4.6 InnoDB表空间表空间2.4.6 InnoDB2.4.6 InnoDB表空间表空间任务布置任务布置3:完成本书场景描述:完成本书场景描述3的任务要求。的任务要求。2.4.6 InnoDB2.4.6 InnoDB表空间表空间 使用使用SQL语句语句drop table table_name;即可删除名为即可删除名为table_name的表。
38、的表。删除表后,删除表后,MySQL服务实例会自动删除该表结服务实例会自动删除该表结构定义文件(例如构定义文件(例如second_table.frm文件),以文件),以及数据、索引信息。该命令慎用!及数据、索引信息。该命令慎用!2.4.7 2.4.7 删除表删除表1 12 23 3MySQL数据库中,变数据库中,变量分为系统变量(以量分为系统变量(以开头)以及用户开头)以及用户自定义变量(以自定义变量(以开开头)。头)。查看系统变量的值查看系统变量的值全局系统变量与会话系统变量全局系统变量与会话系统变量设置系统变量的值设置系统变量的值2.5 2.5 系统变量系统变量 每一个每一个MySQL客户
39、机成功连接客户机成功连接MySQL服服务器后,都会产生与之对应的会话。务器后,都会产生与之对应的会话。会话期间,会话期间,MySQL服务实例会在服务实例会在MySQL服务器内存中生成与该会话对应的会话系统服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初始值是全局系变量,这些会话系统变量的初始值是全局系统变量值的拷贝。统变量值的拷贝。2.5.1 2.5.1 全局系统变量与会话系统变量全局系统变量与会话系统变量 由于各会话在会话期间所做的操作不尽相由于各会话在会话期间所做的操作不尽相同,为了标记各个会话,会话系统变量又新同,为了标记各个会话,会话系统变量又新增了增了12个变量。个变
40、量。2.5.1 2.5.1 全局系统变量与会话系统变量全局系统变量与会话系统变量2.5.1 2.5.1 全局系统变量与会话系统变量全局系统变量与会话系统变量 使用使用“show global variables;”show global variables;”命令即命令即可查看可查看MySQLMySQL服务器内存中所有的全局系统变服务器内存中所有的全局系统变量信息(有量信息(有393393项之多)。项之多)。使用使用“show session variables;”show session variables;”命令命令即可查看与当前会话相关的所有会话系统变即可查看与当前会话相关的所有会话系统
41、变量以及所有的全局系统变量(有量以及所有的全局系统变量(有405405项之多),项之多),此处此处sessionsession关键字可以省略。关键字可以省略。2.5.2 2.5.2 查看系统变量的值查看系统变量的值 MySQLMySQL中有一些系统变量仅仅是全局系统变量,中有一些系统变量仅仅是全局系统变量,例如例如 innodb_data_file_pathinnodb_data_file_path。show global variables like show global variables like innodb_data_file_pathinnodb_data_file_path;s
42、how session variables like show session variables like innodb_data_file_pathinnodb_data_file_path;show variables like show variables like innodb_data_file_pathinnodb_data_file_path;2.5.2 2.5.2 查看系统变量的值查看系统变量的值 MySQLMySQL中有一些系统变量仅仅是会话系统变量,中有一些系统变量仅仅是会话系统变量,例如例如MySQLMySQL连接连接IDID会话系统变量会话系统变量pseudo_thr
43、ead_idpseudo_thread_id。show session variables like show session variables like pseudo_thread_idpseudo_thread_id;show variables like show variables like pseudo_thread_idpseudo_thread_id;2.5.2 2.5.2 查看系统变量的值查看系统变量的值 MySQL MySQL中有一些系统变量既是全局系统变量,中有一些系统变量既是全局系统变量,又 是 会 话 系 统 变 量,例 如 系 统 变 量又 是 会 话 系 统 变
44、量,例 如 系 统 变 量character_set_client character_set_client 既是全局系统变量,又既是全局系统变量,又是会话系统变量。是会话系统变量。2.5.2 2.5.2 查看系统变量的值查看系统变量的值 此时查看会话系统变量的方法:此时查看会话系统变量的方法:s h o w s e s s i o n v a r i a b l e s l i k e s h o w s e s s i o n v a r i a b l e s l i k e character_set_client;character_set_client;s h o w v a r
45、i a b l e s l i k e s h o w v a r i a b l e s l i k e character_set_client;character_set_client;此时查看全局系统变量的方法:此时查看全局系统变量的方法:s h o w g l o b a l v a r i a b l e s l i k e s h o w g l o b a l v a r i a b l e s l i k e character_set_client;character_set_client;2.5.2 2.5.2 查看系统变量的值查看系统变量的值作为作为MySQLMySQL
46、编码规范,编码规范,MySQLMySQL中的系统变量以两个中的系统变量以两个“”开头。开头。global global仅仅用于标记全局系统变量;仅仅用于标记全局系统变量;session session仅仅用于标记会话系统变量;仅仅用于标记会话系统变量;首先标记会话系统变量,如果会话系统首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。变量不存在,则标记全局系统变量。2.5.2 2.5.2 查看系统变量的值查看系统变量的值任务布置任务布置4 4:完成本书场景描述:完成本书场景描述4 4的任务要求。的任务要求。2.5.2 2.5.2 查看系统变量的值查看系统变量的值方法一:修改方法
47、一:修改MySQLMySQL源代码,然后对源代码,然后对MySQLMySQL源代码源代码重新编译(该方法适用于重新编译(该方法适用于MySQLMySQL高级用户,这里高级用户,这里不作阐述)。不作阐述)。方法二:最为简单的方法是通过修改方法二:最为简单的方法是通过修改MySQLMySQL配置配置文件,继而修改文件,继而修改MySQLMySQL系统变量的值(系统变量的值(faifai方法需方法需要重启要重启MySQLMySQL服务)。服务)。方法三:在方法三:在MySQLMySQL服务运行期间,使用服务运行期间,使用“set”set”命命令重新设置系统变量的值。令重新设置系统变量的值。2.5.2
48、 2.5.2 查看系统变量的值查看系统变量的值 设置全局系统变量的值的方法:设置全局系统变量的值的方法:set global.innodb_file_per_table=set global.innodb_file_per_table=default;default;set global.innodb_file_per_table=ON;set global.innodb_file_per_table=ON;set global innodb_file_per_table=ON;set global innodb_file_per_table=ON;2.5.2 2.5.2 查看系统变量的值查看
49、系统变量的值 设置会话系统变量的值的方法:设置会话系统变量的值的方法:set set session.pseudo_thread_idsession.pseudo_thread_id=5;=5;set session set session pseudo_thread_idpseudo_thread_id=5;=5;set set pseudo_thread_idpseudo_thread_id=5;=5;set set pseudo_thread_idpseudo_thread_id=5;=5;2.5.2 2.5.2 查看系统变量的值查看系统变量的值 MySQLMySQL中还有一些特殊的全局
50、系统变量(例如中还有一些特殊的全局系统变量(例如log_binlog_bin、tmpdirtmpdir、versionversion、datadirdatadir),在),在MySQLMySQL服务实例运行期间它们的值不能动态修改,服务实例运行期间它们的值不能动态修改,不能使用不能使用“set”set”命令进行重新设置,这种变量称命令进行重新设置,这种变量称为静态变量。为静态变量。数据库管理员可以使用方法一或者方法二对数据库管理员可以使用方法一或者方法二对静态变量的值重新设置。静态变量的值重新设置。2.5.2 2.5.2 查看系统变量的值查看系统变量的值步骤步骤1:准备工作:准备工作方法一:停