SQL學習筆記(一)

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必知必會》

相關文章
相關標籤/搜索