Skip to content
On this page

MySQL Code學習:

除了創建資料表外,資料查找很重要,攸關日後建立需求所要呈現的資料正確性。

MairaDB安裝

如果遇到在shell命令中無法執行mysql指令,那就需要依照以下環境設定。

系統資訊 > 進階 > 環境變數 > path > 編輯環境變數 > 新增SQL存放路徑 set_mairadb

SELECT、FROM表單選擇

SELECTFROM中間的欄位,就是最終要顯示的內容。

  1. SELECT 欄位 FROM 資料表名
sql
SELECT * FROM table_name ;
  1. 避免重複資料,可加 DISTINCT:
sql
SELECT DISTINCT * FROM table_name ;
  1. 直接指定要顯示的欄位(需用 逗號 , 分開欄位,最後一個欄位後面則不用放):
sql
SELECT id,name,age FROM table_name ;
  1. 顯示時改變欄位名稱,追加 AS:
sql
SELECT id,name AS 姓名, age AS 年齡 FROM table_name ;

提醒

  1. AS 不只是改名稱,後須還可以運用。
  2. 每個code結束後都有1個 分號 ;,告訴MySQL是code的結尾。

合併資料(JOIN、LEFT JOIN、RIGHT JOIN)

這裡是要將2個以上資料表合併時用法 :

sql
SELECT *
FROM table1
JOIN table2 ;

也可以這樣寫,不過比較容易混亂:

sql
SELECT *
FROM table1, table2 ;

指定欄位時:

sql
SELECT table1.col_name, table2.col_name
FROM table1
JOIN table2 ;

搭配 AS使用:

sql
SELECT t1.col_name, t2.col_name
FROM table1 AS t1
JOIN table2 AS t2 ;

WHERE、ON、GROUP BY篩選

兩者差異不大,通常場合使用在數張資料表合併查找:

  1. WHERE用在不對等資料表。
sql
SELECT name FROM table_name
WHERE age=18;
  1. ON用在對等的資料表,需搭配 JOIN
sql
SELECT col
FROM table1 JOIN table2
ON age=18;
  1. GROUP BY這是對於資料的分類,通常會配合運算式。 假設取得每樣產品(prods_name)的販售總數量(quantity) :
sql
SELECT prods_name, COUNT(quantity)
FROM products
GROUP BY prods_name;
prods_namequantity
prod_13
prod_210
prod_315

篩選搭配運算式

  1. 大於 >小於 <等於 =大於等於 >=小於等於 <=
sql
-- A 等於 B
WHERE t1.col1 = t2.col1
-- A 大於 18
WHERE A > 18 
-- A 大於等於 18
WHERE A >= 18
  1. 和 AND或 OR指定LIKE之間 BETWEEN
sql
-- A 和 B
WHERE t1.col1=10 AND t2.col1=16
-- A 或 B
WHERE t1.col1=10 OR t2.col1=16
-- 指定內容/模糊查詢使用
WHERE name LIKE 'evan%'
-- A 和 B 之間
WHERE time BETWEEN '1900/01/01' AND '1900/01/31'
  1. 最大值 MAX最小值 MIN總數 COUNT平均 AVG總和 SUM

這幾個參數值都是放在SELECT選擇內,對於所篩選後的資料,再進行計算,通常會與 GROUP BY搭配。

sql
SELECT MAX(price) AS 最貴價,
MIN(price) AS 最便宜價,
COUNT(quantity) AS 總數,
AVG(price) AS 平均價,
SUM(price) AS 總價
FROM products

排序

  1. ORDER BY排序中 預設 是升冪 ASC,若果要降冪須加上 DESC
sql
SELECT * FROM products
ORDER BY price 

其他符號

  1. % 多字符/字串以上。(配合 LIKE)
sql
WHERE name LIKE 'evan%'
  1. _ 單1個字符。(配合 LIKE)
sql
WHERE name LIKE 'ev_n'

複合使用

待建構

sql
SELECT 
FROM
JOIN
WHERE

建立資料庫/資料表 (CREATE)

  • 資料庫 (CREATE DATABASE)
    sql
      CREATE DATABASE dbname
       DEFAULT CHARACTER SET = 'utff8mb4';
    
  • 資料表 (CREATE TABLE)
    sql
      CREATE TABLE tablename(
         id BIGINT PRIMARY KEY AUTO_INCREMENT,
         name    VARCHAR(50) NOT NULL    COMMENT '姓名',
         gender  CHAR(1) NOT NULL    COMMENT '性別',
         birthday    DATETIME    NOT NULL    COMMENT '日期',
         phone   VARCHAR(20) NOT NULL    COMMENT '電話',
         email   VARCHAR(100)    NULL    COMMENT '電子信箱',
         addr    VARCHAR(200)    NOT NULL    COMMENT '年齡',
         yourage INTEGER NOT NULL    COMMENT '年齡',
         tall DECIMAL(6,2)   NOT NULL COMMENT '身高'
      );
    

新增資料 (INSERT INTO + VALUES)

sql
INSERT INTO (id, name, gender, phone)
VALUES (1, Evan, M, 0910-11121314);
-- 簡略寫法
INSERT INTO tablename
VALUES (1, Evan, M, 0910-11121314);

建立索引 (INDEX)

索引是為了要讓資料能順利排序、查找使用

  • 一般索引
    sql
      CREATE INDEX new_index_name ON tablename(id);
    
  • 關鍵索引 (UNIQUE)
    sql
      CREATE UNIQUE INDEX new_index_name ON tablename(id);
    

刪除資料庫/資料表 (DROP/DELETE)

  • DROP 此語法請小心使用,一經刪除則無法救回。
    sql
    DROP TABLE tablename;
    
  • DELETE 如果沒有搭配 WHERE 則會刪除整張資料表內容。
    sql
    DELETE FROM tablename
    WHERE id=1;
    

修改資料/更新 (UPDATE)

  • UPDATE如過沒有搭配 WHERE則會更新所有的資料表內的指定資料。
    sql
    UPDATE tablename SET name='New Name' WHERE name='Old Name'
    

Maira DB安裝問題

  • ERROR 1049 (42000) import_err 匯入錯誤,找不到資料庫

  • ERROR 1064 (42000)

  • ERROR 1045 (28000) import_err

  • Connection error! import_err