分成多個 table,不同 table 存不同資料,減少每層的 table 複雜度,這樣的寫法比較有彈性
關連式資料庫:每個 table 都有關係,但切開來會比較好維護及查詢。
COUNT
數量計算 comment 這個 table 有幾個 id
SELECT COUNT(id) FROM 'comment'
SUM
總和計算 comment 這個 table 的 id 數字總和
SELECT SUM(id) FROM 'comment'
AVG
平均計算 comment 這個 table 的 id 數字平均
SELECT AVG(id) FROM 'comment'
CONCAT
合併欄位( 字串連接 )合併 comment 這個 table 的 id & name 的值
SELECT CONCAT(id, name) FROM 'comment'
between
用在數字、日期上( 條件篩選 )找出在某個區間的資料
where number between 2 & 5
in
有點像陣列的 indexOf選出 id 等於 1 || 2 || 3
的欄位
SELECT * FROM 'comments' WHERE id in (1, 2, 3)
like
用在字串上( 比對字元 )%h
: h 開頭的字串%h%
: 任何包含 h 的字串選出包含 o
字串的所有欄位
SELECT * FROM 'comments' WHERE content like '%o%'
用下圖解釋比較清楚:
(image from mattimattila.fi)
ORDER BY
升冪 ascending (小 => 大)
SELECT * FROM users ORDER BY time ASC
降冪 descending(大 => 小)
SELECT * FROM users ORDER BY time DESC
回傳前 30 筆資料
SELECT * FROM users LIMIT 30
回傳 61~90 筆資料 ( 從 60 開始、回傳 30 筆資料 )
SELECT * FROM users LIMIT 30 OFFSET 60
SELECT * FROM users LIMIT 60, 30 // 跟上面一樣(OFFSET 60, LIMIT 30 的簡寫)
用 as
關鍵字,後面接 <new-name>
,用來縮減字詞還實用的
SELECT created_at as time, nickname as name FROM users
SELECT c.id, c.content, u.nickname as name
FROM comments as c, users as u
WHERE c.user_id = u.id
mysqli_set_charset($conn, "utf8")
<?php
$sql = "select from users where name='$name'"
?>
或者是用 sprintf
( 以上內容大部分是 程式導師實驗計畫第三期 的學習筆記,如有錯誤歡迎糾正,非常感謝 🤓 )
Written on June 12th, 2019 by Yakim shu