数据库
首页 > 数据库> > MySQL演示使用及数据库中的编码问题解决方法

MySQL演示使用及数据库中的编码问题解决方法

作者:互联网

4. MySQL演示使用

4.1 MySQL的使用演示

1.查看所有的数据库

show database;

image

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

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

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

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

为什么Workbench里面只能看到"demo"和"sys"这两个数据库呢?

这是因为,Workbench时图形化的管理工具,主要面向开发人员,"demo"和"sys"这两个数据库已经够用了。如果有特殊需求,比如,需要监控MySQL数据库各项性能指标、直接操作MySQL数据库系统文件等,可以由DBA通过SQL语句,查看其他的系统数据库。

2.创建自己的数据库

create database 数据库名;

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

image

image

创建表时:

create table employees(id int,name varchar(15));

image

3.使用自己的数据库

use 数据库名;

#shiyong dbtest1数据库
use dbtest1;

#创建表
create table employees(id int,name varchar(15));

#展示表
show tables;

#查看表中数据
select * from employees;

insert into employees values(1001,'Tom');

insert into employees values(1002,'shkstart');

image

image

image

image

image

说明:如果没有使用use语句,后面针对数据库的操作也没有加”数据库名“的限定,那么会报”ERROR 1046 (3D000):No database selected“ (没有选择数据库)

5.7

image

8.0可以

image

字符集默认为欧洲的拉丁码。不是utf-8所以导致添加不成功。

使用完use语句之后,如果接下开的SQL都是针对一个数据库操作的,那就不用重复use了,如果要针对另一个数据库操作,那么要重新use。

4.查看某个库的所有表格

show tables;#要求前面有use语句

show tables from 数据库名;

5.创建新的表格

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

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

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

6.查看一个表的数据

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

7.添加一条记录

insert into 表名称 values(值列表);

#添加两条记录到student表中
insert into student values(1,'张三');
insert into student values(2,'李四');

#我测试使用的语句
insert into employees values(1003,'杰瑞');

报错

mysql> insert into employees values(1003,'杰瑞');
ERROR 1366 (HY000): Incorrect string value: '\xBD\xDC\xC8\xF0' for column 'name' at row 1

字符集问题。

8.查看表的创建信息

show create table 表名称\G

#查看student表的详细创建信息
show create table\G

#测试语句
show create table employees\G
*************************** 1. row ***************************
       Table: employees
Create Table: CREATE TABLE `employees` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql>

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

9.查看数据库的创建信息

show create database 数据库名\G

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

上面的结果显示dbtest1数据库也不支持中文,字符集默认是latin1。

10.删除表格

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

11.删除数据库

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

4.2MySQL的编码设置

MySQL 5.7中

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

mysql> insert into employees values(1003,'杰瑞');
ERROR 1366 (HY000): Incorrect string value: '\xBD\xDC\xC8\xF0' for column 'name' at row 1

问题解决

步骤1:查看编码命令

show variables like 'character_%';
show variables like 'collation_%';
mysql> show variables like 'character_%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | gbk                                       |
| character_set_connection | gbk                                       |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | gbk                                       |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | D:\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+-------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
mysql> show variables like 'collation_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | gbk_chinese_ci    |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set, 1 warning (0.00 sec)

步骤2:修改mysql的数据目录下的my.ini配置文件

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

[mysql] # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci
mysql> show variables like 'character_%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | gbk                                       |
| character_set_connection | gbk                                       |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | gbk                                       |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | D:\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+-------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

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

步骤3:重启服务

步骤四:查看编码命令

重启MySQL后

mysql> show variables like 'character_%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | gbk                                       |
| character_set_connection | gbk                                       |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | gbk                                       |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | D:\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+-------------------------------------------+
8 rows in set, 1 warning (0.01 sec)

image

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | gbk_chinese_ci  |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set, 1 warning (0.00 sec)
mysql> insert into employees values(1003,'杰瑞');
ERROR 1366 (HY000): Incorrect string value: '\xBD\xDC\xC8\xF0' for column 'name' at row 1

我们不是修改了吗?为什么还不行?

mysql> show create table employees;
+-----------+----------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                     |
+-----------+----------------------------------------------------------------------------------------------------------------------------------+
| employees | CREATE TABLE `employees` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

这里发现我们建表的时候使用的是拉丁,改完后它还是拉丁。

删库:

mysql> drop database dbtest1;
Query OK, 1 row affected (0.42 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
    
mysql> create database dbtest1;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dbtest1            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
mysql> use dbtest1;
Database changed
mysql> create table employees(id int,name varchar(15));
Query OK, 0 rows affected (0.21 sec)

mysql> show create table employees;
+-----------+--------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                   |
+-----------+--------------------------------------------------------------------------------------------------------------------------------+
| employees | CREATE TABLE `employees` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql> insert into employees values(1001,'Tom');
Query OK, 1 row affected (0.07 sec)

mysql> insert into employees values(1002,'杰瑞');
Query OK, 1 row affected (0.03 sec)

mysql> select * from employees;
+------+------+
| id   | name |
+------+------+
| 1001 | Tom  |
| 1002 | 杰瑞 |
+------+------+
2 rows in set (0.00 sec)

我的是这样。和视频中的有出入。。要有兄弟能知道为什么 麻烦可以告诉我下。

image

MySQL8.0中

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

标签:set,演示,数据库,MySQL,character,mysql,employees
来源: https://www.cnblogs.com/qkshhan/p/16111207.html