PostgreSQL 筆記 - 簡介以及基本語法與範例
身為開發者,最近在學習 SQL。為了方便之後查找,也希望能透過整理的過程加深理解,所以特地寫了一些學習筆記。
關於 SQL
SQL 基本上就是我們跟資料庫溝通的「共同語言」。像 Oracle、MS SQL Server、MySQL 和 PostgreSQL 這些常見的資料庫系統,都是靠 SQL 來操作的。
如果以 PostgreSQL 為例,常見的挑戰大概有幾個。首先是怎麼寫出高效能的查詢,讓我們能夠快速抓到需要的資料。再來是資料庫結構(Schema)的設計,這會影響到後續的維護和擴充。除此之外,我們也得知道什麼時候該用進階功能,像索引、視圖或存儲過程,不然可能會讓效能拖慢。等到資料庫真正上線到生產環境後,還會面臨效能調校、安全性設定,以及備份還原等管理工作。
至於資料庫設計的流程,其實可以很直覺地看成三個步驟:先釐清要存哪些「東西」(實體),接著決定這些東西應該有哪些「特徵」(屬性),最後再幫每個屬性選一個合適的資料型態,確保資料能正確又有效率地被處理。
基本範例
建立資料表
- CREATE TABLE:關鍵字(Keywords),告訴資料庫我們想要執行的操作。通常以大寫字母書寫。
- cities:識別符(Identifier),告訴資料庫我們要操作的對象。通常以小寫字母書寫。
- VARCHAR(50):可變長度字元。用於儲存文字!若輸入超過 50 個字元的字串,系統會回傳錯誤。
- INTEGER:不含小數點的整數(範圍從 -2,147,483,647 到 +2,147,483,647)。
插入資料到資料表
插入多筆資料
使用 SELECT 查詢資料
取得資料表中的所有欄位
可以選擇特定欄位進行查詢:
- 第一個查詢從 cities 表中僅擷取 area 和 name 欄位
- 第二個查詢從 cities 表中僅擷取 area 和 population 欄位
- 第三個查詢展示了可以多次選擇同一欄位(在這個例子中,name 欄位被選擇了三次)
計算欄位
可以在查詢中進行計算並為計算結果命名:
這個查詢計算了每個城市的人口密度(人口除以面積),並將結果欄位命名為 density。
字串運算子與函數
在 PostgreSQL 中,我們可以使用多種方法處理和操作字串資料:
字串連接
||運算子:連接兩個或多個字串
輸出結果:
| location |
|---|
| Tokyo, Japan |
| Delhi, India |
| Shanghai, China |
| Sao Paulo, Brazil |
CONCAT()函數:連接多個字串,功能與||相似
輸出結果:
| location |
|---|
| Tokyo, Japan |
| Delhi, India |
| Shanghai, China |
| Sao Paulo, Brazil |
字串處理函數
PostgreSQL 提供多種實用的字串處理函數:
LOWER(string)- 將字串轉換為小寫LENGTH(string)- 計算字串的字元數UPPER(string)- 將字串轉換為大寫
這些函數可以組合使用:
輸出結果:
| location | name_length |
|---|---|
| TOKYO, JAPAN | 5 |
| DELHI, INDIA | 5 |
| SHANGHAI, CHINA | 8 |
| SAO PAULO, BRAZIL | 9 |
其他常用字串函數
TRIM(string)- 移除字串前後的空白SUBSTRING(string, start, length)- 從指定位置擷取子字串REPLACE(string, from, to)- 替換字串中的指定文字
範例: