My blogs

The greatest test of courage on earth is to bear defeat without losing heart.

0%

SQL

介紹

SQL 語法筆記。


重要的 SQL 命令

指令說明
SELECT從數據庫中提取數據
UPDATE更新數據庫中的數據
DELETE從數據庫中刪除數據
INSERT INTO將新數據插入數據庫
CREATE DATABASE創建一個新的數據庫
ALTER DATABASE修改數據庫
CREATE TABLE創建一個新表
ALTER TABLE修改表格
DROP TABLE刪除一個表
CREATE INDEX創建索引(搜索鍵)
DROP INDEX刪除索引

SQL SELECT

選擇部分查詢。

1
2
SELECT col1, col2, ...
FROM table_name;

SELECT 語句裡用 * 這個特殊符號查詢所表格內資料。

1
SELECT * FROM table_name;

SELECT 查詢語句中我們可使用 DISTINCT 關鍵字過濾重複出現的紀錄值。

1
2
SELECT DISTINCT table_column1, table_column2...
FROM table_name;

數量

1
SELECT COUNT(DISTINCT table_column1) FROM table_name;

SQL WHERE

WHERE條款不僅在使用 SELECT的語句,它也被用在UPDATEDELETE

選擇特定行中值作為查詢目標。

ex : 所有客戶表格中,欄位 Country 值為 台灣

1
2
SELECT * FROM Customers
WHERE Country='taiwan';

WHERE 子句中的運算符

指令說明
=等於
>大於
<小於
>=大於等於
<=小於等於
<>不等於
BETWEEN在區間內
LIKE搜索模式
IN為一列指定多個可能的值

WHERE 子句可以結合 ANDORNOT

ex and : 所有客戶表格中,欄位 Country 值為 台灣 且欄位 city 值為 台北

1
2
3
4
5
6
7
8
9
10
11
12
-- and ex
SELECT * FROM Customers
WHERE Country='taiwan' AND City='taipei';


-- not ex
SELECT * FROM Customers
WHERE NOT Country='taiwan'

-- or ex
SELECT * FROM Customers
WHERE Country='Germany' OR Country='Spain';

結合 and &  not

1
2
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

SQL ORDER BY Keyword

ORDER BY 關鍵字用於按升序或降序對結果集進行排序

ps : ASC 由小至大排列,DESC 由大至小排列。

1
2
3
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

SQL INSERT INTO

INSERT INTO 語句用於在表中插入新記錄。

ps : 確保值的順序與表中的列順序相同。

1
2
INSERT INTO shop (cake, pizza, soup)
VALUES ('green tea cake', 'Sausage cheese', 'Corn bisque');

SQL NULL

NULL值的字段是沒有值的字段。

ps : 不向該字段添加值的情況下插入新記錄或更新記錄。然後,該字段將保存為 NULL 值。

NULL 值不同於值或包含空格的字段。具有 NULL 值的字段是在創建記錄期間留空的字段!

NULL無法使用比較運算符。

IS NULL or IS NOT NULL查詢欄位中空值。

1
2
3
4
5

-- is null
SELECT column_1
FROM table_name
WHERE column_1 IS NULL;
1
2
3
4
5

-- IS NOT NULL
SELECT column_1
FROM table_name
WHERE column_1 IS NOT NULL;

SQL UPDATE & DELETE

UPDATE 語句用於修改表中的現有記錄。

1
2
3
4
5
6
7
UPDATE table_name
SET Col1 = 'newvalue', col2= 'newvalue'
WHERE ID = 1;
-- like
-- UPDATE Customers
-- SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
-- WHERE CustomerID = 1;

DELETE 語句用於刪除表中的現有記錄。

1
2
3
DELETE FROM tablename WHERE Col='value';
-- like
-- DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

SQL MIN & MAX & COUNT & AVG & SUM

MIN() 函數返回所選列的最小值。

1
2
SELECT MIN(Price)
FROM Products;

MAX() 函數返回所選列的最大值。

1
2
3
SELECT MAX(Price)
FROM Products;


COUNT()函數返回與指定條件匹配的行數。

AVG()函數返回數字列的平均值。

SUM()函數返回數字列的總和。

1
2
3
4
SELECT SUM/AVG/COUNT(col)
FROM tablename;



SQL LIKE Operator

  • 百分號 (%) 代表零、一個或多個字符。
  • 下劃線 (_) 代表一個,單個字符。

%a 表示查詢出a 開頭國家

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
SELECT * FROM world
WHERE countryname LIKE 'a%';

--------------------------------------------

-- 找出包含 or 字母
SELECT * FROM world
WHERE countryname LIKE '%or%';

--------------------------------------------

-- _表示空一格字,找到第二個字為 r

SELECT * FROM world
WHERE countryname LIKE '_r%';

-------------------------

-- y開頭並總字數至少為 3 個字符的所有客戶
SELECT * FROM world
WHERE countryname LIKE 'y__%';

---------------------------

-- a開頭並o結尾

SELECT * FROM world
WHERE countryname LIKE 'a%o';

----------------------------

-- 不為 a 開頭的
SELECT * FROM world
WHERE countryname NOT LIKE 'a%';