MySQL 是什麼?
My 是 MySQL 的聯合創始人 Monty Widenius 的女兒的名字。MySQL 是 My 和 SQL 的組合,這就是 MySQL 命名的由來。它是由 Oracle 支持的開源軟件。所以任何一個人都可以使用 MySQL 而不用支付一毛錢。 另外,如果需要,還可以更改其源代碼或進行二次開發。MySQL 可以在各種平臺上運行 UNIX,Linux,Windows 等。可以將其安裝在服務器甚至桌面系統上。非常多公司都用 MySQL
如何管理資料庫? phpMyAdmin 簡介
資料庫也可以算是程式,所以自然可以用 CLI 來連接到資料庫,或是用 GUI ,比較有名的一套叫做 : phpMyAdmin ,就是個 PHP 檔案,所以就是有人寫好一整套 PHP 網頁來幫你管理資料庫。也有其他套例如 : Adminer ,也是寫在 PHP 上。也可以找直接跑在電腦上的程式,例如 : Sequel Pro
Table schema 簡介
schema 結構
- Primary key 主鍵(關係鍵),不一定要設定,通常是員工編號或會員帳號之類,最主要且不能重複,所以一定是 Unique ,所以不需要額外再設定 Unique
符合主鍵必須滿足幾個條件 :
- 不能是空的
- 不能重複
- Index 索引
在資料庫條件下得很明確,可以依造索引去找
MySQL 語法簡介
[Mysql] 資料型態int, float, double, text, char, varchar, blob大小
執行 SQL 語法
SQL 語言分類
- DDL (data QUERY LANGUAGE)
- DML (data defined LANGUAGE)
- DCL (data Manipulation LANGUAGE)
大 -------------------------------> 小
資料庫 | 資料表 | 欄位 | 值 |
---|---|---|---|
database | table | column | value |
1.查詢資料 Select
SELECT "欄位" FROM "表格名";
where (加上查詢條件) : 可以放多個條件
SELECT "欄位"
FROM "表格名"
WHERE "condition";
AS 關鍵字是用來指定欄位別名或是表格別名的
SELECT "表格別名"."欄位1" AS "欄位別名"
FROM "表格名" AS "表格別名";
2.新增資料 Insert
INSERT INTO 是用來新增資料至某資料表 (table)
INSERT INTO table_name (column1, column2, column3...)
VALUES (value1, value2, value3...);
3.修改資料 Update
UPDATE table_name
SET column1=value1, column2=value2, column3=value3···
WHERE some_column=some_value;
4.刪除資料 Delete
DELETE FROM table_name
WHERE column_name operator value;
眼不見為淨,資料看不到,但並不是真的刪掉,所以還是有機會救回來
where is_deleted = 0
5.offset 與 limit
使用 SQL 的 limit 語句通常會伴隨著「ORDER BY」,否則就已預設排序為主,limit 可以接受一個或兩個數字引數
如果是一個引數 : 那就是你要幾筆資料
如果是兩個引數
- 第一個引數 : 指定第一個返回記錄行的偏移量
- 第二個引數 : 要拿的資料數
如果是從第 2 筆資料選到最後一筆資料,第二個引數寫SELECT * FROM table ORDER BY id DESC LIMIT 1,10; // 從第 2 筆資料選 10 筆,所以是 2~11筆的資料
-1
SELECT * FROM table ORDER BY id DESC LIMIT 1,-1; // 從第 2 筆資料選到最後一筆
但是偏移量大,效能不好
如果偏移量大可以使用 offset
,跳過幾筆的意思
SELECT * FROM table ORDER BY id DESC LIMIT 10 OFFSET 5 // 抓 10 筆資料,但跳過最新 5 筆
子查詢只用到了索引列,沒有取實際的資料,所以不涉及到磁碟IO,所以即使是比較大的 offset,查詢速度也不會太差