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. 练习建议:本地可反复练习创建、删除测试库 / 表,熟悉语法,但需区分开发环境与生产环境的操作边界。
相关推荐
小陈工3 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull7 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花7 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸7 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain7 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希8 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神8 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员8 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java8 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿9 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb