這個簡單的學習筆記是我通過閱讀《Sams Teach Yourself SQL in 10 minutes》這本書總結的奈辰。我采用的學習SQL的方法還是Learning by do it允粤,在做完每一個實例之后,隔兩天再總結總結犹赖,再隔兩天在在其他語言的程序(比如C++效拭,JAVA)中利用SQL進行調用數據來測試俊戳。
這里是第一部分竣付,很多例子其實真的是很直觀,很容易理解鉴象,所以我基本都沒有寫太多的解釋忙菠。文中SQL命令關鍵詞大小寫不影響,但是建議采用大寫纺弊。
學習的樣表材料:www.forta.com/books/0672336073/
1.SELECT
1.1 檢索
1.1.1 檢索多列
SELECT prod_id, prod_name, prod_price
From Products;
1.1.2 檢索所有列
SELECT *
From Products;
1.1.3 檢索不同值
SELECT DISTINCT prod_name
From Products;
1.1.4 檢索限制個數
SELECT prod_name
From Products
LIMIT 5;
OR if use in oracle:
SELECT prod_name
From Products
where ROWNUM <=5;
1.2 排序
1.2.1 排序單列
SELECT prod_name
From Products
order by prod_name;
1.2.2 排序多列
SELECT prod_id, prod_name, prod_price
From Products
order by prod_price, prod_name;
其中牛欢,prod_price是第一順序,prod_name是第二順序俭尖,第二順序只在第一順序作業(yè)下無法分出高下的時候起效氢惋。
1.2.3 排序順序
默認是升序,如果想采用降序稽犁,需要對想降序的序列指定DESC:
SELECT prod_id, prod_name, prod_price
From Products
order by prod_price DESC, prod_name;
1.3 過濾
1.3.1 基礎過濾
在數據庫過濾比在客戶端過濾好的得多,因為這樣避免的通過網絡發(fā)送多余的數據骚亿。過濾的字句為:
where prod_price < 10; --過濾單值
where prod_price 已亥!= 10; --排除單值
where prod_price between 10 AND 100; 范圍過濾
where prod_price IS NULL; --空值檢查
1.3.2 高級過濾
where prod_price < 10 AND vend_id = 'DLL01'; --AND
where prod_price < 10 OR vend_id = 'DLL01'; --OR
where vend_id in ('DLL01', 'BRS01'); --range
where NOT vend_id = 'DLL01'; --否定其后條件
1.3.3 使用通配符過濾
Concept: wildcard, 通配符, 是用來匹配一部分的特殊字符
A.使用百分號%過濾
a.匹配所有“FISHXXXXX”字串
SELECT prod_name
From Products
where prod_name LIKE 'FISH%';
b.匹配所有“XXXFISHXXXXX”字串
SELECT prod_name
From Products
where prod_name LIKE '%FISH%';
c.匹配所有“F"開頭来屠,"Y”結尾的字串
SELECT prod_name
From Products
where prod_name LIKE 'F%Y';
B.使用下劃線_過濾
只匹配單個字符
sqlite> select prod_id, prod_name
...> from Products
...> where prod_name LIKE '_ inch teddy bear';
C.使用方括號[]過濾
指定一個字符集虑椎,必須匹配特定位置的單個字符。比如打算查找客戶中以J或者K開頭的聯系人:
sqlite> select cust_contact
...> from Customers
...> where cust_contact LIKE '[JK]%'
...> ORDER by cust_contact;
不過在SQLite中貌似無用俱笛。
2. 計算&字段
2.1 拼接字段
在SQLite, Oracle, DB2中捆姜,使用
select vend_name || '(' || vend_country || ')'
from Vendors;
Results:
Bears R Us(USA)
Bear Emporium(USA)
Doll House Inc.(USA)
Furball Inc.(USA)
Fun and Games(England)
Jouets et ours(France)
如果使用的是SQL Server,第一句應當用:
select vend_name + '(' + vend_country + ')'
如果使用的是MySQL迎膜,第一句應當用:
select Concat(vend_name, '(', vend_country, ')')
為了保證返回有期望的格式泥技,應當消除多余空格
select RTRIM(vend_name) || '(' || RTRIM(vend_country) || ')'
from Vendors;
2.2 執(zhí)行計算
Code:
SELECT prod_id, quantity, item_price, quantity*item_price AS subtotal
FROM OrderItems
WHERE order_num = 20008;
輸出:
RGAN01 |5 |4.99 |24.95
BR03 |5 |11.99|59.95
BNBG01 |10|3.49 |34.9
BNBG02 |10|3.49 |34.9
BNBG03 |10|3.49 |34.9