MySQL 入门-创建数据库、导入导出 SQL

作者:vkvi 来源:ITPOW(原创) 日期:2022-3-10

连接 MySQL

由于本文要采用命令行图形界面两种方式进行操作演示,所以针对命令行,我们需要先连接 MySQL

先定位到 MySQL 的 bin 目录:

cd D:\phpstudy_pro\Extensions\MySQL5.5.29\bin

连接 MySQL:

mysql -u root -p

-u root 就是说以 root(最高权限者)连接,-p 就是待会儿按提示输入密码。

由于我们是使用 PHPStudy 安装的,所以这个密码,我们是可以在 PHPStudy 中轻松修改的。

常见参数:

  • -h,host,比如 localhost,本机可省略。

  • -P,Port,注意为了与 password 区别,是大写,3306 可省略。

  • -u,user,用户名。

  • -p,password,密码。

说明:

  • -h,-P,-u 后面空格可要可不要,比如 -u root 等效于 -uroot;-p 后面则不能有空格作为间隔,因为它会将空格当成密码的一部分。

  • -p 后面不跟密码,表示一会儿输入密码(显示为星号);也可以直接将密码跟在这里。

创建数据库

创建默认“字符集”和“字符集校”的数据库

连接 MySQL 后,界面如下:

mysql>_

可以在这里使用 SQL create database 来创建数据库,如下:

create database test;

test 是我们的数据库名称,SQL 语句以分号结束,如果忘打分号了也没关系,MySQL 会下一行让我们继续输,我们在这里输入分号就可以了。

查看“字符集”和“字符集校对”

我认为 MySQL 有两个东西比较麻烦,一个是版本兼容性,另一个就是这个东西,所以有必要说一下。

show create database test;

show create database,又是 show,又是 create 的,很多人可能不适应,这里可以这样理解:我现在有个数据库 test,假如我想创建一个一样的数据库,使用什么 SQL 语句呢?于是加个 show 吧。结果如下:

show create database

注意:窗口太小的话,在窗口的标题栏上右键 -> 属性,可将其调大点。

看起界面有点乱,但其实 MySQL 是想输出一个 2x2 表格:

  • 第 1 行是表头;

  • 第 1 列是 Database 的名称,第 2 列是创建数据库的 SQL 语句。

我们可以看到字符集是 utf8,字符集校对是 utf8_unicode_ci。注意:如果是 utf8_general_ci则不会显示字符集校对。

图形界面的话,在 MySQL-Front 中右键 -> 属性,即可看到:

MySQL 数据库属性

创建指定“字符集”和“字符集校”的数据库

根据前面的 show create database(MySQL-Front 的话,是在属性的“源代码”标签中,如上图),我们可在创建数据库时这样写:

CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */;

说明:

  • 数据库名称旁边两撇,是键盘 ~ 下面那个,可不是(也不能是)单引号。当然也是可以省略的。

  • /*! 可不是注释,在 MySQL 中,/* 后面多一个 ! 是有特殊意义的,在其他语句。

修改指定“字符集”和“字符集校对”的数据库

alter database `test` default character set utf8 collate utf8_general_ci;

说明:

  • 这是修改默认的,如果之前已经导入了数据,这些数据的字符集、字符集校对 是不变的(搞这么复杂干嘛)。

  • 表的字符集、字符集校对也是可以修改的。

导入 SQL

在 MySQL 体系下,要把数据库从 A 搬到 B,通常是生成一个 SQL 脚本。

怎样导入这个 SQL 呢?

接上面的操作,咱们先 Ctrl + C(或使用 exit 命令)退出 MySQL,然后执行如下命令:

mysql -u root -p test < D:\test.sql

这个 < 符号很重要。

说明:这里不是 SQL 语句,而是命令,所以不以分号结尾噢。

导出 SQL

反过来是使用 mysqldump

mysqldump -u root -p test > D:\test.sql

一是换了命令,二是 < 变成了 >。

打开导出的 SQL 文件,我们是可以看到字符集相关内容的。

字符集校对不一样会怎样?

说了半天,字符集校对不一样会怎样?举例:

表 A 是 utf8_general_ci,表 B 是 utf8_unicode_ci,当使用 join 查询时,可能会遇到如下的错误:

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='

网上说 utf8_general_ci 快,但准确性稍差,utf8_unicode_ci 则相反,我不知道是否正确。

相关文章