PostgreSQL數(shù)據(jù)庫筆記(未完待續(xù))

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ù)值類型

    1. 整數(shù)類型

      • SMALLINT 小范圍整數(shù)北发,取值范圍:-32768~32767
      • INT(INTEGER) 普通大小整數(shù)-2147483648~2147483647
    2. 任意精度浮點數(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ù)記錄 可以 不可以
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末威根,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子视乐,更是在濱河造成了極大的恐慌洛搀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佑淀,死亡現(xiàn)場離奇詭異留美,居然都是意外死亡,警方通過查閱死者的電腦和手機伸刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門谎砾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捧颅,你說我怎么就攤上這事景图。” “怎么了碉哑?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵挚币,是天一觀的道長。 經(jīng)常有香客問我扣典,道長妆毕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任贮尖,我火速辦了婚禮笛粘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己薪前,他們只是感情好润努,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著序六,像睡著了一般任连。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上例诀,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天随抠,我揣著相機與錄音,去河邊找鬼繁涂。 笑死拱她,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扔罪。 我是一名探鬼主播秉沼,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矿酵!你這毒婦竟也來了唬复?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤全肮,失蹤者是張志新(化名)和其女友劉穎敞咧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辜腺,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡休建,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了评疗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片测砂。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖百匆,靈堂內(nèi)的尸體忽然破棺而出砌些,到底是詐尸還是另有隱情,我是刑警寧澤加匈,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布寄症,位于F島的核電站,受9級特大地震影響矩动,放射性物質(zhì)發(fā)生泄漏有巧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一悲没、第九天 我趴在偏房一處隱蔽的房頂上張望篮迎。 院中可真熱鬧男图,春花似錦、人聲如沸甜橱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岂傲。三九已至难裆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镊掖,已是汗流浹背乃戈。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亩进,地道東北人症虑。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像归薛,于是被迫代替她去往敵國和親谍憔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容