數(shù)據(jù)庫中as的用法
數(shù)據(jù)庫中as的用法
數(shù)據(jù)庫中as的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數(shù)據(jù)庫中as的用法的用法,希望對你們有用。
數(shù)據(jù)庫中as的用法的用法如下:
要從一個表中檢索數(shù)據(jù)就是查詢這個表。SQL 的 SELECT 語句就是做這個用途的。該語句分為選擇列表(列出要返回的字段)、表列表(列出從中檢索數(shù)據(jù)的表)、以及可選的條件(聲明任意限制)。比如,要檢索表 weather 的所有行,鍵入:
SELECT * FROM weather;這里的 * 是"所有字段"的縮寫。[1]因此同樣的結(jié)果可以用下面的語句獲得:
SELECT city, temp_lo, temp_hi, prcp, date FROM weather;而輸出應(yīng)該是:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
San Francisco | 43 | 57 | 0 | 1994-11-29
Hayward | 37 | 54 | | 1994-11-29
(3 rows)你可以在選擇列表中寫任意表達式,而不僅僅是字段列表。比如,你可以:
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;這樣應(yīng)該得到:
city | temp_avg | date
---------------+----------+------------
San Francisco | 48 | 1994-11-27
San Francisco | 50 | 1994-11-29
Hayward | 45 | 1994-11-29
(3 rows)請注意這里的 AS 子句是如何給輸出字段重新命名的。AS 子句是可選的。
一個查詢可以使用 WHERE 子句進行"修飾",聲明需要哪些行。WHERE 子句包含一個布爾表達式,只有那些布爾表達式為真的行才會被返回。允許你在條件中使用常用的布爾操作符(AND, OR, NOT)。比如,下面的查詢檢索舊金山的下雨天的天氣:
SELECT * FROM weather
WHERE city = 'San Francisco' AND prcp > 0.0;結(jié)果:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
(1 row)你可以要求返回的查詢是排好序的:
SELECT * FROM weather
ORDER BY city; city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
Hayward | 37 | 54 | | 1994-11-29
San Francisco | 43 | 57 | 0 | 1994-11-29
San Francisco | 46 | 50 | 0.25 | 1994-11-27在這個例子里,排序的順序并非絕對清晰的,因此你可能看到 San Francisco 行隨機的排序。但是如果你使用下面的語句,那么就總是會得到上面的結(jié)果
SELECT * FROM weather
ORDER BY city, temp_lo;你可以要求查詢的結(jié)果按照某種順序排序,并且消除重復(fù)行的輸出:
SELECT DISTINCT city
FROM weather; city
---------------
Hayward
San Francisco
(2 rows)再次聲明,結(jié)果行的順序可能是隨機的。你可以組合使用 DISTINCT 和 ORDER BY 來獲取一致的結(jié)果:[2]
SELECT DISTINCT city
FROM weather
ORDER BY city;注意
[1] 雖然 SELECT * 可以把查詢的結(jié)果翻出來,但我們普遍認為在生產(chǎn)代碼中這是很糟糕的風(fēng)格,因為給表增加一個字段就改變了結(jié)果。
[2] 在一些數(shù)據(jù)庫系統(tǒng)里,包括老版本的 PostgreSQL ,DISTINCT 自動對行進行排序,因此 ORDER BY 是多余的。但是這一點并不是 SQL 標準的要求,并且目前的 PostgreSQL 并不保證 DISTINCT 導(dǎo)致數(shù)據(jù)行被排序。