在昨天學習到怎麼建立資料庫,接下來要來建立資料庫裡的資料表了,一個資料庫裡面也可以有很多資料表,我們先來建立一個資料表。
每個資料表都會有一個主鍵欄位(PRIMARY KEY),工程師也會稱呼為主key,這個欄位的資料都會是唯一的,不會跟其它人重複,常常會用id這個欄位去代表,也會搭配 AUTO_INCREMENT 讓他自動遞增。
在上次建立資料庫之前 不是要先建立連線嗎
$conn = new mysqli($servername, $username, $password);
這次要在指定的資料庫 新增資料表,所以要先在前面指定要使用哪個資料庫
$dbname="pratice";
$conn = new mysqli($servername, $username, $password, $dbname );
如果你前面忘了指定或是想要動態切換資料庫也可以在後面使用USE
這個語法
$conn = new mysqli($servername, $username, $password );
$conn->query("USE myDB");//切換為 myDB 資料庫
在建立資料表之前 先認識一下常用資料欄位Type
類型 | 資料型態 | 說明 | 範例用途 |
---|---|---|---|
整數 | INT |
一般整數 (4 bytes) | ID、數量 |
BIGINT |
很大的整數 (8 bytes) | 金額、流水號 | |
小數 | DECIMAL(m,d) |
精確小數 (常用於金額) | DECIMAL(10,2) → 99999999.99 |
FLOAT |
單精度小數 (近似值) | 溫度、比例 | |
字串 | VARCHAR(n) |
可變長度字串 | 姓名、Email、帳號 |
TEXT |
大量文字資料 (最常用) | 記事、留言 | |
日期/時間 | DATE |
日期 (YYYY-MM-DD) | 生日、到期日 |
DATETIME |
日期+時間 | 訂單時間 | |
TIMESTAMP |
日期+時間,自動更新 (常用) | 建立/更新時間 | |
布林 | BOOLEAN (其實是 TINYINT(1) ) |
True / False | 啟用狀態、是否已讀 |
認識完常用型態後 接下來就可以正式建立資料表了~ 我們先建立資料表 employees
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname="pratice";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname );
// 建立資料表
$sql = "CREATE TABLE employees (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
$conn->query($sql);
$conn->close();
?>
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
這行拉出來解釋一下
TIMESTAMP
→ 欄位型態,存放「日期+時間」(格式:YYYY-MM-DD HH:MM:SS)。
DEFAULT CURRENT_TIMESTAMP
→ 當你「新增資料」的時候,如果沒有指定這個欄位的值,就會自動填入「當下時間」。
ON UPDATE CURRENT_TIMESTAMP
→ 當這筆資料被「更新」時,這個欄位會自動改成「最新的時間」。
資料表建立完之後,就要來插入資料
$sql = "INSERT INTO employees (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
INSERT INTO 是sql的插入語法 在employees的firstname, lastname, email 這些欄位 插入資料
'John', 'Doe', 'john@example.com' 資料的順序很重要哦,他會照順序插入。
插入結果
示例 (錯誤寫法)
$sql = "INSERT INTO employees (firstname,email)
VALUES ('ss', 'sunny@aaa.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
可以看到這裡我想插入firstname,email這兩個欄位的值分別是ss,sunny@aaa.com,這本身是沒問題的,但是在前面我們建立資料表的時候有設定
lastname VARCHAR(30) NOT NULL
所以這個值不能是空值,如果要插入新資料的話一定這個欄位一定要有值。