# navicat
虽然我们可以通过命令行的方法来操作mysql数据库,但这无疑增加了学习的难度。一个好的学习路径必然是平缓的,我们在此为了塑造大脑更易接受的平滑学习曲线。使用非常好用的navicat来管理数据库。
Navicat是香港卓软数码科技有限公司生产的一系列MySQL、MariaDB、Oracle、SQLite、PostgreSQL 及Microsoft SQL Server图形化资料库管理及发展软件。
Navicat官方下载地址:
[https://www.navicat.com.cn/products/](https://www.navicat.com.cn/products/)
![](https://img.kancloud.cn/51/e5/51e59dc9e25b8ef714251bff7457e502_583x225.png)
点击免费试用后跳转到下载页面,根据自己当前的操作系统选择试用的产品下载安装。
>[info] 好的产品需要好的工程师,好的工程师需要资金的支持,如果条件允许请支持正版。如果条件不允许,请在条件允许后支持正版。
# 启动mysql
教程中我们使用开源免费的mysql数据库,该软件已集成于我们上节安装的xampp中。启动的方法与上节中启动apache的方法完全相同。
![](https://img.kancloud.cn/16/a2/16a26c24ef2530156320cdbce3d0d415_666x473.png)
打开xampp并在服务中选择mysql后点击右侧的start按钮。
>[warning] 如果未能成功启动,大多数也是由于端口冲突造成的。解决的方法同前面我们讲过的解决apache的端口冲突问题。mysql默认工作在3306端口,你可以将此端口更改为3307或其它未占用的端口。
# 新建连接
打开navicat管理工具,新建一个连接。如下图所示:
![](https://box.kancloud.cn/2016-06-16_5762164f8f5ae.png)
随意起一个连接名,比如为localhost,主机或IP地址、端口号、用户名和密码均可保持默认。如下图所示:
![](https://box.kancloud.cn/2016-06-16_5762164fa5b02.png)
即主机名或IP地址:`localhost`,端口:`3306`,用户名:`root`,密码:空,如果有其它项则保持默认。
填写完成后点击左下角的:连接测试 按钮。
![](https://img.kancloud.cn/13/5c/135c43c7842a274419eaf9818a76ad7f_417x135.png)
>[info] 以上截图发生在不同的操作系统、不同的navicat版本上。各个版本在各个操作系统的使用大同小异。
# 新建数据库
双击左侧连接名`localhost`,打开该连接。
![](https://box.kancloud.cn/2016-06-16_5762164fbc19d.png)
然后右击`localhost`,选择“新建数据库”
![](https://img.kancloud.cn/21/c2/21c2c3250317c26ccb192678f58d176d_478x176.png)
在弹出的对话框中填写数据库名称`tp6`,字符设置为`utf8mb4`,默认排序方式选择`utf8mb4_general_ci`。
# 初始化数据表
![](https://img.kancloud.cn/32/a1/32a1b4df6279efa618960fbfd6e896e1_712x463.png)
双击数据库名tp6打开需要操作的数据库,选择“查询 Queries”,在右侧查询窗口中,点击【新建 New】按钮打开“查询编辑器”。
![](https://img.kancloud.cn/0f/9f/0f9faa09b78784f1fa78a263f9fff950_735x360.png)
输入SQL语句后,点击【运行 Run】按钮执行该SQL语句。
执行的SQL语句如下:
```sql
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for yunzhi_teacher
-- ----------------------------
DROP TABLE IF EXISTS `yunzhi_teacher`;
CREATE TABLE `yunzhi_teacher` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT '' COMMENT '姓名',
`sex` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '0男,1女',
`username` varchar(16) NOT NULL COMMENT '用户名',
`email` varchar(30) DEFAULT '' COMMENT '邮箱',
`create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `teacher_username_unique` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of yunzhi_teacher
-- ----------------------------
BEGIN;
INSERT INTO `yunzhi_teacher` VALUES (1, '张三', 0, 'zhangsan', 'zhangsan@mail.com', 123123, 123213);
INSERT INTO `yunzhi_teacher` VALUES (2, '李四', 0, 'lisi', 'lisi@yunzhi.club', 123213, 1232);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
```
![](https://img.kancloud.cn/15/7e/157e0cb5755c6255680b2d0ec8825c5c_744x435.png)
然后我们回到tables数据表,刷新数据表,则可以看到新建的yunzhi_teacher数据表。
![](https://img.kancloud.cn/62/8d/628d57aa6de3cf68af156968ece9d2e6_592x82.png)
即可看到新建的数据表,双击数据表打开后,测试数据显示如上:
好的,至此,我们已经在数据表中添加了测试数据。随着项目的推进,我们会越来越多的来操作数据库这个东西。前期,学到这里,没有出错,能看到测试数据,就已经达到了我们现在的目的。
# 发生了什么
本节中我们在navicat中成功的连接了xampp中集成的mysql,接着使用新建一个tp6数据库,最后使用运行sql语句的方式新建了yunzhi_teacher数据表,并初始化了两条测试数据。
![](https://img.kancloud.cn/87/67/8767bfe023459b95709aa59dec7506a5_187x191.png)
yunzhi_teacher结构如上。其中主键为与业务无关的ID,username添加了UNIQUE索引以保证其唯一性。
我们在版本控制中,建立了sql文件夹,并将上述sql代码存放于该文件中。
# 相关资源
| 内容 | 地址 |
| ----------- | ----------- |
| 本节源码 | [https://github.com/mengyunzhi/tp6/archive/step2.1.zip](https://github.com/mengyunzhi/tp6/archive/step2.1.zip) | |
- 序言
- 第一章 Hello World
- 1.1 运行环境
- 1.1.1 windows
- 1.1.2 macos
- 1.1.3 ubuntu
- 1.2 Hello ThinkPHP
- 1.2.1 windows
- 1.2.2 macos
- 1.2.3 ubuntu
- 2.3 Hello World
- 第二章 教师管理
- 2.1 数据库初始化
- 2.2 CRUD之 R 读取数据
- 1 数据流
- 2.2.2 连接数据库
- 2.2.3 直接读取数据之DB
- 2.2.4 间接读取数据之模型
- 2.2.5 显示数据之原始文案
- 2.2.6 单引号与双引号
- 2.2.7 显示数据之视图
- 2.2.8 模板语法
- 2.2.9 使用bootstrap美化界面
- 2.3 CRUD之 C 增加数据
- 2.3.1 MCA默认路由