SQL必知必會摘要
阿新 • • 發佈:2017-05-29
用法 row 第一個 table class err num 方向 返回
數據檢索 | 2.2 檢索單個列 | SELECT prod_name FROM Products; | SQL語句不區分大小寫 |
2.3 檢索多個列 | SELECT prod_name,prod_id,prod_price FROM Products; | ||
2.4 檢索所有列 | SELECT * FROM Products; | ||
2.5 檢索不同的值 | SELECT DISTINCT vend_id FROM Products; | ||
2.6 限制結果 | SELECT TOP 5 prod_name FROM Products;(SQL server、Access) SELECT prod_name FROM Products SELECT prod_name FROM Products WHERE ROWNUM <=5;(Oracle) SELECT prod_name FROM Products LIMIT 5;(MySQL、SQLite等) SELECT prod_name FROM Products LIMIT 4 OFFSET 3;(LIMIT 3,4) |
從第3行起的4行數據 | |
2.7 使用註釋 | SELECT prod_name --這是一條註釋(--之後的是註釋) FROM Products; # 這是一條註釋 /*這是一條註釋,很長 (跨行註釋,通常用於代碼註釋) 很長的註釋*/ |
||
排序檢索數據 | 3.1 排序數據 | SELECT prod_name FROM Products ORDER BY prod_name; | 字母升序拍;可以通過非檢索列進行排序 |
3.2 按多個列排序 | SELECT prod_name,prod_id,prod_price FROM Products ORDER BY prod_price,prod_name; |
prod_price相同時才按照prod_name | |
3.3 按列位置排序 | SELECT prod_name,prod_id,prod_price FROM Products ORDER BY 2,3; |
表示先按prod_id,再按prod_price排序 | |
3.4 指定排序方向 | SELECT prod_name,prod_id,prod_price FROM Products ORDER BY prod_price DESC; |
降序排列,大小寫字母在排序時是否區分取決於數據庫的配置 | |
SELECT prod_name,prod_id,prod_price FROM Products ORDER BY prod_price DESC,prod_name; |
prod_name仍為升序,ASC表升序(默認) | ||
過濾數據 | 4.1 使用WHERR | SELECT prod_name,prod_price FROM Products WHERE prod_price = 3.49; |
|
SELECT prod_name,prod_price FROM Products WHERE prod_price = 3.49 ORDER BY prod_name; |
WHERE和ORDER BY組合用法 | ||
4.2 WHERE子句操作符 | =,<>,!=,<,<=,!<,>,>=,!>,BETWEEN,IS NULL | ||
4.2.2 不匹配檢查 | SELECT vend_id,prod_name FROM Products WHERE vend_id<>‘DLL01‘; |
不匹配檢查,字符串需要加引號<>與!=等價 | |
4.2.3 範圍值檢查 | SELECT prod_name,prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10 |
包括5和10 | |
4.2.4 空值檢查 | SELECT prod_name,prod_price FROM Products WHERE prod_price IS NULL; |
NULL與非匹配:空值不會被返回 | |
高級數據過濾 | 5.1.1 AND操作符 | SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id = ‘DLL01‘ AND prod_price<=4; |
可用多個AND,增加過濾條件 |
5.1.2 OR操作符 | SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id = ‘DLL01‘ OR vend_id = ‘BRS01‘; |
第一個條件滿足時,不管第二個條件是否滿足,相應行都被檢索出來 | |
SELECT prod_id,prod_price,prod_name FROM Products WHERE (vend_id = ‘DLL01‘ OR vend_id = ‘BRS01‘)AND prod_price<=10; |
組合使用,使用圓括號。AND優先級較高 | ||
5.2 IN操作符 | SELECT prod_name,prod_price FROM Products WHERE vend_id = IN( ‘DLL01‘,‘BRS01‘) ORDER BY prod_name; |
功能與OR相當 | |
SELECT prod_name,prod_price FROM Products WHERE vend_id = ‘DLL01‘OR vend_id = ‘BRS01‘ ORDER BY prod_name; |
改寫IN語句 | ||
5.3 NOT操作符 | SELECT prod_name FROM Products WHERE NOT vend_id = ‘DLL01‘ ORDER BY prod_name; |
||
SELECT prod_name FROM Products WHERE vend_id <> ‘DLL01‘ ORDER BY prod_name; |
改寫NOT語句 | ||
用通配符進行過濾 | 6.1.1 %通配符 | SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ‘Fish%‘; |
找出以Fish起頭的詞,Fish之後可以是0個字符;Acess需要使用*非%;大小寫是否區分取決於數據庫配置 |
SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ‘%bean bag%‘; |
匹配任何包含bean bag的值 | ||
SELECT prod_name FROM Products WHERE prod_name LIKE ‘F%y‘; |
匹配F開頭,y結尾的值([email protected]) %匹配0個、1個、多個字符 如果字符末尾是空格,則需要用F%y%來匹配 |
||
WHERE prod_name LIKE ‘%‘; | 不配匹配prod_name為NULL的行 | ||
6.1.2 _通配符 | SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ‘__ inch teddy bear‘; |
DB2不支持,Access用?非_ _只匹配單個字符,功能與%通,如需匹配2個字符,則需要使用__ |
SQL必知必會摘要