目录
show databases;
8.0版本:
5.7版本:
为什么 Workbench 里面我们只能看到 “demo” 和 “sys” 这 2 个数据库呢?这是因为, Workbench 是图形化的管理工具,主要面向开发人 员, “demo” 和 “sys” 这 2 个数据库已经够用了。如果有特殊需求,比如,需要监控 MySQL 数据库各项性能指标、直接操作 MySQL 数据库系统文件等,可以由 DBA 通过 SQL 语句,查看其它的系统数据库。
- create database 数据库名;
-
- #创建atguigudb数据库,该名称不能与已经存在的数据库重名。
-
- create database atguigudb;
- use 数据库名;
-
- #使用atguigudb数据库
-
- use atguigudb;
说明:如果没有使用 use 语句,后面针对数据库的操作也没有加 “ 数据名 ” 的限定,那么会报 “ERROR 1046 (3D000): No database selected”(没有选择数据库)使用完 use 语句之后,如果接下来的 SQL 都是针对一个数据库操作的,那就不用重复 use 了,如果要针对另一个数据库操作,那么要重新use 。
- show tables; #要求前面有use语句
- show tables from 数据库名;
当前还没创建表,还是空!!!
- create table 表名称(
- 字段名 数据类型,
- 字段名 数据类型
- );
- #创建学生表
- create table student(
- id int,
- name varchar(20) #说名字最长不超过20个字符
- );
select * from 数据库表名称;
- #查看学生表的数据
- select * from student;
- insert into 表名称 values(值列表);
- #添加两条记录到student表中
- insert into student values(1,'张三');
- insert into student values(2,'李四');
MySQL8.0版本:
MySQL5.7版本:
报错:
- 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
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)
- 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。
drop table 表名称;
- #删除学生表
- drop table student;
drop database 数据库名;
- #删除atguigudb数据库
- drop database atguigudb;
- 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_%';
my.ini配置文件路径:即安装MySQL时的ProgramData路径,可参考文章:
MySQL 2 环境搭建(MySQL5.7.43和8.0.34的下载;8.0.34的安装、配置教程 )-CSDN博客
这里我的位置在:D:\Software\MySQL\MySQL_data\MySQL Server 5.7
注意:建议修改配置文件使用notepad++等高级文本编辑器,使用记事本等软件打开修改后可能会 导致文件编码修改为“含BOM头”的编码,从而服务重启失败。
- [mysql] #大概在63行左右,在其下添加
- ...
- default-character-set=utf8 #默认字符集
- [mysqld] # 大概在76行左右,在其下添加
- ...
- character-set-server=utf8
- collation-server=utf8_general_ci
- show variables like 'character_%';
- show variables like 'collation_%';
如果是以上配置就说明对了。接着我们就可以新创建数据库、新创建数据表,接着添加包含中文的 数据了。
- # 创建数据库:
- create database atguigudb;
-
- # 查看数据库:
- show create database atguigudb;
-
- # 使用数据库:
- use atguigudb;
-
- # 建表:
- create table student( id int, name varchar(20));
-
- # 查看表:
- show create table student;
-
- # 查看学生表的数据
- select * from student;
-
- # 添加两条记录到student表中
- insert into student values(1,'张三');
- insert into student values(2,'李四');
VS:对比8.0的编码看下:
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。
网站开发人员在数据库设计 的时候往往会将编码修改为utf8字符集。
如果遗忘修改默认的编码,就会出现乱码的问题。
从MySQL 8.0 开始,数据库的默认编码改为 utf8mb4 ,从而避免了上述的乱码问题。