[SQL]常用語法彙整: 基本指令 [SQL-001]

ChunJen Wang
jimmy-wang
Published in
5 min readMay 3, 2021

--

本篇整理學到的SQL語法,為簡單難度。

入門SQL操作指令

  • Select
  • Where
  • Order By
  • Insert
  • Update
  • Delete

Select

萬物從 select 起頭,當我們要撈取資料時,都是從select來選擇"欄位",並標示從哪一張表(from)。指令大小寫通常並無影響,但欄位名稱則需要特別注意是否正確。

SELECT column1, column2, …
FROM table_name;

選擇所有欄位則用 * 代替全部。

SELECT * FROM table_name;

剔除重複資料進行撈取。因為資料儲存或重複註冊的原因,我們經常在資料庫中會發現兩筆資料完全相同的資料。此時可以透過Distinct過篩。

SELECT DISTINCT column1, column2, …
FROM table_name;

驗證是否有重複資料,也可以透過 Count來確認。

SELECT COUNT(column1) FROM table_name;
SELECT COUNT(DISTINCT column1) FROM table_name;

可以Select中再Select嗎? 可以。
舉例來說,我們可以將Count的值另存成DistinctCountries,那Count要計算的就要從 From 中帶入。

SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT column1 FROM table_name);

Select + Where (加入條件)

condition 就如不等式方式撰寫,在選出的欄位中,依據其中某幾欄來設定條件,進一步篩選出我們需要的資料。

SELECT column1, column2, …
FROM table_name
WHERE condition;
SQL Operator。Source: https://www.w3schools.com/sql/sql_where.asp

條件也可以一次設定多個,透過
AND, OR, NOT 來進行設定。

例如,選擇… WHERE 條件1 且非條件2 條件3符合。

SELECT column1, column2, …
FROM table_name
WHERE NOT condition1 AND NOT condition2 OR condition3 …;

排序 Order by

資料排序是整理資料中,常用的功能,也包含升序(default)與降序排列。

SELECT * FROM Customers
ORDER BY Country DESC;

插入資料 Insert Into

根據row來插入新的data/records進表格中。

INSERT INTO table_name (column1, column2, column3, …)
VALUES (value1, value2, value3, …);

IS NULL, IS NOT NULL

當我們更新資料表或插入值未齊全時,沒有值的欄位就會以NULL儲存。
但這些NULL無法透過一般的opeartor進行判斷,因此需要IS NULL判斷。

SELECT column_names
FROM table_name
WHERE column_name IS NULL;
#或替代以 WHERE column_name IS NOT NULL;

更新資料/資料表 Update

用來修改已經存在於資料表中的資料。
特別注意Where條件要設好,不然整張表更新下去就GG了。

  • Where條件通常會透過 ID (identifier) 來進行少量資料的修改。
UPDATE table_name
SET column1 = value1, column2 = value2, …
WHERE condition;

刪除資料/資料表 Delete

如同Update功能,要注意條件設定,不然彙整張表的資料都刪除!

DELETE FROM table_name WHERE condition; # 有條件設定
DELETE FROM table_name;           # 整張表資料都刪除!

搜尋顯示條件

包含要顯示前幾大,要顯示幾筆,要如何排序等等。

  • SELECT TOP
    用於SQL Server / MS Access
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
  • LIMIT
    用於MySQL
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
  • ORDER BY + FETCH
    用於Oracle 12
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;

以上彙整了目前學到的SQL常見操作指令,
下篇再整理SQL運算指令。

感謝收看~

--

--

ChunJen Wang
jimmy-wang

嗨,歡迎你的到來,我目前在銀行擔任DS。過去曾做過銀行大型專案BA,也曾在轉職科技業DE中踢了鐵板,相信每一個人都有自己要走的路,而努力的過程,可以讓我們離心中理想更接近,如果我的文章能帶給你一些啟發與幫助,別忘了幫我在文章底下按下拍手~^^