mysql必知必會-讀書筆記(chap4-8)

chap 5 排序檢索數據
取一個或多個列的名字,據此對輸出排序:SELECT 列名1,列名2 FROM 表名 ORDER BY 列名1,列名2
如果是多個列,那麼先根據列名1進行排序,然後對於列名1中相同的行,再根據列名2進行二次排序


數據排序不限於升序排列,可以在排序依據的列名後指定DESC實現降序排列。對於多個列上進行降序排列,必須對每個列指定DESC關鍵字。在後面可以添加LIMIT 數值規則,返回指定行


chap 6 過濾數據
使用WHERE子句,檢索指定搜索條件的數據。eg:SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;


SQL過濾與應用層過濾區別:
    數據在應用層過濾,爲此目的,SQL的SELECT語句爲客戶機應用檢索出超過實際所需的數據,然後客戶機代碼對返回數據進行循環,以提取出需要的行,這種就是應用層過濾。這種實現並不令人滿意,因此,對數據庫進行了優化,以便快速有效地對數據進行過濾。讓客戶機應用處理數據庫的工作會極大的影響應用的性能,並且使所創建的應用完全不具備可伸縮性。此外,向客戶機發送過多的數據還會導致網絡帶寬的浪費。
    
ORDER BY 和 WHERE 同時使用時,應該讓ORDER BY位於WHERE之後。
mysql在執行匹配時默認不區分大小寫,單引號用來限定字符串,如果是與數值列進行比較的值可以不用引號。
WHERE子句的操作符:
    =        等於           
    <>       不等於
    !=      不等於
    <        小於
    <=       小於等於
    >        大於
    >=       大於等於
    BETWEEN  在指定的兩個值之間 
                
SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;


NULL空值與不匹配:
    在使用WHERE匹配對應列的某個非NULL值時,匹配或者不匹配都不會顯示出NULL值的行。
    
chap 7 數據過濾
組合WHERE子句: 可以使用AND,OR來組合WHERE子句的子句實現。在子句中組合使用AND和OR時,需要注意操作符的優先級順序,AND優先級要高於OR,有時候可以藉助括號來實現優先級保護。


IN操作符:IN後面會跟隨一個集合或者說範圍,滿足這個範圍的合法值,都會被查詢出來。使用OR也可以實現相同的目的,但是使用IN,語法更加清楚直觀,執行速度快,最重要的是:IN可以包含其他SELECT語句,使得能夠更動態地建立WHERE子句。


NOT操作符:NOT就是否定!否定後面的條件或者WHERE子句,IN子句,BETWEEN子句和EXISTS子句限定的條件。


chap 8 用通配符進行過濾
通配符:用來匹配值的一部分的特殊字符,要想使用通配符,就得使用LIKE操作符
搜索模式:由字面值、通配符或者兩者組合構成的搜索條件,搜索條件常用引號''來包圍住


%:匹配任何字符出現任意次數,當然也可以匹配0個字符
_:只匹配單個字符而不是多個字符


使用通配符搜索的處理一般要比前面討論的其他搜索花費時間更長,所以不要過度使用通配符;非要不可的時候,才把通配符放在搜索模式的開頭;通配符的位置要清楚。



























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章