一、数据库基础操作
(一)数据库连接
- 连接工具:MySQL 安装成功后自带的命令行客户端。
- 连接命令:
mysql -u用户名 -p,输入命令后回车,再输入密码即可登录服务器。 - 快捷方式:创建快捷方式,运行后直接输入密码即可登录,无需重复输入命令。
(二)数据库查看
- 查看所有数据库命令:
show databases; - 注意事项:每条 SQL 语句或指令需以分号结尾,不可遗漏。
(三)数据库创建
- 基本语法
- 简单写法:
create DATABASE 数据库名; - 带校验写法:
create DATABASE if not exists 数据库名;,仅当数据库不存在时才创建。 - 推荐写法(指定字符集和排序规则):
create DATABASE if not exists 数据库名 character set utf8mb4 collate utf8mb4_0900_ai_ci;
- 简单写法:
- 字符集与排序规则说明
- 字符集默认推荐使用
utf8mb4,确保中文可正常写入。 - 排序规则
utf8mb4_0900_ai_ci中,AI表示口音不敏感,CI表示大小写不敏感,可使用默认值。 - MySQL 5.7 版本默认编码集为拉丁文,不指定字符集可能导致中文无法写入;8.0 版本按推荐写法即可。
- 字符集默认推荐使用
- 关键字命名规则
- 若需使用
create、DATABASE等 MySQL 关键字作为数据库名或字段名,需用反引号(键盘 ESC 下方、Tab 键上方、数字 1 左边,英文状态下输入)将关键字引起来。 - 示例:
create DATABASEDATABASE;、create DATABASEcreate;
- 若需使用
(四)数据库选择
- 选择命令:
use 数据库名,分号可加可不加。 - 查看当前选择的数据库:
select database();,返回null表示未选择数据库。 - 作用:选择数据库后,后续所有 SQL 指令均针对该数据库的数据进行操作。
(五)数据库删除
- 删除语法:
drop DATABASE [if exists] 数据库名;if exists为可选校验条件,若数据库存在则删除,不存在则返回警告信息。- 示例:
drop DATABASE if exists testDB2;、drop DATABASEcreate;(删除关键字命名的数据库需加反引号)
- 注意事项
- 开发环境:可练习删除测试库(如
test、DB2等),熟悉操作流程。 - 生产环境 / 工作中:严禁随意删除数据库,操作风险极高。
- 必要删除流程:需联系领导和同事共同确认,保留聊天记录、邮件等批准证据,避免单人承担责任。
- 后果说明:恶意删库可能面临法律责任;工作失误可能导致年终奖取消、影响晋升。
- 开发环境:可练习删除测试库(如
(六)数据恢复机制
- 磁盘层面恢复
- Linux 系统服务器无回收站,删除文件仅标记为 "已删除状态",文件实际仍存在磁盘中。
- 若文件未被多次覆盖,可通过磁盘厂商技术恢复(需付费);多次覆盖(3 - 10 次)仍有恢复可能,军用级别格式化(多次覆盖垃圾数据)后难以恢复,极端情况需物理破坏磁盘。
- 日志恢复
- MySQL 执行删除、修改、新增等操作时,会记录操作日志(查询操作记录在通用查询日志)。
- 误删数据库后,可通过日志重新执行所有操作,实现数据恢复。
- 备份恢复
- 全量备份:每周或定期备份数据库所有数据。
- 增量备份:每天备份新增数据。
- 恢复方式:通过全量备份 + 增量备份,可恢复至最近备份节点的数据,仅可能损失当天部分数据。
- 安全保障补充
- 生产环境数据库多以集群形式部署,日志多副本存储,单台机器日志删除不影响恢复。
- 备份服务器异地部署(如西安生产服务器,北京备份服务器),应对自然灾害等极端情况。
- 机房供电保障:与电厂直连专用线路 + 大型 UPS 备用电源(支持机房运行 15 - 30 分钟) + 自备发电机(配套大型油库),确保服务器稳定运行。
(七)客户端退出
- 退出指令:
\q、quit、exit,三种指令功能一致,输入后即可关闭 MySQL 命令行客户端。 - 优势:相比直接关闭窗口,指令退出更稳定,避免程序卡顿。
二、数据类型
(一)数值类型
- 分类与对应说明
- 比特(bit):表示二进制位,取值范围 1 - 64,默认 1 位,可表示布尔类型(0 为假,1 为真),不常用。
- 微小整型(tinyint):1 字节,常用作布尔类型(
tinyint(1)),对应 Java 的byte、C 语言的char。 - 小整型(smallint):2 字节,对应 Java 的
short。 - 整型(int):4 字节,对应 Java 的
int,适用于常规整数存储。 - 大整型(bigint):8 字节,对应 Java 的
long,推荐用于表的主键 / 唯一键(自增编号),避免数据溢出。 - 单精度浮点型(float):精度不高,不常用。
- 双精度浮点型(double):精度不高,不常用。
- 高精度小数型(decimal / 数字类型):无精度丢失,推荐用于金额等场景,
m表示有效数字长度(不含小数点和负号),d表示小数位数。
- 关键注意点
decimal默认值:省略m默认 10,省略d默认 0(仅存整数),m最大 65,d最大 30。- 金额表示方案:要么用
decimal类型,要么将 "元" 转为 "分",用int类型存储,避免精度丢失。 - 无符号类型:不建议通过
unsigned(无符号)扩充数据容量,数据放不下时直接升级为更大类型(如int→bigint),优先保证数据安全性,无需过度担心存储空间浪费。
(二)字符串类型
- 常用类型
- 可变长度字符串(varchar):最常用,
size指定最大字符数(0 - 65535 字节),存储时按实际字符长度占用空间。 - 文本类型(text/mediumtext/bigtext):
text最大存储 16383 字符(UTF8MB4 编码),适用于文章、帖子等长文本;mediumtext、bigtext容量更大,按需选择。 - 二进制类型(blob/mediumblob/bigblob):存储二进制数据(如文件),不推荐在数据库中存储大文件,建议将文件存于磁盘,数据库仅记录文件路径。
- 可变长度字符串(varchar):最常用,
- 重要说明
- 字符与字节区别:
varchar(size)的size是字符数,非字节数;UTF8MB4 编码下,1 个字符占 1 - 4 字节(英文 1 字节,中文 3 - 4 字节,表情 4 字节)。 - 容量计算:
varchar最大 65535 字节,UTF8MB4 编码下最多存储 16383 个字符(65535÷4)。 - 文本文件与二进制文件区别:文本文件(如记事本、Java 源码)人类可直接读懂;二进制文件(如 Excel、图片)需专用软件解析,文本编辑器打开显示乱码。
- 字符与字节区别:
(三)日期类型
- 类型对比
- 时间戳(timestamp):4 字节,范围 1970 - 2038 年,2038 年后可能溢出,不推荐使用。
- 日期时间型(datetime):8 字节,范围 1000 - 9999 年,无溢出风险,推荐使用,对应 Java 的
Date类型。
- 历史问题参考:类似 "千年虫" 问题,
timestamp的 2038 年溢出可预见,提前使用datetime规避风险。
三、表的操作
(一)创建表
-
前提条件:需先使用
use 数据库名选择目标数据库,再创建表。 -
语法结构 sql
sqlcreate table 表名 ( 字段名1 数据类型 [comment '字段说明'], 字段名2 数据类型 [comment '字段说明'] -- 最后一个字段后无逗号 ); -
命名规则
- 表名、字段名均用英文命名,避免中文(可能导致乱码)。
- 名称需体现含义(如学生表
student、商品表goods),实现 "代码即注释"。
-
示例:创建学生表 sql
sqlcreate table student ( id bigint, name varchar(50) comment '学生姓名' ); -
关键要求
- 每个表建议设计
id字段(bigint类型),作为主键 / 唯一标识,避免数据重复。 varchar类型必须指定长度,实际工作中按详细设计文档定义,练习时可合理预估(如姓名varchar(50))。- 字段定义用括号包裹,字段间用英文逗号分隔,最后一个字段无逗号,语句以分号结尾。
- 每个表建议设计
-
验证创建成功:使用
show tables;命令查看当前数据库中的所有表,若显示目标表名则创建成功。
(二)查看表结构
- 命令:
desc 表名;(desc为describe的缩写) - 输出结果说明
- 列名(Field):表中的字段名(如
id、name)。 - 类型(Type):字段的数据类型(如
bigint、varchar(50))。 - 是否允许为空(Null):
YES表示允许为空,NO表示必填。 - 键值(Key):字段的键类型(主键、外键、唯一键等,后续讲解约束时补充)。
- 默认值(Default):字段的默认值(未设置则为
NULL)。 - 额外说明(Extra):字段的补充信息(如自增、注释等)。
- 列名(Field):表中的字段名(如
- 作用:快速核对表结构是否符合设计要求,排查字段类型、长度等错误。
四、核心注意事项
- SQL 语句规范:所有 SQL 语句以分号结尾(
use语句可省略),关键字不区分大小写,但建议统一风格(如小写)。 - 关键字使用:命名时避免直接使用 MySQL 关键字,若必须使用,需用反引号包裹。
- 生产环境禁忌:严禁随意执行
drop开头的删除语句,操作数据库需有敬畏之心,数据是公司核心资产。 - 文档参考:实际工作中,数据类型、字段长度、表结构等需严格遵循详细设计文档,不可随意自定义。
- 练习建议:本地可反复练习创建、删除测试库 / 表,熟悉语法,但需区分开发环境与生产环境的操作边界。