SQL學習筆記(一)
sql
1、檢索數據數據庫
如何使用SELECT語句檢索一個或多個數據列。bash
1.1 檢索單個列網絡
SELECT prod_name FROM Productions;
注意:檢索出來的數據是沒有排序的數據庫設計
1.2 檢索多個列ide
SELECT prod_id,prod_name,prod_price FROM Productions;
注意:SQL語句通常返回原始的、無格式的數據。 性能
1.3 檢索全部列學習
SELECT * FROM Productions; 通配符*表示匹配任意字符任意次數。
1.4 檢索不一樣的值(相同的值不顯示)測試
SELECT DISTINCT vend_id FROM Productions;
分析:返回惟一的vend_id行spa
警告:若是檢索多個列,則使用DISTINCT關鍵字則會把但凡只要有一列的值不一樣就會檢索出來
1.5 限制返回結果
說明:指定返回前5行
--DB2的SQL語句 SELECT prod_name FROM Products FETCH FIRST 5 ROW ONLY; #Oracle(基於ROWNUM來計算行) SELECT prod_name FROM Products WHERE ROWNUM<=5; #MySQL,PostgreSQL,SQLite SELECT prod_name FROM Products LIMIT 5;
說明;指定從第5行開始返回5行
SELECT prod_name FROM Products LIMIT 5 OFFSET 5; #Mysql,MariaDB中的快捷方式 SELECT prod_name FROM Products LIMIT 5,5;
警告:第一個被檢索出來的行是第0行,以此類推
1.6 使用註釋
說明:用於註釋說明或者用於測試調試
-- # /* */
2、排序檢索數據
2.1 排序檢索數據
說明:使用SELECT和ORDER BY子句,根據須要檢索數據。
理論:關係數據庫設計理論認爲,若是不明確規定排序的順序,則不該該假定檢索出來的數據的順序有任何意義。
概念:子句(Clause)
一個子句一般由一個關鍵字和數據組成。
SELECT prod_name FROM Products ORDER BY prod_name;
注意:
1.DBMS軟件將會對prod_name列以字母順序排序數據。 2.ORDER BY 必須是最後一條子句,否則會報錯 3.使用非檢索出的列進行排序也是能夠的
2.2 按多個列排序
說明;代碼將會檢索3個列,並按其中的兩個列對結果進行排序-先按價格,再按名稱排序
SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price,prod_name;
理解:有相同的prod_price,纔會按prod_name排序
2.3 按列位置排序
說明:不單單能夠按列名排序,也能夠按照列位置排序
例子中先按第二個列排序再按第三個列排序
SELECT prod_id,prod_price,prod_name FROM Products ORDER BY 2,3;
2.4 指定排序的方向
說明:默認升序排序,也能夠降序排序,需使用DESC關鍵字。
--降序排序 SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC;
說明:多個列排序
SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC,prod_name;
注意:
1.DESC只應用於其前面的列名進行降序排序然後面的列名將不該用
2.默認狀況下Z與z是等同的,除非管理員自行改變設置
3、過濾數據
3.1 使用WHERE子句
說明:使用SELCT語句的WHERE子句指定搜索條件,用來檢索出管理員須要的數據。
SELECT prod_name,prod_price FROM Products WHERE prod_price=5;
注意:會輸出全部等於5的數據類型
提示:
兩種過濾方式:SQL過濾與應用過濾
數據不單單能夠在數據層過濾也能夠在應用層過濾。可是,這種作法經過不妥。讓客戶端處理數據會影響應用的性能以及佔用網絡帶寬。
警告:在同時使用WHERE子句和ORDER BY子句時,須要將ORDER BY位於WHERE子句的後面。
3.2 WHERE子句操做符
= < <= ! 不小於 > >= !> <> 不等於 != 不等於 BETWEEN 在指定的兩個值之間 IS NULL 爲NULL值
3.2.1 檢查單個值
SELECT prod_name,prod_price FROM Products WHERE prod_price <=100;
3.2.2 不匹配檢查
SELECT vend_id,prod_name FROM Products WEHRE vend_id <>'china007'
3.2.3 範圍內查找
SELECT prod_name,prod_price FROM Products WHERE prod_price BETWEEN 10 AND 15;
3.2.4 空值檢查
無值(NULL)--> no value
注意:它與字段爲0,空字符或包含空格不一樣
說明:肯定一個值爲空,不能簡單地檢查= null,SELECT中可使用 IS NULL來肯定具備null值的列。
SELECT cust_name FROM CUSTOMERS WHERE cust_email IS NULL;
參考書籍:《SQL必知必會》