目录
[一、Navicat 是什么?](#一、Navicat 是什么?)
[七、Navicat 的下载和安装](#七、Navicat 的下载和安装)
[八、Navicat 的使用](#八、Navicat 的使用)
一、Navicat 是什么?
Navicat 是一款功能强大、广受欢迎的数据库管理和开发工具。它提供了一个图形化用户界面,让用户能够直观、便捷地连接、操作和管理多种类型的关系数据库及云数据库。
简单来说,它是一个 "数据库的图形化操作客户端"。你不必再完全依赖命令行来操作数据库,而是可以通过点击、拖拽、填写表单等方式完成大部分工作。
二、支持的数据源
Navicat 支持非常广泛的数据库系统,通过不同的产品版本实现:
-
主流关系型数据库 :MySQL, MariaDB, SQL Server, Oracle, PostgreSQL
-
云数据库 :Amazon RDS, Amazon Aurora, Amazon Redshift, Google Cloud, Microsoft Azure 等云平台的数据库实例。
-
NoSQL 数据库 :MongoDB, Redis(在特定版本中支持)。
-
其他:SQLite, OceanBase, TiDB 等。
通常,Navicat 有 Premium(旗舰版,支持所有数据库)和针对单一数据库的版本(如 Navicat for MySQL)。
三、核心功能与特性
1、可视化连接与管理
-
轻松配置和管理多个数据库连接,支持 SSH 和 HTTP 隧道,保障连接安全。
-
以树状结构浏览数据库对象(表、视图、存储过程、函数、触发器等)。
2、数据可视化编辑与查询
-
智能表格编辑器:像操作 Excel 一样查看、添加、修改、删除数据。支持筛选、排序、查找/替换。
-
强大的 SQL 编辑器:
-
语法高亮和代码自动完成,提升编码效率。
-
快速执行 SQL 语句,并网格或表单形式查看结果。
-
可视化创建查询(Query Builder),通过拖拽建立复杂查询,无需手动编写所有 SQL。
-
3、数据导入与导出
-
支持超过 15 种数据格式,如 Excel、CSV、JSON、XML、TXT 等。
-
提供向导式导入/导出流程,可灵活设置字段映射和转换规则。
-
支持从 ODBC 数据源导入。
4、数据模型与设计
-
逆向工程:根据现有数据库生成直观的实体关系图。
-
正向工程:通过设计 E-R 图,生成并同步到物理数据库。
-
便于进行数据库结构设计、分析和文档生成。
5、数据同步与结构同步
-
数据同步:在两个数据库之间进行数据比对和同步,确保数据一致性。支持单向和双向同步。
-
结构同步:比对两个数据库的结构差异(如表、字段、索引),并生成迁移脚本,使目标库与源库结构一致。在部署和版本升级时非常有用。
6、备份、恢复与数据传输
-
提供数据库的定时备份和还原功能。
-
数据传输:将整个数据库对象(结构+数据)从一个数据库服务器快速迁移到另一个,支持跨不同数据库类型(如 MySQL 到 PostgreSQL)。
7、高级工具
-
报表创建工具:设计、生成和打印美观的数据库报表。
-
作业调度:创建自动化任务(如备份、数据同步、SQL 脚本执行),并设置定时运行。
-
用户权限管理:可视化地管理数据库用户的权限和角色(针对支持此功能的数据库,如 MySQL)。
-
服务器监控(部分版本):监控数据库服务器的状态,如连接数、状态变量等。
四、主要优势
-
跨平台与跨数据库:支持 Windows, macOS, Linux。Premium 版可在一个界面管理多种数据库,方便异构环境工作。
-
高效生产力:GUI 操作大大降低了数据库管理和 SQL 编写的学习门槛,自动化工具节省了大量重复性劳动时间。
-
直观易用:界面设计友好,功能布局清晰,即使是非资深 DBA (数据库管理者)也能快速上手。
-
稳定可靠:作为一款成熟的商业软件,其稳定性和性能通常优于一些开源免费工具。
-
安全性:支持安全的连接方式,并提供本地数据加密,保护连接信息和查询。
五、适用人群与场景
-
数据库管理员:进行日常的备份、恢复、监控、用户管理、数据同步。
-
软件开发人员:在开发过程中查看、修改数据,调试 SQL,管理数据库结构。
-
数据分析师/业务人员:通过图形界面查询和导出所需数据,无需深入掌握复杂 SQL。
-
系统架构师/数据建模师:进行数据库结构设计,生成 E-R 图。
-
场景:数据库开发与维护、数据迁移项目、数据报表生成、数据库设计教学、多数据库环境统一管理。
六、使用建议与注意事项
-
版本选择:根据你主要使用的数据库类型选择对应版本(如只用 MySQL 就选 for MySQL),如果管理多种数据库则选 Premium。
-
替代品:
-
开源免费:DBeaver(功能全面,社区版免费)、HeidiSQL(Windows,专精 MySQL)、pgAdmin(专精 PostgreSQL)、MySQL Workbench(官方工具)。
-
其他商业软件:DataGrip(JetBrains 出品,以智能编码见长)、SQLyog 等。
-
-
注意 :Navicat 是 商业软件,需要购买许可证。提供 14 天全功能免费试用。
-
最佳实践 :对于生产环境的敏感操作(如删除数据、修改结构),务必在执行前 仔细检查 SQL 语句 或做好备份,图形化工具虽方便,但一键误操作也可能造成损失。
七、Navicat的下载和安装
Navicat 是一款为数据库专业人士和开发者设计的"瑞士军刀"式全能工具 。它将数据库管理的复杂性封装在直观的图形界面之后,极大地提升了工作效率,是许多团队和个人进行数据库操作的得力助手。是否选择它,可以权衡其带来的效率提升与所需的商业授权成本。对于初学者,也可以先用其免费试用版或开源替代品来体验图形化数据库管理的便利。下面将介绍如何下载和安装Navicat 这款软件。Navicat 的官方网站:Navicat GUI | Comprehensive Database Management Tool

然后我们在右上角选择Navicat 官方网站的语言,如下:


然后我们再点击左上角的产品按钮,选择如下:


Navicat Premium Lite 是 Navicat 的精简版,它包含了用户执行主要的基本数据库操作所需的核心功能。它允许你同时连接到各种数据库平台,包括 MySQL、PostgreSQL、SQL Server、Oracle、MariaDB、Snowflake,以及 Redis 和 MongoDB 等NoSQL 数据库,所有这些操作都可以通过一个应用程序来完成。此外,Navicat Premium Lite 兼容达梦、金仓、GaussDB、OceanBase、TiDB、IvorySQL 和 PolarDB 数据库。Navicat Premium Lite 可用于商业和非商业目的,使其成为从小型企业到个体开发者等用户的实用选择。每家机构最多可使用5个Navicat Premium Lite免费用户账户。
我们点击"免费下载"跳到下面的页面,选择第二个,第二个为中文,navicat170_premium_lite_cs_x64 是一个文件名,通常对应 Navicat 数据库管理工具的一个特定版本。如下:
我们可以将这个名称拆解为几个部分来理解其含义,即文件名拆解与解释:
| 部分 | 含义 |
|---|---|
| navicat | PremiumSoft 开发的数据库管理与开发工具,支持 MySQL、MariaDB、Oracle、PostgreSQL、SQL Server、MongoDB、Redis 等多种数据库 |
| 170 | 版本号,指 Navicat 17.0 版本(2024 年发布的第 17 代产品) |
| premium | 高级版,支持多种数据库类型,提供最完整的功能套件(区别于单一数据库版本如"Navicat for MySQL") |
| lite | 精简版,移除了数据同步、备份、模型设计、代码调试等高级功能,适合轻量级使用场景 |
| cs | 通常指"Chinese Simplified"(简体中文),表示软件包含简体中文语言包或界面为简体中文 |
| x64 | 64 位系统版本,专为 64 位 Windows 操作系统设计 |
如下,安装步骤一路往下即可,没有什么特别要注意的:
不用管我下面的界面是英文的,因为我在安装的时候傻乎乎地安装了英文版的(也就是第一个),后来才发现,现在改回来中文版的了,将就着看吧,都一样的;此时我们要注册Navicat的账号,需要使用到邮箱来注册:
翻译:一封电子邮件已发送给您。请单击电子邮件中的激活链接以激活您的Navicat ID。激活Navicat ID后,您可以使用它登录免费版本的Navicat Premium Lite。
下面是通过邮箱中验证来登录网站上的Navicat云:
登录上后我们返回Navicat的登录页面,使用邮箱和密码来登录,于是就顺利进入Navicat的正常页面了:
此时我们点击左上角的"文件"按钮,下拉选择新建连接,或者直接点击"连接"按键,点击下一步或者直接双击MySQL:
按照下面的步骤一步一步来尝试连接(外部服务器(外地)连接云服务器(本地)),最后连接成功后我们点击确定就返回到主页面了:
八、Navicat 的使用
我们以下面的这个sql文件来举例子怎么使用Navicat:
sql
-- 新建数据库
DROP DATABASE IF EXISTS topic01;
CREATE DATABASE topic01 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
use topic01;
-- 班级表
drop table if exists class;
create table class (
id bigint primary key auto_increment,
name varchar(20)
);
-- 学生表
drop table if exists student;
create table student (
id bigint primary key auto_increment,
name varchar(20) not null,
sno varchar(10) not null,
age int default 18,
gender tinyint(1),
enroll_date date,
class_id bigint,
foreign key (class_id) references class(id)
);
-- 课程表
drop table if exists course;
create table course (
id bigint primary key auto_increment,
name varchar(20)
);
-- 分数表
drop table if exists score;
create table score (
id bigint primary key auto_increment,
score float,
student_id bigint,
course_id bigint,
foreign key (student_id) references student(id),
foreign key (course_id) references course(id)
);
-- 课程表
insert into course (name) values ('Java'), ('C++'), ('MySQL'), ('操作系统'), ('计算机网络'), ('数据结构');
-- 班级表
insert into class(name) values ('Java001班'), ('C++001班'), ('前端001班');
-- 学生表
insert into student (name, sno, age, gender, enroll_date, class_id) values
('唐三藏', '100001', 18, 1, '1986-09-01', 1),
('孙悟空', '100002', 18, 1, '1986-09-01', 1),
('猪悟能', '100003', 18, 1, '1986-09-01', 1),
('沙悟净', '100004', 18, 1, '1986-09-01', 1),
('宋江', '200001', 18, 1, '2000-09-01', 2),
('武松', '200002', 18, 1, '2000-09-01', 2),
('李逹', '200003', 18, 1, '2000-09-01', 2),
('不想毕业', '200004', 18, 1, '2000-09-01', 2);
-- 成绩表
insert into score (score, student_id, course_id) values
(70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6),
(60, 2, 1),(59.5, 2, 5),
(33, 3, 1),(68, 3, 3),(99, 3, 5),
(67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6),
(81, 5, 1),(37, 5, 5),
(56, 6, 2),(43, 6, 4),(79, 6, 6),
(80, 7, 2),(92, 7, 6);
-- 创建考试成绩表练习表
DROP TABLE IF EXISTS exam;
CREATE TABLE exam (
id bigint,
name VARCHAR(20),
chinese DECIMAL(4,1),
math DECIMAL(4,1),
english DECIMAL(4,1)
);
-- 插入测试数据
INSERT INTO exam (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);
首先我们选择左上角的新建查询,然后将上面的文件内容复制到新建的查询中,如下:

此时我们选择其中的一部分,可以看到原本的"运行"按钮变成了"运行已选择的":

此时我们点击"运行已选择的"这个按钮,可以看到已经成功运行,并打印出运行成功结果:

可见如果选中部分我们想要选择的SQL语句的话就是执行该部分,而不是全部执行;相反如果不选的话,只是点击"运行"这个按钮,则会全部执行,如下:

除了显示点击运行相关的按钮,我们也可以使用快捷方式直接运行所选或者全部的SQL语句,即Ctrl+R。
此处经过上面的全部SQL语句执行完后,我们可以右击当前的连接,往下找到"刷新"这个按键,刷新一下,因为此时topic01这个数据库的图标可能还没有显示出来,所以需要刷新一下(反正遇事不决就右键对应的地方看看有没有解决方法):

我们点击topic01这个数据库,可以看到如下已经创建的东西:
