一份超级详细的 Navicat 实操教程,覆盖更多实操细节和注意事项,我会从连接的进阶配置、可视化建表、SQL 语法深度解析、常见问题排查等方面补充,确保你能彻底掌握!
一、数据库连接(以 MySQL 为例,含远程 / 特殊连接)
1. 基础连接(本地)
除了之前的基础步骤,补充细节:
- 端口确认:若 MySQL 端口被修改(如非默认 3306),需先在 MySQL 配置文件(my.cnf/my.ini)中确认
port值,再填入 Navicat。 - 保存密码选项:勾选「保存密码」可避免每次连接重复输入,但注意电脑安全(公共设备不建议)。
2. 远程连接(含 SSH 隧道,企业常用)
若数据库部署在远程服务器(如阿里云 / 腾讯云),通常需通过SSH 隧道连接(避免直接暴露数据库端口):
- 新建 MySQL 连接时,切换到「SSH」标签页:
- SSH 主机:远程服务器 IP(如
121.xxx.xxx.xxx)。 - SSH 端口:默认 22(若服务器修改过需对应填写)。
- SSH 用户:服务器登录账号(如
root)。 - SSH 密码 / 密钥:选密码则填服务器登录密码;选密钥则上传
.pem密钥文件(云服务器常用)。
- SSH 主机:远程服务器 IP(如
- 回到「常规」标签页,主机名填
localhost(因为 SSH 隧道会映射到服务器本地的 MySQL),其他参数(端口、用户名、密码)填服务器上的 MySQL 信息。 - 测试连接,成功后保存。
3. 连接失败排查
- 提示「Can’t connect to MySQL server」:
- 检查远程服务器防火墙是否开放 MySQL 端口(3306)或 SSH 端口(22)。
- 确认 MySQL 授权远程访问(需在服务器执行:
GRANT ALL ON *.* TO '用户名'@'%' IDENTIFIED BY '密码'; FLUSH PRIVILEGES;)。
- 提示「Access denied」:用户名 / 密码错误,或 MySQL 未授权该用户从当前 IP 访问。
二、新建数据库(细节补充)
- 右键服务器→「新建数据库」后,重点参数解析:
- 数据库名:只能用字母、数字、下划线,不能以数字开头(如
test_db合法,123db不建议)。 - 字符集:
utf8:最多存 3 字节字符,不支持 emoji;utf8mb4:是utf8的超集,支持 4 字节字符(如 emoji、特殊中文),强烈推荐。
- 排序规则:
utf8mb4_general_ci:通用排序,不区分大小写(如A和a视为相同),性能好;utf8mb4_bin:二进制排序,区分大小写和字符编码,精准但性能稍差;utf8mb4_unicode_ci:遵循 Unicode 标准排序,适合多语言场景。
- 数据库名:只能用字母、数字、下划线,不能以数字开头(如
- 新建后,双击数据库名即可「打开」,左侧会显示该库下的表、视图等对象。
三、表的创建(可视化 + SQL 双方式)
方式 1:可视化建表(无需写 SQL,新手友好)
- 打开数据库后,点击顶部「表」→「新建表」,进入表设计界面:
- 逐行配置字段:
- 列名:字段名称(如
id、username)。 - 类型:选择数据类型(如
INT、VARCHAR(50)),右侧可配置长度 / 精度。 - 是否为空:取消勾选则为
NOT NULL(非空约束)。 - 默认值:如给
create_time设默认值CURRENT_TIMESTAMP(当前时间)。 - 主键:选中
id字段,点击工具栏「主键」按钮(🔑),再勾选「自动递增」(AUTO_INCREMENT)。
- 列名:字段名称(如
- 高级约束(如唯一键):
- 切换到「索引」标签页→点击「+」→「索引类型」选
UNIQUE→勾选要设为唯一的字段(如username)→命名索引(如idx_username)。
- 切换到「索引」标签页→点击「+」→「索引类型」选
- 保存表:点击「保存」,输入表名(如
user_info),确认后表即创建完成。
方式 2:SQL 建表(深度解析语法 + 示例)
1. 数据类型与约束详解
| 类型 / 约束 | 作用说明 |
|---|---|
INT | 整数类型,范围 - 2147483648~2147483647,适合存 ID、年龄等。 |
VARCHAR(n) | 可变长度字符串,n为最大长度(如VARCHAR(50)最多存 50 个字符),节省空间。 |
DATETIME | 日期时间类型,格式YYYY-MM-DD HH:MM:SS,适合存创建 / 更新时间。 |
NOT NULL | 约束字段不能为空,插入数据时必须给值。 |
UNIQUE | 约束字段值唯一(如用户名不能重复),可建多个唯一键。 |
PRIMARY KEY | 主键(唯一标识记录),一张表只能有一个主键,默认非空且唯一。 |
AUTO_INCREMENT | 仅用于整数主键,插入数据时自动生成递增数值(无需手动填 ID)。 |
DEFAULT | 字段默认值,未插入时自动填充(如age DEFAULT 0)。 |
FOREIGN KEY | 外键(关联其他表),如user_id关联user_info表的id。 |
2. 带外键的建表示例(多表关联)
比如创建「订单表」关联「用户表」:
-- 先创建用户表(主表)
CREATE TABLE user_info (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
age INT DEFAULT 0,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 指定存储引擎和字符集
-- 再创建订单表(从表),通过user_id关联用户表
CREATE TABLE order_info (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
order_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL, -- 小数类型(总位数10,小数位2),适合存金额
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
-- 外键约束:user_id必须存在于user_info表的id中
FOREIGN KEY (user_id) REFERENCES user_info(id)
ON DELETE CASCADE -- 主表记录删除时,从表关联记录也删除
ON UPDATE CASCADE -- 主表id更新时,从表user_id同步更新
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 执行 SQL 的细节
- 选中要执行的 SQL 语句(可按
Ctrl+A全选),点击「运行」(▶️)或按Ctrl+R。 - 若执行失败,底部「日志」面板会显示错误原因(如「字段名重复」「外键关联失败」),需根据提示修正。
四、数据插入(SQL + 可视化,含注意事项)
方式 1:可视化插入
- 双击表名(如
user_info)打开表数据界面→点击「+」号新增一行→填写字段值(id会自动生成,无需填)→点击「保存」(💾)。
方式 2:SQL 插入(进阶示例 + 注意事项)
1. 基础插入(指定字段)
-- 插入时指定字段(推荐,字段顺序可任意)
INSERT INTO user_info (username, age) VALUES ('张三', 25);
2. 省略字段的插入(需按表字段顺序填值)
-- 若省略字段,需按表的字段顺序(id, username, age, create_time)填值,自增字段用NULL占位
INSERT INTO user_info VALUES (NULL, '李四', 30, DEFAULT); -- DEFAULT表示用默认值
3. 批量插入(高效)
INSERT INTO user_info (username, age)
VALUES
('王五', 28),
('赵六', 32),
('孙七', 22); -- 最后一行末尾用分号
4. 插入注意事项
- 值的类型匹配:如
age是INT,不能插入字符串(如'abc');price是DECIMAL,不能插入超过位数的值(如12345678901.23会超出DECIMAL(10,2))。 - 非空约束:若字段设了
NOT NULL,插入时必须给值(如username不能不填)。 - 唯一约束:若插入重复的
username,会报错「Duplicate entry」,需确保值唯一。
5. 验证插入结果
-- 查询所有数据
SELECT * FROM user_info;
-- 条件查询(如查年龄>25的用户)
SELECT username, age FROM user_info WHERE age > 25;
五、常见问题与解决
- 建表时报「Unknown storage engine ‘InnoDB’」:
- 原因:MySQL 未启用 InnoDB 引擎。
- 解决:修改 MySQL 配置文件,确保
default-storage-engine=InnoDB,重启 MySQL 服务。
- 插入中文乱码:
- 原因:数据库 / 表的字符集不是
utf8mb4,或连接字符集不匹配。 - 解决:
- 建库 / 建表时指定
CHARSET=utf8mb4; - 新建 Navicat 连接时,切换到「高级」标签页,设置「字符集」为
utf8mb4。
- 建库 / 建表时指定
- 原因:数据库 / 表的字符集不是
- 外键插入失败:
- 原因:插入的
user_id在user_info表中不存在。 - 解决:先插入主表(
user_info)数据,再插入从表(order_info)数据。
- 原因:插入的
总结
- 连接数据库:本地用常规配置,远程优先用 SSH 隧道;连接失败先查防火墙、权限和端口。
- 建表:可视化适合新手,SQL 适合复杂需求;务必选
utf8mb4字符集,合理用主键 / 外键约束。 - 插入数据:批量插入更高效,需保证值的类型与约束匹配;插入后用
SELECT验证结果。
掌握这些细节后,你可以进一步尝试表的修改(ALTER TABLE)、数据更新(UPDATE)和删除(DELETE),Navicat 的「查询构建器」还能可视化写 SQL 哦!
2万+

被折叠的 条评论
为什么被折叠?



