第03章 MySQL的简单使用命令

一、MySQL的登录

1.1 服务的启动与停止

MySQL安装完毕之后,需要启动服务器进程,不然客户端无法连接数据库。 在前面的配置过程中,已经将MySQL安装为Windows服务,并且勾选当Windows启动、停止时,MySQL也 自动启动、停止。

方式一:使用图形界面工具

步骤1:打开windows服务

方式1:计算机(点击鼠标右键)→ 管理(点击)→ 服务和应用程序(点击)→ 服务(点 击)

方式2:控制面板(点击)→ 系统和安全(点击)→ 管理工具(点击)→ 服务(点击)

方式3:任务栏(点击鼠标右键)→ 启动任务管理器(点击)→ 服务(点击)

方式4:单击【开始】菜单,在搜索框中输入"services.msc",按Enter键确认

步骤2:找到MySQL80(点击鼠标右键)→ 启动或停止(点击)

方式2:使用命令行工具

|------------------------------------------------------------------------|
| # 启动 MySQL 服务命令: net start MySQL服务名 # 停止 MySQL 服务命令: net stop MySQL服务名 |

说明:

1、start和stop后面的服务名应与之前配置时指定的服务名一致。

  1. 如果当你输入命令后,提示"拒绝服务",请以 系统管理员身份 打开命令提示符界面重新尝试。

1.2 自带客户端的登录与退出

当MySQL服务启动完成后,便可以通过客户端来登录MySQL数据库。注意:确认服务是开启的。

登录方式1:MySQL自带客户端

开始菜单 → 所有程序 → MySQL → MySQL 8.0 Command Line Client

|---------------|
| 注意:仅限于root用户。 |

登录方式2:Windows命令行

格式:

|-------------------------------------------------------------------------------------|
| mysql -h 主机名 -P 端口号 -u 用户名 -p密码 #注意:参数和值之间的空格可省略。"-p密码"是明文显示密码,直接-p之后回车则能够密文输入。 |

举例:

|---------------------------------------------|
| mysql -h localhost -P 3306 -u root -pabc123 |

注意:

(1)-p与密码之间不能有空格,其他参数名与参数值之间可以有空格也可以没有空格。如:

|------------------------------------------|
| mysql -hlocalhost -P3306 -uroot -pabc123 |

(2)密码建议在下一行输入,保证安全

|---------------------------------------------------------------|
| mysql -h localhost -P 3306 -u root -p Enter password:**** |

(3)客户端和服务器在同一台机器上,所以输入localhost或者IP地址127.0.0.1。同时,因为是连接本 机: -hlocalhost就可以省略,如果端口号没有修改:-P3306也可以省略。可以简写为:

|------------------------------------------|
| mysql -u root -p Enter password:**** |

连接成功后,有关于MySQL Server服务版本的信息,还有第几次连接的id标识。

也可以在命令行通过以下l两种方式获取MySQL Server服务版本的信息:

|----------------------------------------------------------------------------------------|
| 方式一 c:\> mysql -V 方式二 c:\> mysql --version 方式三 mysql> select version(); 登录后使用的方式。 |

退出登录mysql

|-------------|
| exit 或 quit |

二、MySQL演示使用

2.1 MySQL的使用演示

2.1.1 查看所有的数据库

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 命令:show databases; * "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.1.2 创建自己的数据库

|------------------------------------------------------------------------------------------|
| 命令:create database 数据库名; 举例:#创建atguigudb数据库,该名称不能与已经存在的数据库重名。 create database atguigudb; |

2.1.3 使用自己的数据库

|------------------------------------------------|
| 命令:use 数据库名; 举例:#使用atguigudb数据库 use atguigudb; |

说明:如果没有使用use语句,后面针对数据库的操作也没有加"数据名"的限定,那么会报"ERROR 1046 (3D000): No database selected"(没有选择数据库)。使用完use语句之后,如果接下来的SQL都是针对一个数据库操作的,那就不用重复use了,如果要针对另 一个数据库操作,那么要重新use。

2.1.4 查看某个库的所有表格

|-------------------------------------------------------------------|
| 命令方式一:show tables; #要求前面有use语句使用了某个库 命令方式二:show tables from 数据库名; |

2.1.5 创建新的表格

|-----------------------------------------|
| create table 表名称( 字段名 数据类型, 字段名 数据类型 ); |

说明:如果是最后一个字段,后面就不用加逗号,因为逗号的作用是分割每个字段。

举例:

|-------------------------------------------------------------------------|
| #创建学生表 create table student( id int, name varchar(20) #说名字最长不超过20个字符 ); |

2.1.6 查看一个表的数据

|----------------------------------------------------------------|
| 命令:select * from 数据库表名称; 举例:#查看学生表的数据 select * from student; |

2.1.7 添加一条记录

|------------------------------------------------------------------------------------------------------------------------------|
| 命令:insert into 表名称 values(值列表); 举例:#添加两条记录到student表中 insert into student values(1,'张三'); insert into student values(2,'李四'); |

报错:字符集问题

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| mysql> insert into student values(1,'张三'); ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1 mysql> insert into student values(2,'李四'); ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1 mysql> show create table student; #查看表的创建信息 |

2.1.8 查看表的创建信息

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 命令:show create table 表名称\G 举例:#查看student表的详细创建信息 show create table student\G 举例结果如下: *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) |

上面的结果显示student的表格的默认字符集是"latin1"不支持中文。

2.1.9 查看数据库的创建信息

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 命令:show create database 数据库名\G 举例:#查看atguigudb数据库的详细创建信息 show create database atguigudb\G 举例结果如下: *************************** 1. row *************************** Database: atguigudb Create Database: CREATE DATABASE `atguigudb` /*!40100 DEFAULT CHARACTER SET latin1 */ 1 row in set (0.00 sec) |

上面的结果显示atguigudb数据库也不支持中文,字符集默认是latin1。(8.0的默认字符集是utf-8已经支持中文)

2.1.10 删除表格

|-------------------------------------------------|
| 命令:drop table 表名称; 举例:删除学生表 drop table student; |

2.1.11 删除数据库

|--------------------------------------------------------------------|
| 命令:drop database 数据库名; 举例:#删除atguigudb数据库 drop database atguigudb; |

2.2 MySQL的编码设置

2.2.1 MySQL5.7

问题再现:命令行操作sql乱码问题

|----------------------------------------------------------------------------------------------------------------------------------------------|
| mysql> INSERT INTO t_stu VALUES(1,'张三','男'); ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1 |

问题解决:

步骤一:查看编码命令

|----------------------------------------------------------------------------------------|
| show variables like 'character_%'; #查看字符集 show variables like 'collation_%'; #查看字符比较规则 |

步骤二:修改mysql的数据目录(data)下的my.ini配置文件

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [mysql] #大概在63行左右,在其下添加 ... default-character-set=utf8 #默认字符集 ... [mysqld] # 大概在76行左右,在其下添加 ... character-set-server=utf8 collation-server=utf8_general_ci |

注意:建议修改配置文件使用notepad++等高级文本编辑器,使用记事本等软件打开修改后可能会 导致文件编码修改为"含BOM头"的编码,从而服务重启失败。

步骤三:重启服务

步骤四(同步骤一):查看编码命令

如果是以上配置就说明对了。接着我们就可以新创建数据库、新创建数据表,接着添加包含中文的 数据了。

2.2.2 MySQL8.0

在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计 的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0 开始,数据库的默认编码改为 utf8mb4 ,从而避免了上述的乱码问题。

相关推荐
gma99943 分钟前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98761 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
武子康1 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
黑色叉腰丶大魔王2 小时前
《MySQL 数据库备份与恢复》
mysql
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...2 小时前
索引(MySQL)
数据库·mysql·索引
菠萝咕噜肉i2 小时前
超详细:Redis分布式锁
数据库·redis·分布式·缓存·分布式锁
长风清留扬2 小时前
一篇文章了解何为 “大数据治理“ 理论与实践
大数据·数据库·面试·数据治理
OpsEye2 小时前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级