# 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/)

點擊免費試用后跳轉到下載頁面,根據自己當前的操作系統選擇試用的產品下載安裝。
>[info] 好的產品需要好的工程師,好的工程師需要資金的支持,如果條件允許請支持正版。如果條件不允許,請在條件允許后支持正版。
# 啟動mysql
教程中我們使用開源免費的mysql數據庫,該軟件已集成于我們上節安裝的xampp中。啟動的方法與上節中啟動apache的方法完全相同。

打開xampp并在服務中選擇mysql后點擊右側的start按鈕。
>[warning] 如果未能成功啟動,大多數也是由于端口沖突造成的。解決的方法同前面我們講過的解決apache的端口沖突問題。mysql默認工作在3306端口,你可以將此端口更改為3307或其它未占用的端口。
# 新建連接
打開navicat管理工具,新建一個連接。如下圖所示:

隨意起一個連接名,比如為localhost,主機或IP地址、端口號、用戶名和密碼均可保持默認。如下圖所示:

即主機名或IP地址:`localhost`,端口:`3306`,用戶名:`root`,密碼:空,如果有其它項則保持默認。
填寫完成后點擊左下角的:連接測試 按鈕。

>[info] 以上截圖發生在不同的操作系統、不同的navicat版本上。各個版本在各個操作系統的使用大同小異。
# 新建數據庫
雙擊左側連接名`localhost`,打開該連接。

然后右擊`localhost`,選擇“新建數據庫”

在彈出的對話框中填寫數據庫名稱`tp6`,字符設置為`utf8mb4`,默認排序方式選擇`utf8mb4_general_ci`。
# 初始化數據表

雙擊數據庫名tp6打開需要操作的數據庫,選擇“查詢 Queries”,在右側查詢窗口中,點擊【新建 New】按鈕打開“查詢編輯器”。

輸入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;
```

然后我們回到tables數據表,刷新數據表,則可以看到新建的yunzhi_teacher數據表。

即可看到新建的數據表,雙擊數據表打開后,測試數據顯示如上:
好的,至此,我們已經在數據表中添加了測試數據。隨著項目的推進,我們會越來越多的來操作數據庫這個東西。前期,學到這里,沒有出錯,能看到測試數據,就已經達到了我們現在的目的。
# 發生了什么
本節中我們在navicat中成功的連接了xampp中集成的mysql,接著使用新建一個tp6數據庫,最后使用運行sql語句的方式新建了yunzhi_teacher數據表,并初始化了兩條測試數據。

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默認路由