MySQL Code學習:
除了創建資料表外,資料查找很重要,攸關日後建立需求所要呈現的資料正確性。
MairaDB安裝
如果遇到在shell命令
中無法執行mysql指令,那就需要依照以下環境設定。
系統資訊 > 進階 > 環境變數 > path > 編輯環境變數 > 新增SQL存放路徑
SELECT、FROM表單選擇
SELECT
與FROM
中間的欄位,就是最終要顯示的內容。
SELECT
欄位FROM
資料表名
sql
SELECT * FROM table_name ;
- 避免重複資料,可加
DISTINCT
:
sql
SELECT DISTINCT * FROM table_name ;
- 直接指定要顯示的欄位(需用
逗號 ,
分開欄位,最後一個欄位後面則不用放):
sql
SELECT id,name,age FROM table_name ;
- 顯示時改變欄位名稱,追加
AS
:
sql
SELECT id,name AS 姓名, age AS 年齡 FROM table_name ;
提醒
- AS 不只是改名稱,後須還可以運用。
- 每個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篩選
兩者差異不大,通常場合使用在數張資料表合併查找:
WHERE
用在不對等資料表。
sql
SELECT name FROM table_name
WHERE age=18;
ON
用在對等的資料表,需搭配JOIN
。
sql
SELECT col
FROM table1 JOIN table2
ON age=18;
GROUP BY
這是對於資料的分類,通常會配合運算式。 假設取得每樣產品(prods_name)的販售總數量(quantity) :
sql
SELECT prods_name, COUNT(quantity)
FROM products
GROUP BY prods_name;
prods_name | quantity |
---|---|
prod_1 | 3 |
prod_2 | 10 |
prod_3 | 15 |
篩選搭配運算式
大於 >
、小於 <
、等於 =
、大於等於 >=
、小於等於 <=
sql
-- A 等於 B
WHERE t1.col1 = t2.col1
-- A 大於 18
WHERE A > 18
-- A 大於等於 18
WHERE A >= 18
和 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'
最大值 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
排序
ORDER BY
排序中 預設 是升冪ASC
,若果要降冪須加上DESC
。
sql
SELECT * FROM products
ORDER BY price
其他符號
%
多字符/字串以上。(配合LIKE
)
sql
WHERE name LIKE 'evan%'
_
單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
此語法請小心使用,一經刪除則無法救回。sqlDROP TABLE tablename;
DELETE
如果沒有搭配WHERE
則會刪除整張資料表內容。sqlDELETE FROM tablename WHERE id=1;
修改資料/更新 (UPDATE)
UPDATE
如過沒有搭配WHERE
則會更新所有的資料表內的指定資料。sqlUPDATE tablename SET name='New Name' WHERE name='Old Name'
Maira DB安裝問題
ERROR 1049 (42000) 匯入錯誤,找不到資料庫
ERROR 1064 (42000)
ERROR 1045 (28000)
Connection error!