Postgre數(shù)據(jù)庫
數(shù)據(jù)庫基礎(chǔ)知識入門
數(shù)據(jù)庫是一個長期儲存在計算機內(nèi)的铣缠,有組織的烘嘱,有共享的,統(tǒng)一管理的數(shù)據(jù)集合蝗蛙。
數(shù)據(jù)庫表:是一系列二維數(shù)組的集合
- 橫向的行(記錄蝇庭、行)
- 縱向的列(字段、屬性捡硅、列)
常用的數(shù)據(jù)類型:
- 整數(shù)數(shù)據(jù)類型
- 浮點數(shù)數(shù)據(jù)類型
- 日期哮内、時間數(shù)據(jù)類型
- 字符串?dāng)?shù)據(jù)類型
- 二進制數(shù)據(jù)類型
數(shù)據(jù)庫系統(tǒng)有3個注意組成部分:
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)
- 數(shù)據(jù)庫應(yīng)用程序
SQL語言(對數(shù)據(jù)庫進行查詢和修改操作語言):
- DDL語言:DROP,CREATE,ALTER等
- DML語言:INSERT,UPDATA,DELETE等
- DQL語言:SELECT等
- DCL語言:GRANT,REVOKE,COMMIT,ROLLBACK等
流行的數(shù)據(jù)庫訪問技術(shù):
- ODBC:Open Database Connectivity(開放數(shù)據(jù)庫連接)
- JDBC:Java Database Connectivity(Java數(shù)據(jù)庫連接)
- ADO.NET:.NET框架中用于和數(shù)據(jù)庫交互的類庫
- PDO:PHP Data Object(PHP語言訪問數(shù)據(jù)庫技術(shù))
PostgreSQL數(shù)據(jù)庫介紹
主要特點:
- 免費
- 速度快
- 平臺可移植性
- 豐富的接口
- 面向?qū)ο筇匦?/li>
- 安全性
- 配合的開源軟件很多
pgadmin客戶端工具使用
使用pgAdmin工具連接PostgreSQL服務(wù)器
- 關(guān)閉服務(wù)器端機器防火墻
- 修改服務(wù)器端連接監(jiān)聽(postgresql.conf配置文件)
- 修改連接認證方式(pg_hba.conf配置文件)
postgreSQL數(shù)據(jù)庫、數(shù)據(jù)表壮韭、數(shù)據(jù)類型和運算符的介紹
使用pgadmin工具操作數(shù)據(jù)表類型
postgreSQL常用數(shù)據(jù)類型介紹:
-
數(shù)值類型
-
整數(shù)類型
- SMALLINT 小范圍整數(shù)北发,取值范圍:-32768~32767
- INT(INTEGER) 普通大小整數(shù)-2147483648~2147483647
-
任意精度浮點數(shù)類型:
- REAL 6位十進制數(shù)字精度
- NUMERIC(m,n) 任意精度類型
-
-
日期與時間類型
類型名稱 含義 內(nèi)存需求 舉例 TIME 只用于一日內(nèi)時間 8bit 10:05:05 DATE 只用于日期 4bit 1987-04-04 TIMESTAMP 日期和時間 8bit 1987-04-04 10:05:05 -
字符串類型
類型名稱 說明 CHAR(n)/CHARACTER(n) 固定長度字符串,不足補空白 VARCHAR(n)/CHARACTER VARYING(n) 變長字符串喷屋,有長度限制 TEXT 變長字符串琳拨,無長度限制
如何選擇正確的數(shù)據(jù)類型
主要目的:優(yōu)化存儲,提高數(shù)據(jù)庫性能
正確使用整數(shù)類型和浮點數(shù)類型
日期與時間類型
CHAR(自動補齊屯曹,但檢索效率更高)與VARCHAR之間的特點與選擇
PostgreSQL運算符
算數(shù)運算符包含內(nèi)容:
- 加(+)
- 減(-)
- 乘(*)
- 除(/)
- 求余數(shù)(模運算狱庇,%)
比較運算法
運算符 | 作用 |
---|---|
= | 等于 |
<>(!=) | 不等于 |
<= | 小于等于 |
>= | 大于等于 |
LEAST | 在有兩個或者多個參數(shù)時,返回最小值 |
GREATEST | 在有兩個或者多個參數(shù)時恶耽,返回最大值 |
BETWEEN AND | 判斷一個值是否落在兩個值之間 |
IN | 判斷一個值是否是IN列表中的任意一個值 |
LIKE | 通配符匹配 |
邏輯運算符
- NOT(邏輯非)
- AND(邏輯與)
- OR(邏輯或)
運算符優(yōu)先級:
優(yōu)先級 | 運算符 |
---|---|
最低 | =(賦值運算符) |
中級 | or |
中級 | and |
中級 | not |
中級 | between僵井、case、when驳棱、then批什、else |
中級 | =(比較運算符)、>=社搅、>驻债、<=、<形葬、<>合呐、!=、is笙以、like淌实、in |
中級 | *、/、% |
中級 | -(負號) |
最高 | ! |
課程要求:
- pgadmin工具操作數(shù)據(jù)庫拆祈、數(shù)據(jù)表對象
- SQL語言操作數(shù)據(jù)庫恨闪,數(shù)據(jù)表對象
- 常用數(shù)據(jù)類型的含義和使用場景
- 常用運算符的使用方式和運算符的優(yōu)先級
函數(shù)、索引放坏、視圖
常用函數(shù)介紹
常用的數(shù)值函數(shù)
函數(shù)名稱 | 函數(shù)作用 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數(shù) |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列的值之和 |
常用字符串函數(shù)
函數(shù)名稱 | 函數(shù)作用 |
---|---|
LENGTH(s) | 計算字符串長度 |
CONCAT(s1,s2,...) | 字符串合并函數(shù) |
LTRIM(s)/RTRIM(s)/TRIM(s) | 刪除字符串空格函數(shù) |
REPLACE(s,s1,s2) | 字符串替換函數(shù) |
SUBSTRING(s,pos,len) | 獲取子串函數(shù)(從pos開始的位置咙咽,截取len個字符) |
注:這個函數(shù)名稱在不同的資料庫中不完全一樣。
- MySQL:substr(),substring()
- Oracle:substr()
- SQL Server:substring()
常用日期時間函數(shù)
函數(shù)名稱 | 函數(shù)作用 |
---|---|
EXTRACT(type FROM d) | 獲取日期指定值函數(shù) |
CURRENT_DATA | 獲取當(dāng)前日期函數(shù) |
CURRENT_TIME | 獲取當(dāng)前時間函數(shù) |
NOW | 獲取當(dāng)前時間函數(shù) |
PostgreSQL自定義函數(shù)
基本語法格式:
-- 聲明創(chuàng)建函數(shù)
CREATE FUNCTION
-- 定義函數(shù)名稱淤年,參數(shù)類型
add(integer,integer)
-- 定義函數(shù)返回值
returns integer
-- 定義函數(shù)體
AS 'select $1+$2;'
-- 用以實現(xiàn)函數(shù)的語言的名字
LANGUAGE SQL
-- 定義參數(shù)為null時處理情況
RETURNS NULL ON NULL INPUT
PostgreSQL數(shù)據(jù)庫索引介紹
索引名稱 | 使用場景 |
---|---|
B-tree索引 | 適合處理哪些能按照順序存儲的數(shù)據(jù) |
Hash索引 | 只能處理簡單的等于比較 |
GiST索引 | 一種索引架構(gòu) |
GIN索引 | 反轉(zhuǎn)索引钧敞,處理包含多個值的鍵 |
使用索引的優(yōu)點:
- 提高數(shù)據(jù)的查詢速度
- 加速表與表之間的連接
使用索引的缺點:
- 創(chuàng)建和維護索引需要耗費時間
- 需要占用磁盤空間
PostgreSQL數(shù)據(jù)庫視圖介紹
視圖的作用:
- 簡單化
- 安全性
- 邏輯數(shù)據(jù)獨立性
PostgreSQL數(shù)據(jù)操作和數(shù)據(jù)表約束
-
簡單數(shù)據(jù)插入操作
- 向單表中插入數(shù)據(jù)
- 向數(shù)據(jù)表中指定字段插入數(shù)據(jù)
-
批量數(shù)據(jù)插入操作
使用insert語句批量向數(shù)據(jù)表中插入數(shù)據(jù)
-
使用select查詢批量向數(shù)據(jù)表中插入數(shù)據(jù)
insert批量插入數(shù)據(jù)語法格式:
insert into 表名(屬性名稱) values(取值列表1),(取值列表2)麸粮,...溉苛,(取值列表n);
select批量插入數(shù)據(jù)語法格式:
insert into 表名1(屬性名稱) select (屬性值) from 表名2 where(查詢條件);
-
數(shù)據(jù)更新操作
- 指定條件更新數(shù)據(jù)
- 批量更新數(shù)據(jù)
- 將指定結(jié)果更新到對應(yīng)字段
-
數(shù)據(jù)刪除操作
- 數(shù)據(jù)刪除
- truncate數(shù)據(jù)清空操作
- delete和truncate操作區(qū)別
- | delete | truncate |
---|---|---|
執(zhí)行速度 | 慢 | 快 |
可指定條件 | 可以 | 不可以 |
語句分類 | DML | DDL |
可以回滾事務(wù) | 可以 | 不可以 |
刪除操作記錄日志 | 記錄 | 不記錄 |
-
PostgreSQL數(shù)據(jù)表主鍵和外鍵介紹
主鍵約束作用:
- 唯一標(biāo)識一條記錄
- 提高數(shù)據(jù)的檢索效率
外鍵約束作用:
- 保證數(shù)據(jù)的完整性
- 提高數(shù)據(jù)的檢索效率
-
PostgreSQL數(shù)據(jù)表非空約束、唯一約束和默認值約束介紹
- 如何定義非空約束
- 如何定義唯一約束
- 如何定義默認值約束
- 非空約束弄诲、唯一約束與默認值約束的作用
約束作用:
- 維護數(shù)據(jù)的完整性
- 在業(yè)務(wù)層面保證數(shù)據(jù)正確性(例如添加當(dāng)前時間)
PostgreSQL數(shù)據(jù)查詢操作
-
簡單數(shù)據(jù)查詢操作
-
SQL查詢語法介紹
select {*|<字段列表>} //查詢結(jié)果字段內(nèi)容 from [ <表1>炊昆,<表2>... //查詢數(shù)據(jù)表 [where<表達式>] //where查詢條件表達式 [group by <group by definition>] //group by數(shù)據(jù)分組 [having<expression>[{<operator><expression>}...]] [order by<order by definition>] //查詢結(jié)果排序 [limit[<offset>,]<row count>] //限制結(jié)果顯示數(shù)量 ]
簡單數(shù)據(jù)查詢操作
為表和字段指定別名(as name)
-
-
單表指定條件查詢操作
- 查詢指定記錄
- in關(guān)鍵字查詢
- between and 范圍查詢
- like模糊查詢
-
單表指定條件復(fù)雜查詢操作
- 查詢控制內(nèi)容
- and、or多條件查詢
- 查詢結(jié)果集排序
- limit關(guān)鍵字查詢
-
多表連接查詢操作
- inner join 連接查詢
- left join 連接查詢
- right join連接查詢
-
子查詢操作
- exists關(guān)鍵字子查詢操作
- in關(guān)鍵字子查詢操作
- 標(biāo)量子查詢操作
-
查詢結(jié)果集合并操作
- 使用union all對查詢結(jié)果進行合并
- 使用union對查詢結(jié)果進行合并
- union all 和union之間的區(qū)別
- | union | union all |
---|---|---|
執(zhí)行速度 | 慢 | 快 |
去除重復(fù)記錄 | 可以 | 不可以 |