MySQL演示使用及数据库中的编码问题解决方法
2022/4/7 19:20:00
本文主要是介绍MySQL演示使用及数据库中的编码问题解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
4. MySQL演示使用
4.1 MySQL的使用演示
1.查看所有的数据库
show database;
"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;
创建表时:
create table employees(id int,name varchar(15));
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');
说明:如果没有使用use语句,后面针对数据库的操作也没有加”数据库名“的限定,那么会报”ERROR 1046 (3D000):No database selected“ (没有选择数据库)
5.7
8.0可以
字符集默认为欧洲的拉丁码。不是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)
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)
我的是这样。和视频中的有出入。。要有兄弟能知道为什么 麻烦可以告诉我下。
MySQL8.0中
在MySQL 8.0版本之。网站开发人员在数据库涉及的时候前,默认字符集为Latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码改为utf8字符集。如果忘了修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认utf8mb4,从而避免了上述的乱码问题。
这篇关于MySQL演示使用及数据库中的编码问题解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解