目录1. 创建数据库1.1 创建数据库语法指令1.2 创建数据库案例2. 删除数据库3. 字符集和校验规则3.1 查看系统默认字符集以及校验规则3.2 查看数据库支持的字符集3.3 查看数据库支持的字符集校验规则3.4 查看某一个数据库的字符集/校验规则3.5 校验规则对数据库的影响1.不区分大小写的校验规则2.区分大小写的校验规则3.进行查询4.结果排序4. 操纵数据库4.1 查看数据库4.2 显示创建语句同查看数据库字符集/校验规则4.3 修改数据库4.4 数据库删除4.5 备份和恢复放在最后4.5.1 备份4.5.2 还原4.5.3 进阶备份场景4.5.4 关键注意事项4.6 查看连接情况注意MySQL 的 SQL 关键字如 SELECT、CREATE不区分大小写大小写写法均可执行数据库 / 表名的大小写规则受操作系统影响Linux 区分、Windows 不区分字符串值完全区分大小写列名建议保持写法一致1. 创建数据库1.1 创建数据库语法指令语法CREATEDATABASE[IFNOTEXISTS]db_name[create_specification[,create_specification]...]create_specification:[DEFAULT]CHARACTERSETcharset_name[DEFAULT]COLLATEcollation_namecreatedatabase[ifnotexists]db_name[create_specification[,create_specification]...]create_specification:[default]charactersetcharset_name[default]collatecollation_name说明大写的表示关键字[]是可选项CHARACTER SET指定数据库采用的字符集COLLATE指定数据库字符集的校验规则创建数据库的时候有两个编码集数据库字符集数据库为来存储数据的格式数据库校验集支持数据库进行字段比较使用的编码本质也是一种数据库无论对数据做任何操作都必须保证操作和编码必须是编码一致的1.2 创建数据库案例创建名为db1的数据库createdatabasedb1;说明当我们创建数据库没有指定字符集和校验规则时系统使用默认字符集utf8校验规则是utf8_general_ci创建一个使用utf8字符集的db2数据库createdatabasedb2charsetutf8;创建一个使用utf8字符集并带校对规则的db3数据库createdatabasedb3charsetutf8collateutf8_general_ci;2. 删除数据库dropdatabasedb_name删除名为db1的数据库dropdatabasedb1;3. 字符集和校验规则3.1 查看系统默认字符集以及校验规则showvariableslikecharacter_set_database;showvariableslikecollation_database;3.2 查看数据库支持的字符集showcharset;字符集主要是控制用什么语言。比如utf8就可以使用中文。3.3 查看数据库支持的字符集校验规则showcollation;3.4 查看某一个数据库的字符集/校验规则使用SHOW CREATE DATABASE语句这是官方推荐的方式能直接看到创建数据库时的完整配置包括你指定的字符集、校验规则。语法SHOWCREATEDATABASE数据库名;示例假设你创建了这样的数据库-- 创建时指定字符集utf8mb4、校验规则utf8mb4_unicode_ciCREATEDATABASEtest_dbDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;执行查看语句SHOWCREATEDATABASEtest_db;输出结果示例DatabaseCreate Databasetest_dbCREATE DATABASEtest_db/*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */解读DEFAULT CHARACTER SET utf8mb4你指定的字符集COLLATE utf8mb4_unicode_ci你指定的校验规则即使是 MySQL 8.0无 db.opt 文件这个语句也能正常返回结果。3.5 校验规则对数据库的影响1.不区分大小写的校验规则创建一个数据库校验规则使用utf8_general_ci不区分大小写# 创建数据库createdatabasetest1collateutf8_general_ci;# 使用数据库usetest1;# 建表createtableperson(namevarchar(20));# 插入数据insertintopersonvalues(a);insertintopersonvalues(A);insertintopersonvalues(b);insertintopersonvalues(B);# 查看数据库中的表要在某一个数据库里面使用showtables;# 查看某一个表结构desctable_name;2.区分大小写的校验规则创建一个数据库校验规则使用utf8_bin区分大小写createdatabasetest2collateutf8_bin;usetest2;createtableperson(namevarchar(20));insertintopersonvalues(a);insertintopersonvalues(A);insertintopersonvalues(b);insertintopersonvalues(B);3.进行查询不区分大小写的查询以及结果mysqlusetest1;mysqlselect*frompersonwherenamea;------|name|------|a||A|------2rowsinset(0.01sec)区分大小写的查询以及结果mysqlusetest2;mysqlselect*frompersonwherenamea;------|name|------|a|------2rowsinset(0.01sec)4.结果排序不区分大小写排序以及结果mysqlusetest1;mysqlselect*frompersonorderbyname;------|name|------|a||A||b||B|------区分大小写排序以及结果mysqlusetest2;mysqlselect*frompersonorderbyname;------|name|------|A||B||a||b|------4. 操纵数据库4.1 查看数据库查看所有数据库showdatabases;查看自己所在的当前数据库showdatabase();4.2 显示创建语句同查看数据库字符集/校验规则showcreatedatabase数据库名;示例mysqlshowcreatedatabasemytest;------------------------------------------------------------------------|Database|CreateDatabase|------------------------------------------------------------------------|mysql|CREATEDATABASEmytest/*!40100 DEFAULT CHARACTER SET utf8 */|------------------------------------------------------------------------说明MySQL 建议关键字使用大写但不是必须的。数据库名字的反引号 是为了防止使用的数据库名刚好是关键字。/*!40100 default.... */这不是注释表示当前 MySQL 版本大于 4.01 版本就执行这句话。4.3 修改数据库语法ALTERDATABASEdb_name[alter_specification[,alter_specification]...]alter_specification:[DEFAULT]CHARACTERSETcharset_name[DEFAULT]COLLATEcollation_name说明对数据库的修改主要指的是修改数据库的字符集、校验规则。实例将mytest数据库字符集改成gbkmysqlalterdatabasemytestcharsetgbk;Query OK,1rowaffected(0.00sec)mysqlshowcreatedatabasemytest;------------------------------------------------------------------------|Database|CreateDatabase|------------------------------------------------------------------------|mytest|CREATEDATABASEmytest/*!40100 DEFAULT CHARACTER SET gbk */|------------------------------------------------------------------------4.4 数据库删除DROPDATABASE[IFEXISTS]db_name;执行删除之后的结果数据库内部看不到对应的数据库。对应的数据库文件夹被删除级联删除里面的数据表全部被删。注意不要随意删除数据库。4.5 备份和恢复放在最后4.5.1 备份核心说明mysqldump是 MySQL 官方提供的备份工具需在操作系统的命令行终端而非 MySQL 客户端执行适用于所有 MySQL 版本。基础语法# 完整格式推荐mysqldump -P 端口号 -u 用户名 -p 数据库名备份文件存储路径# 带-B参数备份时包含CREATE DATABASE语句恢复更便捷mysqldump -P 端口号 -u 用户名 -p -B 数据库名备份文件存储路径参数说明-P指定 MySQL 端口号注意是大写 P小写 p 是密码参数-u指定连接的 MySQL 用户名-p表示需要输入密码建议不直接写密码回车后交互式输入更安全-B备份时包含CREATE DATABASE和USE语句恢复时无需手动创建 / 切换数据库。示例将mytest库备份到 D 盘根目录安全写法# 执行后会提示输入密码回车后输入123456即可mysqldump -P3306 -u root -p -B mytestD:/mytest.sql备份文件内容mytest.sql会包含创建数据库、建表、插入数据的完整 SQL 语句本质是纯文本的 SQL 脚本。4.5.2 还原方式 1MySQL 客户端内执行推荐需先登录 MySQL 客户端再通过source命令执行备份脚本-- 登录MySQLmysql-u root-p-- 执行还原路径需写备份文件的绝对路径mysqlsource D:/mytest.sql;方式 2命令行终端执行无需登录 MySQL 客户端直接在终端执行mysql -u root -pD:/mytest.sql# 输入密码后自动完成还原4.5.3 进阶备份场景备份单个 / 多张表无需-B参数# 备份mytest库中的user表和order表mysqldump -P3306 -u root -p mytest user orderD:/mytest_tables.sql同时备份多个数据库# 备份mytest、test1、test2三个数据库mysqldump -P3306 -u root -p -B mytest test1 test2D:/multi_db.sql4.5.4 关键注意事项-B 参数的核心作用带-B备份文件包含CREATE DATABASE mytest和USE mytest恢复时直接执行source即可不带-B备份文件仅包含表结构和数据恢复前需手动创建空数据库并切换-- 无-B参数时的还原步骤mysqlCREATEDATABASEIFNOTEXISTSmytest;mysqlUSEmytest;mysqlsource D:/mytest.sql;安全规范避免在命令行直接写密码如-p123456防止密码泄露备份文件建议定期归档存储路径避免中文 / 空格防止解析失败。跨版本注意低版本备份的脚本可在高版本还原高版本备份的脚本需注意字符集如 8.0 默认 utf8mb4兼容问题。4.6 查看连接情况语法showprocesslist;示例mysqlshowprocesslist;--------------------------------------------------------------------|Id|User|Host|db|Command|Time|State|Info|--------------------------------------------------------------------|2|root|localhost|test|Sleep|1386||NULL||3|root|localhost|NULL|Query|0|NULL|showprocesslist|--------------------------------------------------------------------可以告诉我们当前有哪些用户连接到我们的 MySQL如果查出某个用户不是你正常登录的很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时可以用这个指令来查看数据库连接情况。…过云雨-CSDN博客