MySQL 上手库与表的操作、编码校验集与备份还原我的github(https://github.com/xcx55/ubuntu-linux-project)感谢各位大佬参观我的github源笔记mysql库操作126-9-18、MySQL表的操作26-9-19上一篇把 MySQL 的真面目看清了mysqld 守护进程 mysql 客户端DB目录、表文件。这一篇正式上手——先学三个库指令再学建表改表最后把编码集/校验集这个最容易踩的坑和备份还原一起解决。一、库操作三个指令打天下围绕数据库注意是 database不是表文件常用的就三个动作看库、建库、删库showdatabases;-- 看有哪些数据库createdatabasexxx;-- 创建数据库本质创建文件夹上层封装了 APIalterdatabasexxx...;-- 修改数据库dropdatabasexxx;-- 删除数据库本质删目录记住上一篇的结论就不难理解这些指令数据库的本质就是文件夹所以对库的操作翻译成 Linux 就是mkdir/ls/rm——只是 mysqld 替你干了还顺手做了权限、记录、并发管理。use进入数据库的cd对一个数据库建表之前必须先use 数据库名字——相当于cd进目录。数据库是文件夹建表就是在文件夹里建文件你得先进这个文件夹。二、编码集与校验集存和取必须是同一套建库时最容易被忽略、又最容易出事的一对概念编码集决定数据以什么编码存入校验集决定数据以什么编码取出/比较。为什么要有两个标准两个用处存储数据一样——存进去什么样得原样取出来后面支持字段比较——比较字符串时得用同样的函数方法比较。所以铁律来了要是存的编码和取校验的编码不一样就会导致识别读取的区别存进去是 UTF-8、按 GBK 校验取出来中文立刻变成乱码。存入用什么编码取出就得用同一套——这是建库时就该定好的事别等表里灌了几万行数据再改。三、删库之前先聊聊备份drop database是最痛快也最危险的指令。删库之前怎么备份为什么不用cp直接把文件拷走可以但有更好的选择——mysqldumpmysqldump-uroot-p-B数据库名备份文件.sql它比裸 cp 强在两点不仅拷贝了数据还把这个数据库的操作指令也记录了建库建表的完整 SQL 都在备份里-B参数的妙用恢复指令里自带create database xxx主动创建库——不用你先手动建好空库再灌数据。恢复也简单备份在Linux 命令行里做mysqldump 是外部工具恢复在mysql 命令行里source 绝对路径——备份文件里的 SQL 逐条执行库就回来了。四、建表建立的是表的格式createtableifnotexistsuser1(idintcomment机器查找需要,namevarchar(32)comment人看的注释,birthdaydatecomment出生日期);几个要点if not exists存在就不再建脚本可以反复执行comment是注释写给人看的说明。注意字段语义的分工——id 是机器查找需要的注释是给人看的date 在 MySQL 里是一种类型生日、注册日这类年月日不用自己拼字符串直接有原生类型还有 datetime、timestamp 一族。表结构、存储引擎与索引建表时会发现同样的建表语句表结构底层文件布局可能不一样——这和存储引擎有关表结构 —— 存储引擎 —— 索引选哪个引擎InnoDB/MyISAM决定了数据在文件里怎么组织、索引怎么建。插件式引擎就像上一篇说的插件类似一个类new 出来就能换。建立表本质是建立表的格式列名、类型、注释、引擎——先有格式再往里灌数据。五、查看与修改表查看表结构三连先use进库 →show tables;看有哪些表 →desc 表名;看表的格式每列的类型、键、默认值一目了然。修改表一切从 alter table 开始前提语法alter table 表名 ...表示我要改你这张表的结构属性和属性类型了——和改表里的数据完全是两码事。-- 新增一列还可以指定插到哪一列后面altertableuseraddimage_pathvarchar(128)comment头像路径afterbirthday;-- 修改属性类型modify 中文也是修改altertableusermodifynamevarchar(64);-- 修改属性名字altertableuserchange name usernamevarchar(32);-- 改表名 / 删表altertableuserrenametouser1;droptableuser1;一条重要的工程原则一般不要修改和删除表要改就增加为什么表结构一动依赖这张表的代码、SQL、备份全都要跟着动而加列是向后兼容的老代码照跑。所以增删查改zscg这个词默认是针对表文件里面的数据说的——业务天天做对表结构的增删查改走alter table——能不做就不做做了要慎重。总结库三连show/create/drop database本质就是文件夹操作use cd建表前必做编码集管存、校验集管取和比较两套必须一致否则乱码备份用mysqldump -B数据建库语句全记录cp 裸拷做不到恢复在 mysql 里source 绝对路径建表建的是格式comment 给人看、id 给机器用、date 是原生类型表结构-存储引擎-索引一条线查结构三连 use → show → desc改结构一切从alter table开始add/modify/change 分工不同原则对数据随便 CRUD对表结构能加不改不删。下一篇回到网络线UDP 报文在内核里到底长什么样、sk_buff 怎么用一根指针玩转封装解包——以及网络服务为什么必须守护进程化才能活。