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,从而避免了上述的乱码问题。
标签:set,演示,数据库,MySQL,character,mysql,employees 来源: https://www.cnblogs.com/qkshhan/p/16111207.html