Node - postgreSQL(一)

一汰规、幾種常見(jiàn)數(shù)據(jù)庫(kù)介紹

  • SQL

    • Structured Query Language
    • 用于機(jī)構(gòu)化的查詢和操作數(shù)據(jù)
    • 適用于關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
    • 隱藏了如何訪問(wèn)某一條數(shù)據(jù)的細(xì)節(jié)
    • 有一套標(biāo)準(zhǔn)/協(xié)議來(lái)描述SQL語(yǔ)言
    • 后端必會(huì)曙旭,后端生涯的基石
  • NoSQL

    • 并不是 SQL 的反面垒在,而是各有不同
    • 為了解決特定環(huán)境下的問(wèn)題出現(xiàn)
    • eg: MongoDB redis memocache
  • 關(guān)系型數(shù)據(jù)庫(kù)

    • 預(yù)先定義的數(shù)據(jù)結(jié)構(gòu)
    • 易于關(guān)聯(lián)的數(shù)據(jù)
    • 高效的跨表查詢
    • Oracle/mySQL/postgreSQL
  • PostgreSQL

    • 完全開(kāi)源免費(fèi)
    • 基于分布式數(shù)據(jù)庫(kù)設(shè)計(jì)
    • 良好的社區(qū)環(huán)境
    • 充分驗(yàn)證

二切黔、PostgreSQL 安裝和使用

1绽诚、安裝 brew

2件甥、安裝 postgresql

  • brew install postgresql: 安裝包
  • mkdir demo & cd demo
  • initdb ./:初始化數(shù)據(jù)庫(kù)
  • pg_ctl -D ./ -l ./pg.log start :?jiǎn)?dòng)數(shù)據(jù)庫(kù)藏研,其中 ./pg.log 可自定義,為日志輸出位置咐汞。如果日志已經(jīng)創(chuàng)建盖呼,可通過(guò) pg_ctl -D ./ start 啟動(dòng)數(shù)據(jù)庫(kù),啟動(dòng)完成后化撕,再連接數(shù)據(jù)庫(kù) psql pg_playground
  • pg_ctl --help:可通過(guò)這個(gè)指令查看pg_ctl有哪些指令
  • createuser -s username: 創(chuàng)建一個(gè)無(wú)密碼用戶
  • createdb --owner=username pg_palyground:創(chuàng)建數(shù)據(jù)庫(kù) pg_playground并關(guān)聯(lián)所有者
  • psql pg_playground: 連接數(shù)據(jù)庫(kù)
  • SELECT version();查詢數(shù)據(jù)庫(kù)版本
  • \q:關(guān)閉連接
  • 創(chuàng)建數(shù)據(jù)庫(kù):
// 連接數(shù)據(jù)庫(kù)后几晤,即可創(chuàng)建數(shù)據(jù)庫(kù)
CREATE TABLE test_table_1 (  // 敲到左括號(hào),可回車
string_test_1 varchar(32),          // 不同字段可用 `,` 分隔
number_test_2 int                      // 字段名 + 數(shù)據(jù)類型
);                                                // 最后一行為 `);`

關(guān)于數(shù)字類型,charvarchar 的區(qū)別在于第二個(gè)為動(dòng)態(tài)字符植阴,括號(hào)內(nèi)數(shù)字表示最大長(zhǎng)度蟹瘾,如果為 char圾浅,則表示只能使用長(zhǎng)度為 32 的字符。

3憾朴、常用數(shù)據(jù)類型有:

  • char
  • varchar
  • SMALLINT/INT/BIGINT/DECIMAL:分別對(duì)應(yīng) 2 / 4 字節(jié)整型數(shù)字
  • TEXT
  • NUMERIC:浮點(diǎn)數(shù)
  • DOUBLE PRECISION:雙精度浮點(diǎn)數(shù)
  • BYTEA
  • DATE
  • INTERVAL
  • BOOLEAN
  • ENUM: 枚舉類型狸捕,舉例說(shuō)明:
CREATE TYPE mode AS ENUM('mode_1', 'mode_2', 'mode_3');
CREATE TABLE test_table_3 (
mode_test_3 mode
);

此時(shí),表中 mode_test_3 只能取 mode 中的某一個(gè)值

4伊脓、SQL 常用語(yǔ)句:

  • SELECT * FROM test_table_1;:在終端輸出表 test_table_1 的表結(jié)構(gòu)

5、操作表

  • ALTER TABLE test_table_3 ADD COLUMN new_uuid UUID;: 為表新增一列魁衙,可通過(guò)SELECT * FROM test_table_3 查詢表的前后差異
  • ALTER TABLE test_table_1 ALTER COLUMN string_test_1 TYPE char(32);:將 test_table_1 中 string_test_1 的類型改為 char
  • DROP TABLE test_table_3;:刪除表
  • 建表時(shí)添加主鍵約束:
CREATE TABLE test_table_4 (
  id INT PRIMARY KEY
);

主鍵約束的意思是报腔,在向表中插入數(shù)據(jù)的時(shí)候,要保證此字段既是全表唯一且不能為空剖淀。

三纯蛾、PostgreSQL 對(duì)表進(jìn)行增刪改查

  • 命令查詢:在啟動(dòng) postgreSQL 并連接數(shù)據(jù)庫(kù)后,可輸入 \h 查看對(duì)表進(jìn)行操作的一些命令
  • \d: 查看當(dāng)前數(shù)據(jù)庫(kù)下有哪些表
  • \d test_table_1:查詢表的詳細(xì)信息
    eg: 新建一張表纵隔,包含 name 和 age, name 不為空翻诉,且長(zhǎng)度大于4小于16,age 為整型捌刮,可不傳碰煌,默認(rèn)值為 18:
CREATE TABLE users(
  name TEXT NOT NULL CHECK(CHAR_LENGTH(name) > 4 && CHAR_LENGTH(name) < 15),
  age INT CHECK(age >= 0) DEFAULT 18
);

創(chuàng)建完成后,可通過(guò) \d users 查看表的信息绅作。

  • 插入數(shù)據(jù): INSERT INTO users (name, age) VALUES ('your name', 20);芦圾。可通過(guò)SELECT * FROM users;查詢表內(nèi)數(shù)據(jù)俄认。此處* 如果代表返回的表內(nèi)字段个少,users表可指定 name 或者 age,select 多個(gè)可使用,分隔眯杏。
  • 根據(jù)條件查詢表: SELECT * FROM users WHERE age = 20;
  • 刪除表中的數(shù)據(jù): DELECT FROM users夜焦;,此指令會(huì)刪除表中所有的數(shù)據(jù)岂贩。慎用茫经。
  • 根據(jù)條件刪除數(shù)據(jù):DELETE FROM users WHERE age = 18;。刪除 age = 18 的所有數(shù)據(jù)萎津。
  • 更新數(shù)據(jù)信息:UPDATE users SET age = 88 WHERE name = 'summer';
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載科平,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末姜性,一起剝皮案震驚了整個(gè)濱河市瞪慧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌部念,老刑警劉巖弃酌,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氨菇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妓湘,警方通過(guò)查閱死者的電腦和手機(jī)查蓉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榜贴,“玉大人豌研,你說(shuō)我怎么就攤上這事』5常” “怎么了鹃共?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)驶拱。 經(jīng)常有香客問(wèn)我霜浴,道長(zhǎng),這世上最難降的妖魔是什么蓝纲? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任阴孟,我火速辦了婚禮,結(jié)果婚禮上税迷,老公的妹妹穿的比我還像新娘永丝。我一直安慰自己,他們只是感情好箭养,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布类溢。 她就那樣靜靜地躺著,像睡著了一般露懒。 火紅的嫁衣襯著肌膚如雪闯冷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天懈词,我揣著相機(jī)與錄音蛇耀,去河邊找鬼。 笑死坎弯,一個(gè)胖子當(dāng)著我的面吹牛纺涤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抠忘,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撩炊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了崎脉?” 一聲冷哼從身側(cè)響起拧咳,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎囚灼,沒(méi)想到半個(gè)月后骆膝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祭衩,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年阅签,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掐暮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡政钟,死狀恐怖路克,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情养交,我是刑警寧澤精算,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站层坠,受9級(jí)特大地震影響殖妇,放射性物質(zhì)發(fā)生泄漏刁笙。R本人自食惡果不足惜破花,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疲吸。 院中可真熱鬧座每,春花似錦、人聲如沸摘悴。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹂喻。三九已至葱椭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間口四,已是汗流浹背孵运。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔓彩,地道東北人治笨。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赤嚼,于是被迫代替她去往敵國(guó)和親旷赖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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