MySQL数据库基础操作

一、数据库基础操作

(一)数据库连接

  1. 连接工具:MySQL 安装成功后自带的命令行客户端。
  2. 连接命令:mysql -u用户名 -p,输入命令后回车,再输入密码即可登录服务器。
  3. 快捷方式:创建快捷方式,运行后直接输入密码即可登录,无需重复输入命令。

(二)数据库查看

  1. 查看所有数据库命令:show databases;
  2. 注意事项:每条 SQL 语句或指令需以分号结尾,不可遗漏。

(三)数据库创建

  1. 基本语法
    • 简单写法:create DATABASE 数据库名;
    • 带校验写法:create DATABASE if not exists 数据库名;,仅当数据库不存在时才创建。
    • 推荐写法(指定字符集和排序规则):create DATABASE if not exists 数据库名 character set utf8mb4 collate utf8mb4_0900_ai_ci;
  2. 字符集与排序规则说明
    • 字符集默认推荐使用utf8mb4,确保中文可正常写入。
    • 排序规则utf8mb4_0900_ai_ci中,AI表示口音不敏感,CI表示大小写不敏感,可使用默认值。
    • MySQL 5.7 版本默认编码集为拉丁文,不指定字符集可能导致中文无法写入;8.0 版本按推荐写法即可。
  3. 关键字命名规则
    • 若需使用createDATABASE等 MySQL 关键字作为数据库名或字段名,需用反引号(键盘 ESC 下方、Tab 键上方、数字 1 左边,英文状态下输入)将关键字引起来。
    • 示例:create DATABASE DATABASE;create DATABASE create;

(四)数据库选择

  1. 选择命令:use 数据库名,分号可加可不加。
  2. 查看当前选择的数据库:select database();,返回null表示未选择数据库。
  3. 作用:选择数据库后,后续所有 SQL 指令均针对该数据库的数据进行操作。

(五)数据库删除

  1. 删除语法:drop DATABASE [if exists] 数据库名;
    • if exists为可选校验条件,若数据库存在则删除,不存在则返回警告信息。
    • 示例:drop DATABASE if exists testDB2;drop DATABASE create;(删除关键字命名的数据库需加反引号)
  2. 注意事项
    • 开发环境:可练习删除测试库(如testDB2等),熟悉操作流程。
    • 生产环境 / 工作中:严禁随意删除数据库,操作风险极高。
    • 必要删除流程:需联系领导和同事共同确认,保留聊天记录、邮件等批准证据,避免单人承担责任。
    • 后果说明:恶意删库可能面临法律责任;工作失误可能导致年终奖取消、影响晋升。

(六)数据恢复机制

  1. 磁盘层面恢复
    • Linux 系统服务器无回收站,删除文件仅标记为 "已删除状态",文件实际仍存在磁盘中。
    • 若文件未被多次覆盖,可通过磁盘厂商技术恢复(需付费);多次覆盖(3 - 10 次)仍有恢复可能,军用级别格式化(多次覆盖垃圾数据)后难以恢复,极端情况需物理破坏磁盘。
  2. 日志恢复
    • MySQL 执行删除、修改、新增等操作时,会记录操作日志(查询操作记录在通用查询日志)。
    • 误删数据库后,可通过日志重新执行所有操作,实现数据恢复。
  3. 备份恢复
    • 全量备份:每周或定期备份数据库所有数据。
    • 增量备份:每天备份新增数据。
    • 恢复方式:通过全量备份 + 增量备份,可恢复至最近备份节点的数据,仅可能损失当天部分数据。
  4. 安全保障补充
    • 生产环境数据库多以集群形式部署,日志多副本存储,单台机器日志删除不影响恢复。
    • 备份服务器异地部署(如西安生产服务器,北京备份服务器),应对自然灾害等极端情况。
    • 机房供电保障:与电厂直连专用线路 + 大型 UPS 备用电源(支持机房运行 15 - 30 分钟) + 自备发电机(配套大型油库),确保服务器稳定运行。

(七)客户端退出

  1. 退出指令:\qquitexit,三种指令功能一致,输入后即可关闭 MySQL 命令行客户端。
  2. 优势:相比直接关闭窗口,指令退出更稳定,避免程序卡顿。

二、数据类型

(一)数值类型

  1. 分类与对应说明
    • 比特(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表示小数位数。
  2. 关键注意点
    • decimal默认值:省略m默认 10,省略d默认 0(仅存整数),m最大 65,d最大 30。
    • 金额表示方案:要么用decimal类型,要么将 "元" 转为 "分",用int类型存储,避免精度丢失。
    • 无符号类型:不建议通过unsigned(无符号)扩充数据容量,数据放不下时直接升级为更大类型(如intbigint),优先保证数据安全性,无需过度担心存储空间浪费。

(二)字符串类型

  1. 常用类型
    • 可变长度字符串(varchar):最常用,size指定最大字符数(0 - 65535 字节),存储时按实际字符长度占用空间。
    • 文本类型(text/mediumtext/bigtext):text最大存储 16383 字符(UTF8MB4 编码),适用于文章、帖子等长文本;mediumtextbigtext容量更大,按需选择。
    • 二进制类型(blob/mediumblob/bigblob):存储二进制数据(如文件),不推荐在数据库中存储大文件,建议将文件存于磁盘,数据库仅记录文件路径。
  2. 重要说明
    • 字符与字节区别:varchar(size)size是字符数,非字节数;UTF8MB4 编码下,1 个字符占 1 - 4 字节(英文 1 字节,中文 3 - 4 字节,表情 4 字节)。
    • 容量计算:varchar最大 65535 字节,UTF8MB4 编码下最多存储 16383 个字符(65535÷4)。
    • 文本文件与二进制文件区别:文本文件(如记事本、Java 源码)人类可直接读懂;二进制文件(如 Excel、图片)需专用软件解析,文本编辑器打开显示乱码。

(三)日期类型

  1. 类型对比
    • 时间戳(timestamp):4 字节,范围 1970 - 2038 年,2038 年后可能溢出,不推荐使用。
    • 日期时间型(datetime):8 字节,范围 1000 - 9999 年,无溢出风险,推荐使用,对应 Java 的Date类型。
  2. 历史问题参考:类似 "千年虫" 问题,timestamp的 2038 年溢出可预见,提前使用datetime规避风险。

三、表的操作

(一)创建表

  1. 前提条件:需先使用use 数据库名选择目标数据库,再创建表。

  2. 语法结构 sql

    sql 复制代码
    create table 表名 (
        字段名1 数据类型 [comment '字段说明'],
        字段名2 数据类型 [comment '字段说明']
        -- 最后一个字段后无逗号
    );
  3. 命名规则

    • 表名、字段名均用英文命名,避免中文(可能导致乱码)。
    • 名称需体现含义(如学生表student、商品表goods),实现 "代码即注释"。
  4. 示例:创建学生表 sql

    sql 复制代码
    create table student (
        id bigint,
        name varchar(50) comment '学生姓名'
    );
  5. 关键要求

    • 每个表建议设计id字段(bigint类型),作为主键 / 唯一标识,避免数据重复。
    • varchar类型必须指定长度,实际工作中按详细设计文档定义,练习时可合理预估(如姓名varchar(50))。
    • 字段定义用括号包裹,字段间用英文逗号分隔,最后一个字段无逗号,语句以分号结尾。
  6. 验证创建成功:使用show tables;命令查看当前数据库中的所有表,若显示目标表名则创建成功。

(二)查看表结构

  1. 命令:desc 表名;descdescribe的缩写)
  2. 输出结果说明
    • 列名(Field):表中的字段名(如idname)。
    • 类型(Type):字段的数据类型(如bigintvarchar(50))。
    • 是否允许为空(Null):YES表示允许为空,NO表示必填。
    • 键值(Key):字段的键类型(主键、外键、唯一键等,后续讲解约束时补充)。
    • 默认值(Default):字段的默认值(未设置则为NULL)。
    • 额外说明(Extra):字段的补充信息(如自增、注释等)。
  3. 作用:快速核对表结构是否符合设计要求,排查字段类型、长度等错误。

四、核心注意事项

  1. SQL 语句规范:所有 SQL 语句以分号结尾(use语句可省略),关键字不区分大小写,但建议统一风格(如小写)。
  2. 关键字使用:命名时避免直接使用 MySQL 关键字,若必须使用,需用反引号包裹。
  3. 生产环境禁忌:严禁随意执行drop开头的删除语句,操作数据库需有敬畏之心,数据是公司核心资产。
  4. 文档参考:实际工作中,数据类型、字段长度、表结构等需严格遵循详细设计文档,不可随意自定义。
  5. 练习建议:本地可反复练习创建、删除测试库 / 表,熟悉语法,但需区分开发环境与生产环境的操作边界。
相关推荐
DarkAthena2 小时前
【GaussDB】从 sqlplus 到 gsql:Shell 中执行 SQL 文件方案的迁移与改造
数据库·sql·oracle·gaussdb
Wpa.wk2 小时前
接口自动化 - 了解接口自动化框架RESTAssured (Java版)
java·数据库·自动化
二等饼干~za8986682 小时前
GEO优化---关键词搜索排名源码开发思路分享
大数据·前端·网络·数据库·django
程序员柒叔2 小时前
Dify 集成-向量数据库
数据库·milvus·向量数据库·工作流·dify·向量库
月明长歌2 小时前
MySQL 视图:把复杂查询封装成表,并且还能控权限、做解耦
数据库·mysql
l1t2 小时前
postgresql 18版bytea 类型转换的改进
数据库·postgresql
小蒜学长2 小时前
python餐厅点餐系统(代码+数据库+LW)
数据库·spring boot·后端·python
岳麓丹枫0012 小时前
PostgreSQL 中 create database 中的注意事项
数据库·postgresql
梦想画家2 小时前
告别关键词!PostgreSQL+pgvector 玩转语义和图像检索
数据库·postgresql