MySQL


Posted by tzutzu858 on 2020-08-26

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
    符合主鍵必須滿足幾個條件 :
  1. 不能是空的
  2. 不能重複
  • Index 索引
    在資料庫條件下得很明確,可以依造索引去找


MySQL 語法簡介

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小

執行 SQL 語法


SQL 語言分類

  1. DDL (data QUERY LANGUAGE)
  2. DML (data defined LANGUAGE)
  3. 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 可以接受一個或兩個數字引數
如果是一個引數 : 那就是你要幾筆資料
如果是兩個引數

  • 第一個引數 : 指定第一個返回記錄行的偏移量
  • 第二個引數 : 要拿的資料數
    SELECT * FROM table ORDER BY id DESC LIMIT 1,10; // 從第 2 筆資料選 10 筆,所以是 2~11筆的資料
    
    如果是從第 2 筆資料選到最後一筆資料,第二個引數寫 -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,查詢速度也不會太差










Related Posts

Day01 初試身手

Day01 初試身手

Day 16 - 了解 JavaScript Module

Day 16 - 了解 JavaScript Module

Day07 - 網格排版

Day07 - 網格排版


Comments