目錄
PostgreSQL學習筆記(二)
PostgreSQL數據庫基本操作
一、登錄和登出
這裏假設用戶使用postgres登錄數據庫。
在控制檯登錄語句爲:psql -U postgres 登錄語法:psql –U postgres [dbname]
退出語法使用:\q
查看命令的幫助提示語法爲:psql -?
二、數據庫操作
創建數據庫語法:create database 數據庫名;
刪除數據庫語法:drop database 數據庫名;(刪除數據數據庫時需關閉數據庫連接或切換至其他數據庫)
列舉數據庫語法:\l
選擇數據庫語法:\c 數據庫名
三、數據庫表操作
創建表語法:create table 表名(<字段名><數據類型(數量)>......);
查看錶結構語法:\d 表名
刪除表:drop table 表名
四、數據庫CRUD操作
Insert操作
PostgreSQL數據庫支持多種插入形式。
- 正常的一一對應插入數據
- 不按照字段順序插入數據
- 省略某些字段插入數據(未設置not null/具有默認值或生成策略)
同時可以使用Alter增加一列字段。
數據導入/導出:
psql導入(批量插入):
未登錄: psql -U 用戶名 -d 表名 -f 文件路徑
登錄數據庫: 1. psql –U 用戶名 -d 數據庫名 2. \i 文件路徑(Unix)
pg_dump導出:
pg_dump -U postgres 用戶名 -t 表名 數據庫名(缺省時同用戶名) > 路徑/文件名
copy … from 導入:
copy … to 導出(導出weather表全部數據:):
Select查詢語句
在查詢時,可以查詢某一張表中的全部字段,或者查詢部分字段,或者查詢表達式
注:查詢表達式,如果沒有AS字句,對應字段會用默認命名 ?column?,WHERE 條件查詢:後面跟bool表達式。查詢只返回表達式爲true的數據。 多個bool表達式之間用AND(與)、OR(或)和NOT(非)連接。
在查詢過程中可以設置一些特殊的查詢條件,這些查詢條件可以幫助我們更加細緻的查詢數據。
ORDER BY排序查詢:
DISTINCT 去重:
GROUP BY 分組:
HAVING 子句(與GROUP BY子句組合使用,用於選擇函數結果滿足某些條件的特定行):
LIKE 匹配:
‘_’表示匹配一個佔位符 ,
’%’表示匹配任意多個字符
IN 、NOT IN、BETWEEN 與 WHERE 連用
IN : 指定條件滿足IN條件
NOT IN:指定條件否定IN條件
BETWEEN:以從兩個指定條件之間的表中獲取數據
UNION 、UNION ALL :
UNION :子句/運算符用於合併兩個或多個SELECT語句的結果,不返回任何重複的行
UNION ALL :運算符是用來結合兩個SELECT語句,包括重複行
>兩個查詢都必須返回相同數量的列。
>查詢中的相應列必須具有兼容的數據類型
>可使用ORDER BY子句,對指定列的組合結果集中的行進行排序,
PostgreSQL數據庫同樣支持子查詢和多表查詢。
子查詢:
子查詢必須遵循以下規則:
> 子查詢必須括在括號中。
> 子查詢在SELECT子句中只能有一列,除非主查詢中有多個列用於比較其所選列的子查詢。
> ORDER BY不能用於子查詢,儘管主查詢可以使用ORDER BY。
> GROUP BY可用於執行與子查詢中的ORDER BY相同的功能。
> 返回多行的子查詢只能與多個值運算符一起使用,
例如:IN,EXISTS,NOT IN,ANY / SOME,ALL運算符。
BETWEEN運算符不能與子查詢一起使用; 但是,BETWEEN可以在子查詢中使用
多表查詢:
Update更新操作
PostgreSQL中的upsert操作
當在表中插入一個新行時,PostgreSQL會更新該行(如果它已經存在),否則,PostgreSQL會插入新行
命令:
Delete刪除操作