本篇介紹如何使用select語句從表中檢索乙個或多個資料
select語句:從乙個或多個表中檢索資訊。slecet一般與from一塊使用
檢索單個列 select name from employee
檢索多個列select name , ***,work from employee
檢索所有列select * from employee
*
為萬用字元,select * from employee 就是從employee中檢索所有的列,列的順序一般是列在表定義**現的物理順序,但並不總是如此。能不使用*
的情況下的情況下盡量不要使用,檢索不需要的列通常會降低檢索和應用程式的效能。(就比如在oralce中,會將*
依次轉換成所有的列名,這個工作時通過查詢資料字典完成的,這意味著將會耗費更多的時間)當不知道表的列名的時候,*
也能幫助檢索未知的列。
注意:(1)多條sql語句寫在一塊的時候需要使用分號(;)分割。多數dbms不需要在單條sql語句後加分號。 (2)雖說sql語句不區分大小寫,建議還是嚴格按照標準來。(3)檢索(select)多個列的時候,列之間要使用逗號隔開。(4)如果沒有明確的排序查詢結果(如果沒有使用distict),則返回的資料沒有特定的順序。返回資料的順序可能是資料被新增到表中的順序,也可能不是。只要返回相同數目的行,就是正常的。
distinct:關於distinct,這個人的講的很詳細。另乙個
是前面鏈結的一種可行的不完全的解決方案。
限制結果:select語句可以返回第一行或者一定數量的行。但是各種資料庫中這一sql實現並不進相同。
1.在sql server和access中使用select時,可以使用top關鍵字來限制最多返回多少行。select top 5 prod_name from products
上面**使用select top 5語句,只檢索前5行資料。
2.如果你使用oracle,需要基於rownum(行計數器)來計算行。像select prod_name from products where rownum <=5
3.如果你使用mysql、mariadb、postgresql或者sqlite,需要使用limit子句:select prod_name from products limit 5
limit 5指示mysql等dbms返回不超過5行的資料。當需要指定從哪兒開始以及檢索的行數是,**為select prod_name from products limit 5 offset 4
limit指定返回的行數,offset指定從哪兒開始(包括當前行)。在計算機方面,通常是從第0行開始的,第0行代表表中第一條記錄。所以 offset 4 是行是第四行,但是實際上是第五條記錄。select prod_name from products limit 5 offset 4
意思就是檢索出第五條記錄開始(包括第五個)後面五個記錄。limit 5 offset 4
也可以寫成limit 4,5
注釋:三種注釋方式 1.–注釋 2.#注釋 3./*注釋*/
說明:並非所有的sql實現都一樣
sql雖然通常都有相當一致的實現,但你不能想當然地認為它總是這樣。非常基本的語句往往是容易移植的,但較複雜的語句就不同了。當你針對某個問題尋找sql解決方案時,一定要記住這一點。說白了sql語句只是基礎查詢差不多,但是在各種資料庫中過程、函式、序列等複雜的地方還是有很大區別的,得到的解決方案也會有很大區別。
注:本篇的內容大部分是根據《sql必知必會第三版》該書第二篇章總結的。
(DDIA)資料儲存與檢索(一)
乙個資料庫最基本的要具有兩個功能 當你給它一些資料的時候它可以幫你儲存資料,之後當你需要這些資料時,他可以返回給你所需要的資料。你 應用程式開發人員 向資料庫提供固定格式的資料,稍後你就可以再次請求獲取這些資料。在本章中,我們將從資料庫的角度討論以下問題 資料庫如何儲存我們所給出的資料,以及當我們需...
mysql檢索資料
簡單的來說select 語句用於從表中選取資料。select from city idname countrycode district population 1kabul afgkabol 1780000 2qandahar afgqandahar 237500 3herat afgherat 1...
排序檢索資料
select prod name from products 這樣直接檢索出的單個列,並沒有特定的順序 關聯式資料庫設計理論認為,如果不明確規定順序排序,則不應該假定檢索出的資料的順序有任何意義 為了明確的進行排序可使用order by 字句 order by字句出現的位置必須是select語句中最...