天天看點

SQL學習筆記(一)

一、檢索資料

如何使用SELECT語句檢索一個或多個資料列。

1.1 檢索單個列

<code>SELECT prod_name </code>

<code>FROM Productions;</code>

注意:檢索出來的資料是沒有排序的

1.2 檢索多個列

<code>SELECT prod_id,prod_name,prod_price</code>

注意:SQL語句一般傳回原始的、無格式的資料。

1.3 檢索所有列

<code>SELECT * FROM Productions;</code>

<code>通配符*表示比對任意字元任意次數。</code>

1.4 檢索不同的值(相同的值不顯示)

<code>SELECT DISTINCT vend_id</code>

分析:傳回唯一的vend_id行

警告:如果檢索多個列,則使用DISTINCT關鍵字則會把但凡隻要有一列的值不同就會檢索出來

1.5 限制傳回結果

說明:指定傳回前5行

<code>--DB2的SQL語句</code>

<code>SELECT prod_name</code>

<code>FROM Products</code>

<code>FETCH FIRST 5 ROW ONLY;</code>

<code>#Oracle(基于ROWNUM來計算行)</code>

<code>WHERE ROWNUM&lt;=5;</code>

<code>#MySQL,PostgreSQL,SQLite</code>

<code>LIMIT 5;</code>

說明;指定從第5行開始傳回5行

<code>LIMIT 5 OFFSET 5;</code>

<code>#Mysql,MariaDB中的快捷方式</code>

<code>LIMIT 5,5;</code>

警告:第一個被檢索出來的行是第0行,以此類推

1.6 使用注釋

說明:用于注釋說明或者用于測試調試

<code>--</code>

<code>#</code>

<code>/*   */</code>

二、排序檢索資料

2.1 排序檢索資料

說明:使用SELECT和ORDER BY子句,根據需要檢索資料。

理論:關系資料庫設計理論認為,如果不明确規定排序的順序,則不應該假定檢索出來的資料的順序有任何意義。

概念:子句(Clause)

一個子句通常由一個關鍵字和資料組成。

<code>ORDER BY prod_name;</code>

注意:    

<code>  </code><code>1.DBMS軟體将會對prod_name列以字母順序排序資料。</code>

<code>  </code><code>2.ORDER BY 必須是最後一條子句,不然會報錯</code>

<code>  </code><code>3.使用非檢索出的列進行排序也是可以的</code>

2.2 按多個列排序

說明;代碼将會檢索3個列,并按其中的兩個列對結果進行排序-先按價格,再按名稱排序

<code>SELECT prod_id,prod_price,prod_name</code>

<code>ORDER BY prod_price,prod_name;</code>

了解:有相同的prod_price,才會按prod_name排序

2.3 按列位置排序

說明:不僅僅可以按列名排序,也可以按照列位置排序

例子中先按第二個列排序再按第三個列排序

<code>ORDER BY 2,3;</code>

2.4 指定排序的方向

說明:預設升序排序,也可以降序排序,需使用DESC關鍵字。

<code>--降序排序</code>

<code>ORDER BY prod_price DESC;</code>

說明:多個列排序

<code>ORDER BY prod_price DESC,prod_name;</code>

注意:

              1.DESC隻應用于其前面的列名進行降序排序而後面的列名将不應用 

  2.預設情況下Z與z是等同的,除非管理者自行改變設定

三、過濾資料

3.1 使用WHERE子句

說明:使用SELCT語句的WHERE子句指定搜尋條件,用來檢索出管理者需要的資料。

<code>SELECT prod_name,prod_price</code>

<code>WHERE prod_price=5;</code>

注意:會輸出所有等于5的資料類型

提示:

            兩種過濾方式:SQL過濾與應用過濾

資料不僅僅可以在資料層過濾也可以在應用層過濾。但是,這種做法通過不妥。讓用戶端處理資料會影響應用的性能以及占用網絡帶寬。

警告:在同時使用WHERE子句和ORDER BY子句時,需要将ORDER BY位于WHERE子句的後面。

3.2 WHERE子句操作符

<code>= &lt; &lt;= </code>

<code>! 不小于</code>

<code>&gt; &gt;= !&gt; </code>

<code>&lt;&gt; 不等于</code>

<code>!= 不等于</code>

<code>BETWEEN 在指定的兩個值之間</code>

<code>IS NULL 為NULL值</code>

3.2.1 檢查單個值

<code>WHERE prod_price &lt;=100;</code>

3.2.2 不比對檢查

<code>SELECT vend_id,prod_name</code>

<code>WEHRE vend_id &lt;&gt;</code><code>'china007'</code>

3.2.3 範圍内查找

<code>WHERE prod_price BETWEEN 10 AND 15;</code>

3.2.4 空值檢查

無值(NULL)--&gt; no value

注意:它與字段為0,空字元或包含空格不同

說明:确定一個值為空,不能簡單地檢查= null,SELECT中可以使用 IS NULL來确定具有null值的列。

<code>SELECT cust_name </code>

<code>FROM CUSTOMERS</code>

<code>WHERE cust_email IS NULL;</code>

本文轉自 PowerMichael 51CTO部落格,原文連結:http://blog.51cto.com/huwho/1974431,如需轉載請自行聯系原作者