持续学习&持续更新中…

学习态度:守破离


【宋红康 MySQL数据库】【02】MySQL基本使用

  • 基本命令
    • 启动 MySQL 服务命令
    • 停止 MySQL 服务命令
    • 登录MySQL
    • 退出登录
    • 查看MySQL版本信息
    • 数据导入指令
  • 基本使用—库
    • 查看所有的数据库
    • 创建自己的数据库
    • 使用自己的数据库
    • 删除数据库
    • 查看数据库的创建信息
  • 基本使用—表
    • 查看某个库的所有表格
    • 查看表结构
    • 创建新的表格
    • 查看一个表的数据
    • 向表中添加一条记录
    • 删除表格
    • 查看表的创建信息
  • MySQL的编码设置
    • 李明杰老师的方法
    • MySQL5.7中
    • MySQL8.0中
  • 常见问题的解决
    • 问题1:root用户密码忘记,重置的操作
    • 问题2:mysql命令报“不是内部或外部命令”
    • 问题3:错误ERROR :没有选择数据库就操作表格和数据
    • 问题4:命令行客户端的字符集问题
    • 问题5:修改数据库和表的字符编码
  • 参考

基本命令

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

启动 MySQL 服务命令

net start MySQL服务名

停止 MySQL 服务命令

net stop MySQL服务名

登录MySQL

mysql -h 主机名 -P 端口号 -u 用户名 -p密码

举例

mysql -h localhost -P 3306 -u root -pabc123  # 这里我设置的root用户的密码是abc123

注意:密码建议在下一行输入,保证安全

mysql -h localhost -P 3306 -u root -p
Enter password:****
  • 客户端和服务器在同一台机器上,所以输入localhost或者IP地址127.0.0.1。同时,因为是连接本机
    -hlocalhost就可以省略,如果端口号没有修改:-P3306也可以省略

简写成:

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

退出登录

exit

quit

查看MySQL版本信息

有关于MySQL Server服务版本的信息。

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

c:\> mysql -V
c:\> mysql --version

登录后,通过以下方式查看当前版本信息:

select version();

数据导入指令

在命令行客户端登录mysql,使用source指令导入。

mysql> source d:\mysqldb.sql
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id    | int(6)      | NO   | PRI | 0       |       |
| first_name     | varchar(20) | YES  |     | NULL    |       |
| last_name      | varchar(25) | NO   |     | NULL    |       |
| email          | varchar(25) | NO   | UNI | NULL    |       |
| phone_number   | varchar(20) | YES  |     | NULL    |       |
| hire_date      | date        | NO   |     | NULL    |       |
| job_id         | varchar(10) | NO   | MUL | NULL    |       |
| salary         | double(8,2) | YES  |     | NULL    |       |
| commission_pct | double(2,2) | YES  |     | NULL    |       |
| manager_id     | int(6)      | YES  | MUL | NULL    |       |
| department_id  | int(4)      | YES  | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)

基本使用—库

查看所有的数据库

show databases;

information_schema是MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹,等等

performance_schema是MySQL 系统自带的数据库,可以用来监控 MySQL 的各类性能指标。

sys是MySQL系统自带的数据库,主要作用是以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL 的技术性能。

mysql是保存了 MySQL 数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的字符集、约束检查信息,等等

创建自己的数据库

create database 数据库名;
#创建atguigudb数据库,该名称不能与已经存在的数据库重名。
create database atguigudb;

使用自己的数据库

use 数据库名;
#使用atguigudb数据库
use atguigudb;

注意

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

删除数据库

drop database 数据库名;
#删除atguigudb数据库
drop database atguigudb;

查看数据库的创建信息

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。

基本使用—表

查看某个库的所有表格

show tables;  #要求前面有use语句
show tables from 数据库名;

查看表结构

# desc 表名;
desc employees;

创建新的表格

方式一:

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

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

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

方式二:

CREATE TABLE 表名称
AS
SELECT *
FROM 库名称.表名称;
CREATE TABLE depts
AS
SELECT *
FROM atguigudb.`departments`;

查看一个表的数据

select * from 数据库表名称;
#查看学生表的数据
select * from student;

向表中添加一条记录

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;

删除表格

drop table 表名称;
#删除学生表
drop table student;

查看表的创建信息

show create table 表名称
#查看student表的详细创建信息
show create table student

结果如下:

*************************** 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”不支持中文。

MySQL的编码设置

李明杰老师的方法

default-character-set=utf8mb4
default-character-set=utf8mb4
character_set_server=utf8mb4

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

问题解决

  • 步骤1:查看编码命令
show variables like 'character_%';
show variables like 'collation_%';
  • 步骤2:修改mysql的数据目录下的my.ini配置文件
[mysql]  #大概在63行左右,在其下添加
...
default-character-set=utf8  #默认字符集[mysqld]  # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci

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

  • 步骤3:重启服务

  • 步骤4:查看编码命令

show variables like 'character_%';
show variables like 'collation_%';

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

MySQL8.0中

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

常见问题的解决

问题1:root用户密码忘记,重置的操作

1: 通过任务管理器或者服务管理,关掉mysqld(服务进程)
2: 通过命令行+特殊参数开启mysqld

mysqld --defaults-file="D:\ProgramFiles\mysql\MySQLServer5.7Data\my.ini" --skip-grant-tables

3: 此时,mysqld服务进程已经打开。并且不需要权限检查
4: mysql -uroot 无密码登陆服务器。另启动一个客户端进行
5: 修改权限表
(1)use mysql;
(2)update user set authentication_string=password(‘新密码’) where user=‘root’ and Host=‘localhost’;
(3)flush privileges;
6: 通过任务管理器,关掉mysqld服务进程。
7: 再次通过服务管理,打开mysql服务。
8: 即可用修改后的新密码登陆。

问题2:mysql命令报“不是内部或外部命令”

如果输入mysql命令报“不是内部或外部命令”,把mysql安装目录的bin目录配置到环境变量path中。

问题3:错误ERROR :没有选择数据库就操作表格和数据

ERROR 1046 (3D000): No database selected
  • 解决方案一:就是使用“USE 数据库名;”语句,这样接下来的语句就默认针对这个数据库进行操作
  • 解决方案二:就是所有的表对象前面都加上数据库.

问题4:命令行客户端的字符集问题

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

原因:服务器端认为你的客户端的字符集是utf-8,而实际上你的客户端的字符集是GBK。

查看所有字符集:SHOW VARIABLES LIKE 'character_set_%';

解决方案,设置当前连接的客户端字符集 “SET NAMES GBK;”

问题5:修改数据库和表的字符编码

修改编码:

(1)先停止服务,(2)修改my.ini文件(3)重新启动服务

说明:

如果是在修改my.ini之前建的库和表,那么库和表的编码还是原来的Latin1,要么删了重建,要么使用alter语句修改编码。

mysql> create database 0728db charset Latin1;
Query OK, 1 row affected (0.00 sec)
mysql> use 0728db;
Database changed
mysql> create table student (id int , name varchar(20)) charset Latin1;
Query OK, 0 rows affected (0.02 sec)mysql> show create table student\G
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE `student` (`id` int(11) NOT NULL,`name` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> alter table student charset utf8; #修改表字符编码为UTF8
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> show create table student\G
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE `student` (`id` int(11) NOT NULL,`name` varchar(20) CHARACTER SET latin1 DEFAULT NULL,  #字段仍然是latin1编码PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)mysql> alter table student modify name varchar(20) charset utf8; #修改字段字符编码为UTF8
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> show create table student\G
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE `student` (`id` int(11) NOT NULL,`name` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> show create database 0728db;;
+--------+-----------------------------------------------------------------+
|Database| Create Database                                                 |
+------+-------------------------------------------------------------------+
|0728db| CREATE DATABASE `0728db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+------+-------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> alter database 0728db charset utf8; #修改数据库的字符编码为utf8
Query OK, 1 row affected (0.00 sec)mysql> show create database 0728db;
+--------+-----------------------------------------------------------------+
|Database| Create Database                                                 |
+--------+-----------------------------------------------------------------+
| 0728db | CREATE DATABASE `0728db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+--------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

参考

尚硅谷宋红康: MySQL数据库(入门到高级,菜鸟到大牛).

小码哥李明杰: Java从0到架构师②JavaEE技术基石.


本文完,感谢您的关注支持!


【宋红康 MySQL数据库】【02】MySQL基本使用相关推荐

  1. 【宋红康 MySQL数据库 】【高级篇】【02】MySQL字符集、比较规则、大小写规范、sql_mode

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][02]MySQL字符集.比较规则.大小写规范.sql_mode 默认字符集 MySQL8 MySQL5 修改 ...

  2. MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版

    MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传) 文章目录 MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 ...

  3. 【宋红康 MySQL数据库 】【高级篇】【03】MySQL的数据目录

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][03]MySQL的数据目录 MySQL8的主要目录 数据文件的存放目录 命令存放目录 配置文件目录 数据库和 ...

  4. 【宋红康 MySQL数据库】【00】课程大纲

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][00]课程大纲 MySQL数据库基础篇大纲 1. 数据库概述与MySQL安装篇 2. SQL之SELECT使用篇 3. ...

  5. 【宋红康 MySQL数据库 】【高级篇】【17】MySQL事务日志:redo、undo

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][17]MySQL事务日志 概述 redo日志 为什么需要redo日志 redo日志的好处.特点 redo的组 ...

  6. 【宋红康 MySQL数据库 】【高级篇】【07】MySQL的存储引擎

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][07]MySQL的存储引擎 存储引擎 查看存储引擎 设置系统默认的存储引擎 设置表的存储引擎 引擎介绍 In ...

  7. 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][03]SQL概述_常见的数据库对象 SQL概述 什么是SQL SQL背景知识 SQL分类 DDL(Data Defini ...

  8. 【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][06]MySQL的逻辑架构 逻辑架构剖析 服务器处理客户端请求 Connectors 第一层 连接层 第二层 ...

  9. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][12]性能分析工具的使用 数据库服务器的优化步骤 查看系统性能参数 统计SQL的查询成本:last_quer ...

最新文章

  1. 资料分享:送你一本《数据结构(C#语言版)》电子书!
  2. 第八课.EM算法的合理性与算法推导
  3. 探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
  4. Centos 安装Docker
  5. 【渝粤教育】21秋期末考试混凝土结构10515k1
  6. 数字信号处理1:卷积
  7. SQL Server 2012 - 数据表的操作
  8. 《Java遗传算法编程》—— 1.8 参数
  9. Python for Infomatics 第12章 网络编程四(译)
  10. 计算机用户程序举例,劳顿管理信息系统习题集-第8章信息系统安全
  11. php 数组排序方法,php数组排序的方法有哪些 - php完全自学手册 - php中文网手册...
  12. linux 桌面美化指南,Linux_9方面立体式地美化Ubuntu桌面,总结了一下桌面美化的设置。 - phpStudy...
  13. 大学计算机基础学后感想,大学计算机基础学习感想
  14. qq音乐播放小Demo
  15. 管理之旅(01)游学阿里
  16. 学习CANopen --- [3] NMT报文
  17. 移远BC28_opencpu方案_pin脚分配
  18. GreenPlum 大数据平台--运维(三)
  19. Object-Oriented Design Heuristics (zz)
  20. java中for(;;)表示啥意思

热门文章

  1. Faster-rcnn模型下载
  2. gojs给线添加鼠标移上去显示内容的事件,类似title属性
  3. Java调用WebService接口之利用hutool工具包实现
  4. C++STL标准库学习总结/索引/学习建议
  5. python数据挖掘学习01:数据归一化与标准化
  6. python绘制彩色同心圆_如何用python画同心圆
  7. redis内存数据落地命令
  8. 用java写一个简单的音乐播放器(二)
  9. java怎么做IP扫描器
  10. 什么是IT服务管理(ITSM)?企业该如何进行IT服务管理?