1. 程式人生 > 資料庫 >SQL必知必會筆記(一)

SQL必知必會筆記(一)

SQL必知必會(一)

1,任何人一直學習任何一門手藝都會有些煩躁
2,休息好和玩好是學好的前提
3,死記硬背是融會貫通的前提

基礎知識

資料:

資料庫:儲存有組織的資料的容器(通常是一個檔案或一組檔案)

表:某種特定型別資料的結構化清單 表名唯一

資料型別

行:記錄

主鍵:

外來鍵:

必備程式碼



#一切以mysql為演示

#切換表

USE dingdan;

#檢索單個列

SELECT prod_name FROM products;

#檢索多個列

SELECT prod_name,prod_id,prod_price FROM
products;

#檢索所有列

SELECT * FROM products;

#只保留不同的值

SELECT DISTINCT vend_id FROM products;

#限制結果(MYSQL)

SELECT prod_name FROM products LIMIT 5; //前5個

SELECT prod_name FROM products LIMIT 3
OFFSET 5; //第三行起的5行資料

#排序資料(單行)

SELECT prod_name FROM products

ORDER BY prod_name;

#排序資料(多行)

SELECT prod_name,prod_price

FROM products

ORDER BY prod_id,prod_name;

#排序資料(按照列的位置)

SELECT prod_name,prod_price

FROM products

ORDER BY 2,1;

#指定排序方向(降序)

SELECT prod_name,prod_name DESC;

#指定排序方向(升序)預設升序

SELECT prod_name FROM products

ORDER BY prod_name ASC;

#過濾資料  = 
<>  !=  < > <= >= !< !> between is
null

SELECT prod_name,prod_price

FROM products

WHERE prod_price = 3.49;

#檢查單個值

SELECT prod_name,prod_price

FROM products

WHERE prod_price > 3.49;

#不匹配檢查

SELECT prod_name,prod_price

FROM products

WHERE prod_price <> 3.49;

#between

SELECT prod_name,prod_price

FROM products

WHERE prod_price BETWEEN 5 AND 10;

#空值檢查

SELECT prod_name,prod_price

FROM products

WHERE prod_price IS NULL;

#組合where  and

SELECT prod_name,prod_price

FROM products

WHERE prod_price BETWEEN 5 AND 10

AND 

WHERE prod_name IS NOT NULL;

#or

SELECT prod_name,prod_price

FROM products

WHERE vend_id = 'DLL01' OR vend_id =
'BRS01';

#SQL優先處理and,再處理or

SELECT prod_name,prod_price

FROM products

WHERE(vend_id = 'DLL01' OR vend_id =
'BRSO1')

AND prod_price >=10;

#IN 操作符

SELECT prod_name,prod_price

FROM products

WHERE vend_id IN ('DLL01','BRS01')

ORDER BY prod_name;

#NOT 否定緊跟的限定語句

SELECT prod_name,prod_price

FROM products

WHERE NOT vend_id = 'DLL01'

ORDER BY prod_name;

#萬用字元 %

SELECT prod_id,prod_name

FROM Products

WHERE prod_name LIKE 'Fish%';

 

SELECT prod_id,prod_name

FROM Products

WHERE prod_name LIKE '%bean bag%';

# _ 單個字元

SELECT prod_id,prod_name

FROM Products

WHERE prod_name LIKE '__ inch teddy bear';

#[] 字符集匹配

SELECT cust_contact

FROM Customers

WHERE cust_contact LIKE '[JM]%'

ORDER BY cust_constact;

#[^] 字符集匹配

SELECT cust_contact

FROM Customers

WHERE cust_contact LIKE '[^JM]%'

ORDER BY cust_constact;

#拼接(MySQL)

SELECT CONCAT(vend_name,'
(',vend_country,')')

FROM Vendors

ORDER BY vend_name;

#RTRIM 去除右邊空格

#LTRIM 去除左邊空格

#TRIM 去除左右空格 

SELECT RTRIM(vend_name)+'(' +
RTRIM(vend_country) + ')'

FROM Vendors

ORDER BY vend_name;

#使用別名(MySQL)

SELECT CONCAT(vend_name,')') AS vend_title

FROM Vendors

ORDER BY vend_name;

#執行算術計算

SELECT prod_id,quantity,item_price,quantity * item_price AS expanded_price

FROM OrderItems

WHERE order_num = 20008;

#函式 UPPER

SELECT vend_name,UPPER(vend_name) AS
vend_name_upcase

FROM Vendors

ORDER BY vend_name;

/*

UPPER()  
轉換成大寫

LOWER()         小寫

LEFT()   
返回字串左邊的字元

RIGHT()             右

LENGTH() 
返回字串的長度

SOUNDEX() 返回字串的語音表示的字母數字

*/

#發音匹配

SELECT cust_name,cust)contact

FROM Customers

WHERE SOUNDEX(cust_contact) =
SOUNDEX('Michael Green');

#日期函式(MySql)

SELECT order_num

FROM Orders

WHERE YEAR(order_date) = 2012;

 

/*

ABS()絕對值

COS()餘弦

EXP()指數值

PI()圓周率

SIN()正弦

SQRT()平方根

TAN()正切

AVG()

COUNT()

MAX()

MIN()

SUM()

*/

 

#AVG()

SELECT AVG(prod_price) AS avg_price

FROM Products

WHERE vend_id = 'DLL01';

#count()

SELECT COUNT(cust_email) AS num_cust

FROM Customers;

#組合聚集函式

SELECT COUNT(*) AS num_items,MIN(prod_price) AS price_min,MAX(prod_price) AS price_max,AVG(prod_price) AS price_avg

FROM Products;

#資料分組

SELECT vend_id,COUNT(*) AS num_prods

FROM Products

GROUP BY vend_id;

#過濾分組

SELECT vend_id,COUNT(*) AS num_prods

FROM Products

GROUP BY vend_id

HAVING COUNT(*) >=2;

今天下午SQL學到這裡算是煩躁了,明天加油!