Navicat学习01|初步应用实践

📚 一、功能解析:Navicat 是什么?能做什么?

Navicat 是一款强大的数据库管理和开发工具,支持 MySQL、PostgreSQL、Oracle、SQL Server 等多种数据库。

本案使用的是 Navicat Premium(多数据库通用版),

连接的是本地 MySQL 数据库 ama_local

1.2 核心功能模块

功能区 图标/位置 作用
连接管理 左侧"我的连接"树形结构 管理多个数据库连接(如 ama_local, localhost 等)
表操作 "表"标签页 + 工具栏"表"按钮 创建、查看、编辑数据表结构
查询编写 "新建查询"按钮 编写和执行 SQL 语句
数据导出 右键表 → "转储 SQL 文件" 导出表结构或数据为 .sql 文件(如你的 demo.sql)
备份还原 "备份"按钮 定期备份整个数据库
模型设计 "模型"按钮 可视化设计 ER 图、表关系

🛠️ 二、案例操作步骤:以学生表为例的完整工作流

以截图中的 student 表为例,演示从创建连接到导出的全流程。


步骤 1:建立数据库连接

  1. 点击左上角 "连接" 按钮(闪电图标)
  2. 选择 MySQL
  3. 填写连接信息:
    • 连接名称:ama_local
    • 主机:127.0.0.1
    • 端口:3306
    • 用户名:root
    • 密码:输入你的密码
  4. 点击 "测试连接" → 成功后点击 "确定"

✅ 提示:如果报错 1045,请检查密码是否正确


步骤 2:创建数据库和表

2.1 创建数据库
  1. 右键 ama_local 连接 → "新建数据库"
  2. 输入数据库名:demo
  3. 字符集选择:utf8mb4(推荐)
  4. 点击 "确定"
2.2 创建 student 表
  1. 展开 demo 数据库 → 右键 "表""新建表"
  2. 在"设计表"界面添加字段:
字段名 类型 长度 允许 NULL 注释
id int - ❌ 否 主键,自增
number varchar 50 ✅ 是 学号
name varchar 50 ✅ 是 姓名
gender varchar 6 ✅ 是 性别
createDt datetime - ✅ 是 创建日期
  1. 设置主键:选中 id 行 → 勾选 "主键""自动递增"
  2. 点击 "保存" → 输入表名 student

⌨️ 快捷键技巧:

  • 插入字段上方:Insert
  • 插入字段下方:⬇️
  • 删除字段:Delete
  • 保存:Ctrl+S

步骤 3:插入测试数据

方法一:图形化界面插入
  1. 双击打开 student 表 → 进入"数据"视图

  2. 直接在空白行输入数据:

    复制代码
    number: 2026021701
    name: A
    gender: F
    createDt: 2026-02-17 23:02:43
  3. Enter 自动保存

方法二:SQL 语句插入
  1. 点击 "新建查询"

  2. 输入 SQL:

    复制代码
    INSERT INTO student (number, name, gender, createDt) 
    VALUES ('2026021702', 'B', 'F', '2026-02-17 23:03:16');
  3. 点击 "运行" 按钮(绿色三角形)


步骤 4:导出数据为 SQL 文件(如 demo.sql)

  1. 右键 student 表 → "转储 SQL 文件"
  2. 选择:
    • 结构和数据(同时导出建表语句和 INSERT 语句)
    • 编码:UTF-8
    • 目标文件:选择保存路径(如 demo.sql
  3. 点击 "开始" → 生成成功!

📄 demo.sql包含:

  • 建表语句(CREATE TABLE)
  • 插入数据语句(INSERT INTO)
  • 字符集设置(SET NAMES utf8mb4)

截图是 Navicat Premium 导出的 SQL 转储文件(demo.sql),我们用红框标出了三个关键区域:

  1. 📄 文件头信息块(包含服务器、版本、主机等元数据)
  2. 表结构注释-- Table structure for student
  3. 📥 数据记录注释-- Records of student

1️⃣ 文件头信息块(红色框1)

包含的信息:
  • ama_local → 连接名称(自定义,非真实服务器名)
  • MySQL 9.6.0 → 数据库版本(公开信息)
  • 127.0.0.1:3306 → 本地回环地址 + 默认端口(说明是本地开发环境)
  • demo → 数据库名(通常是测试库)
  • 时间戳 → 导出时间

2️⃣ 表结构部分(红色框2)

包含的信息:
  • 表名:student
  • 字段名及类型:id, number, name, gender, createDt
  • 注释:中文说明字段用途

3️⃣ 数据记录部分(红色框3)

包含的信息:
  • 学号:2026021701 ~ 2026021705
  • 姓名:A, B, C, D, E
  • 性别:F / M
  • 创建时间:时间

步骤 5:导入 SQL 文件到其他环境

  1. 在新数据库中右键 → "运行 SQL 文件"(如果不在数据库运行,就会自动保存到sys或其他的系统表中)
  2. 选择之前导出的 demo.sql
  3. 点击 "开始" → 自动执行所有语句

💡 应用场景:迁移数据、部署项目、团队协作共享数据结构


🧩 三、知识扩展:进阶技巧与最佳实践

3.1 常用快捷键速查表

操作 快捷键 说明
新建查询 Ctrl+Q 快速打开查询窗口
执行查询 Ctrl+R 运行当前 SQL 语句
格式化 SQL Ctrl+Shift+F 美化缩进,提高可读性
刷新对象 F5 更新左侧树形结构
查找替换 Ctrl+F / Ctrl+H 在查询编辑器中搜索
撤销/重做 Ctrl+Z / Ctrl+Y 修改表结构时可撤销

3.2 表设计最佳实践

命名规范
  • 表名:小写 + 下划线,如 user_info, order_detail
  • 字段名:语义化,如 created_at, user_id, is_active
  • 避免保留字:不要用 order, group, select 作表名
数据类型选择
需求 推荐类型 说明
整数 ID INT AUTO_INCREMENT 主键首选
短文本 VARCHAR(50) 姓名、邮箱等
长文本 TEXT 文章内容、描述
时间戳 DATETIMETIMESTAMP 记录创建/更新时间
布尔值 TINYINT(1) 0=否,1=是
索引优化
  • 主键自动创建聚簇索引
  • 频繁查询的字段(如 user_id, status)可手动添加索引
  • 右键表 → "索引" → "新建索引"

3.3 安全与性能建议

权限控制
  • 不要始终用 root 用户操作生产库

  • 创建专用用户并限制权限:

    复制代码
    CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password';
    GRANT SELECT, INSERT, UPDATE ON demo.* TO 'app_user'@'localhost';
备份策略
  • 定期使用"备份"功能导出 .nb3 文件(Navicat 专有格式)
  • 结合"自动运行"设置定时任务
性能监控
  • 使用"服务器监控"查看 CPU、内存、连接数
  • 慢查询日志定位瓶颈 SQL

🎯 四、实战练习:巩固所学知识

练习 1:创建图书管理系统表

复制代码
-- 创建 books 表
CREATE TABLE books (
    id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL COMMENT '书名',
    author VARCHAR(50) COMMENT '作者',
    price DECIMAL(10,2) COMMENT '价格',
    published_date DATE COMMENT '出版日期',
    is_available TINYINT(1) DEFAULT 1 COMMENT '是否可借',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入测试数据
INSERT INTO books (title, author, price, published_date) 
VALUES ('Python编程入门', '张三', 59.90, '2025-01-15');

练习 2:导出并重新导入

  1. books 表导出为 books_backup.sql
  2. 删除原表
  3. 重新导入 books_backup.sql
  4. 验证数据完整性

📈 五、常见问题解答(FAQ)

Q1: 为什么导出 SQL 时出现中文乱码?

✅ 解决:确保导出时选择 UTF-8 编码,且数据库字符集为 utf8mb4

Q2: 如何批量修改多个字段?

✅ 解决:在"设计表"界面按住 Ctrl 多选字段 → 右键统一修改属性

Q3: 能否比较两个表结构差异?

✅ 解决:使用"工具"→"结构同步"功能对比不同数据库的表

✅ 解决:切换到"函数"标签页 → 右键存储过程 → "调试"


🏁 六、总结与下一步学习方向

你已经掌握了:

✅ 数据库连接与管理

✅ 表的创建、修改、删除

✅ 数据的增删改查(CRUD)

✅ SQL 文件的导出与导入

✅ 基本快捷键与操作技巧

下一步可以学习:

🔹 复杂查询(JOIN, GROUP BY, 子查询)

🔹 视图、触发器、存储过程

🔹 事务管理与锁机制

🔹 数据库优化与索引调优

🔹 Navicat 高级功能(模型设计、数据同步、报表生成)

相关推荐
数据库小组8 小时前
2026 年,MySQL 到 SelectDB 同步为何更关注实时、可观测与可校验?
数据库·mysql·数据库管理工具·数据同步·ninedata·selectdb·迁移工具
华科易迅8 小时前
MybatisPlus增删改查操作
android·java·数据库
Kethy__9 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
SHoM SSER9 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
熬夜的咕噜猫9 小时前
MySQL备份与恢复
数据库·oracle
jnrjian9 小时前
recover database using backup controlfile until cancel 假recover,真一致
数据库·oracle
lifewange10 小时前
java连接Mysql数据库
java·数据库·mysql
大妮哟10 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.11 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个11 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php