MySQL入门到精通-基础篇(一 MySQL环境配置) SQL之SELECT使用篇第03章基本的SELECT语句第04章运算符第05章排序与分页第06章多表查询第07章单行函数第08章聚合函数第09章子查询1. MySQL的登录1.1 服务的启动与停止MySQL安装完毕之后需要启动服务器进程不然客户端无法连接数据库。在前面的配置过程中已经将MySQL安装为Windows服务并且勾选当Windows启动、停止时MySQL也自动启动、停止。方式1使用图形界面工具步骤1打开windows服务方式1计算机点击鼠标右键→ 管理点击→ 服务和应用程序点击→ 服务点击方式2控制面板点击→ 系统和安全点击→ 管理工具点击→ 服务点击方式3任务栏点击鼠标右键→ 启动任务管理器点击→ 服务点击方式4单击【开始】菜单在搜索框中输入“services.msc”按Enter键确认步骤2找到MySQL80点击鼠标右键→ 启动或停止点击​​​​​​​​​​方式2使用命令行工具# 启动 MySQL 服务命令netstartMySQL服务名# 停止 MySQL 服务命令net stop MySQL服务名说明start和stop后面的服务名应与之前配置时指定的服务名一致。如果当你输入命令后提示“拒绝服务”请以系统管理员身份打开命令提示符界面重新尝试。1.2 自带客户端的登录与退出当MySQL服务启动完成后便可以通过客户端来登录MySQL数据库。注意确认服务是开启的。登录方式1MySQL自带客户端开始菜单 → 所有程序 → MySQL → MySQL 8.0 Command Line Client说明仅限于root用户登录方式2windows命令行格式mysql -h 主机名 -P 端口号 -u 用户名 -p密码举例mysql-h localhost-P3306-u root-pabc123# 这里我设置的root用户的密码是abc123注意1-p与密码之间不能有空格其他参数名与参数值之间可以有空格也可以没有空格。如mysql-hlocalhost-P3306-uroot-pabc1232密码建议在下一行输入保证安全mysql-h localhost-P3306-u root-p Enter password:****3客户端和服务器在同一台机器上所以输入localhost或者IP地址127.0.0.1。同时因为是连接本机-hlocalhost就可以省略如果端口号没有修改-P3306也可以省略简写成mysql-u root-p Enter password:****连接成功后有关于MySQL Server服务版本的信息还有第几次连接的id标识。也可以在命令行通过以下方式获取MySQL Server服务版本的信息c:\ mysql -Vc:\ mysql --version或登录后通过以下方式查看当前版本信息mysql select version();退出登录exit 或 quit2. MySQL演示使用2.1 MySQL的使用演示1、查看所有的数据库showdatabases;“information_schema”是 MySQL 系统自带的数据库主要保存 MySQL 数据库服务器的系统信息比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹等等“performance_schema”是 MySQL 系统自带的数据库可以用来监控 MySQL 的各类性能指标。“sys”数据库是 MySQL 系统自带的数据库主要作用是以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标帮助系统管理员和开发人员监控 MySQL 的技术性能。“mysql”数据库保存了 MySQL 数据库服务器运行时需要的系统信息比如数据文件夹、当前使用的字符集、约束检查信息等等为什么 Workbench 里面我们只能看到“demo”和“sys”这 2 个数据库呢这是因为Workbench 是图形化的管理工具主要面向开发人 员“demo”和“sys”这 2 个数据库已经够用了。如果有特殊需求比如需要监控 MySQL 数据库各项性能指标、直接操作 MySQL 数据库系统文件等可以由 DBA 通过 SQL 语句查看其它的系统数据库。2、创建自己的数据库createdatabase数据库名;#创建atguigudb数据库该名称不能与已经存在的数据库重名。createdatabaseatguigudb;3、使用自己的数据库use数据库名;#使用atguigudb数据库useatguigudb;说明如果没有使用use语句后面针对数据库的操作也没有加“数据名”的限定那么会报“ERROR 1046 (3D000): No database selected”没有选择数据库使用完use语句之后如果接下来的SQL都是针对一个数据库操作的那就不用重复use了如果要针对另一个数据库操作那么要重新use。4、查看某个库的所有表格showtables;#要求前面有use语句showtablesfrom数据库名;5、创建新的表格createtable表名称(字段名 数据类型,字段名 数据类型);说明如果是最后一个字段后面就用加逗号因为逗号的作用是分割每个字段。#创建学生表createtablestudent(idint,namevarchar(20)#说名字最长不超过20个字符);6、查看一个表的数据select*from数据库表名称;#查看学生表的数据select*fromstudent;7、添加一条记录insertinto表名称values(值列表);#添加两条记录到student表中insertintostudentvalues(1,张三);insertintostudentvalues(2,李四);报错mysqlinsertintostudentvalues(1,张三);ERROR1366(HY000): Incorrect stringvalue:\xD5\xC5\xC8\xFDforcolumnnameatrow1mysqlinsertintostudentvalues(2,李四);ERROR1366(HY000): Incorrect stringvalue:\xC0\xEE\xCB\xC4forcolumnnameatrow1mysqlshowcreatetablestudent;字符集的问题。8、查看表的创建信息showcreatetable表名称\G#查看student表的详细创建信息showcreatetablestudent\G#结果如下***************************1.row***************************Table: studentCreateTable:CREATETABLEstudent(idint(11)DEFAULTNULL,namevarchar(20)DEFAULTNULL)ENGINEInnoDBDEFAULTCHARSETlatin11rowinset(0.00sec)上面的结果显示student的表格的默认字符集是“latin1”不支持中文。9、查看数据库的创建信息showcreatedatabase数据库名\G#查看atguigudb数据库的详细创建信息showcreatedatabaseatguigudb\G#结果如下***************************1.row***************************Database: atguigudbCreateDatabase:CREATEDATABASEatguigudb/*!40100 DEFAULT CHARACTER SET latin1 */1rowinset(0.00sec)上面的结果显示atguigudb数据库也不支持中文字符集默认是latin1。10、删除表格droptable表名称;#删除学生表droptablestudent;11、删除数据库dropdatabase数据库名;#删除atguigudb数据库dropdatabaseatguigudb;2.2 MySQL的编码设置MySQL5.7中问题再现命令行操作sql乱码问题mysqlINSERTINTOt_stuVALUES(1,张三,男);ERROR1366(HY000): Incorrect stringvalue:\xD5\xC5\xC8\xFDforcolumnsnameatrow1问题解决步骤1查看编码命令show variables like character_%; show variables like collation_%;步骤2修改mysql的数据目录下的my.ini配置文件[mysql] #大概在63行左右在其下添加 ... default-character-setutf8 #默认字符集 [mysqld] # 大概在76行左右在其下添加 ... character-set-serverutf8 collation-serverutf8_general_ci注意建议修改配置文件使用notepad等高级文本编辑器使用记事本等软件打开修改后可能会导致文件编码修改为“含BOM头”的编码从而服务重启失败。步骤3重启服务步骤4查看编码命令showvariableslikecharacter_%;showvariableslikecollation_%;如果是以上配置就说明对了。接着我们就可以新创建数据库、新创建数据表接着添加包含中文的数据了。MySQL8.0中在MySQL 8.0版本之前默认字符集为latin1utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码就会出现乱码的问题。从MySQL 8.0开始数据库的默认编码改为utf8mb4从而避免了上述的乱码问题。3. MySQL目录结构与源码3.1 主要目录结构MySQL的目录结构说明bin目录所有MySQL的可执行文件。如mysql.exeMySQLInstanceConfig.exe数据库的配置向导在安装时出现的内容data目录系统数据库所在的目录my.ini文件MySQL的主要配置文件c:\ProgramData\MySQL\MySQL Server 8.0\data\用户创建的数据库所在的目录3.2 MySQL 源代码获取首先你要进入 MySQL下载界面。 这里你不要选择用默认的“Microsoft Windows”而是要通过下拉栏找到“Source Code”在下面的操作系统版本里面 选择 WindowsArchitecture Independent然后点击下载。接下来把下载下来的压缩文件解压我们就得到了 MySQL 的源代码。MySQL 是用 C 开发而成的我简单介绍一下源代码的组成。mysql-8.0.22 目录下的各个子目录包含了 MySQL 各部分组件的源代码sql 子目录是 MySQL 核心代码libmysql 子目录是客户端程序 APImysql-test 子目录是测试工具mysys 子目录是操作系统相关函数和辅助函数源代码可以用记事本打开查看如果你有 C 的开发环境也可以在开发环境中打开查看。如上图所示源代码并不神秘就是普通的 C 代码跟你熟悉的一样而且有很多注释可以帮助你理解。阅读源代码就像在跟 MySQL 的开发人员对话一样十分有趣。