成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

想熟悉PostgreSQL?這篇就夠了

DTeam / 1548人閱讀

摘要:它在其他開(kāi)放源代碼數(shù)據(jù)庫(kù)系統(tǒng)和專有系統(tǒng)之外,為用戶又提供了一種選擇。將插入空間以填補(bǔ)任何額外的空間。始終被視為唯一值上述兩個(gè)約束的組合。表范圍的約束可以是,,或。如何在中創(chuàng)建表我們將創(chuàng)建一個(gè)名為的表,它定義了各種游樂(lè)場(chǎng)設(shè)備。

歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~

本文由angel_郁  發(fā)表于云+社區(qū)專欄
什么是PostgreSQL?

PostgreSQL是自由的對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器,在靈活的BSD風(fēng)格許可證下發(fā)行。它在其他開(kāi)放源代碼數(shù)據(jù)庫(kù)系統(tǒng)和專有系統(tǒng)之外,為用戶又提供了一種選擇。 我們還是建議您使用云數(shù)據(jù)庫(kù)進(jìn)行搭建,省去數(shù)據(jù)遷移等麻煩操作,數(shù)據(jù)庫(kù)詳見(jiàn):https://cloud.tencent.com/pro...

在本文中,我們將討論如何在postgreSQL接口中創(chuàng)建和管理表。您將學(xué)習(xí)如何正確配置表并使用它們來(lái)存儲(chǔ)您的信息。

如何在Ubuntu上安裝并登錄PostgreSQL

我們將在Ubuntu上安裝PostgreSQL,但它應(yīng)該可以在大多數(shù)其他發(fā)行版的默認(rèn)存儲(chǔ)庫(kù)中使用。

輸入以下要安裝的命令:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

安裝后,創(chuàng)建一個(gè)新用戶來(lái)管理我們將要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù):

sudo adduser postgres_user

登錄默認(rèn)的PostgreSQL用戶(稱為“postgres”)來(lái)創(chuàng)建數(shù)據(jù)庫(kù)并將其分配給新用戶:

sudo su  -  postgres
PSQL

您將被放入PostgreSQL命令提示符。

創(chuàng)建與您創(chuàng)建的系統(tǒng)用戶匹配的新用戶。然后創(chuàng)建該用戶管理的數(shù)據(jù)庫(kù):

CREATE USER postgres_user密碼為" 密碼 ";
CREATE DATABASE my_postgres_db OWNER postgres_user ;

使用以下命令退出界面:

q

退出默認(rèn)的“postgres”用戶帳戶并使用以下命令登錄您創(chuàng)建的用戶:

exit
sudo su - postgres_user

使用以下命令登錄您創(chuàng)建的數(shù)據(jù)庫(kù):

psql my_postgres_db

我們現(xiàn)在準(zhǔn)備了解表管理。

PostgreSQL中的表創(chuàng)建語(yǔ)法

我們的數(shù)據(jù)庫(kù)還沒(méi)有任何表格。我們可以此命令為來(lái)驗(yàn)證這一點(diǎn):

d
No relations found.

我們可以通過(guò)以下語(yǔ)法來(lái)創(chuàng)建新表:

CREATE TABLE new_table_name (
    table_column_title TYPE_OF_DATA column_constraints,
    next_column_title TYPE_OF_DATA column_constraints,
    table_constraint
    table_constraint
) INHERITS existing_table_to_inherit_from;

除了先前定義中列出的列之外,還繼承現(xiàn)有表中的所有列。括號(hào)內(nèi)的部分分為兩部分:列定義和表約束。

PostgreSQL列和表定義

列定義遵循以下語(yǔ)法模式:

column_name data_type (optional_data_length_restriction) column_constraints

列名應(yīng)該是不言自明的。

PostgreSQL數(shù)據(jù)類型

數(shù)據(jù)類型可以是以下任何一種:

布爾型:使用“boolean”或“bool”聲明true或false值。

字符值

char:擁有一個(gè)字符

char(#):保存#個(gè)字符數(shù)。將插入空間以填補(bǔ)任何額外的空間。

varchar(#):最多包含#個(gè)字符數(shù)。

整數(shù)值

smallint:-32768和32767之間的整數(shù)。

int:-214783648和214783647之間的整數(shù)。

serial:自動(dòng)填充的整數(shù)。

浮點(diǎn)值

float(#):浮點(diǎn)數(shù),至少有#個(gè)精度點(diǎn)。

real:8字節(jié)浮點(diǎn)數(shù)

numeric(#,after_dec):擁有#位數(shù)的實(shí)數(shù),小數(shù)點(diǎn)后有after_dec位

日期和時(shí)間值

date:存儲(chǔ)日期值

time:存儲(chǔ)時(shí)間值

timestamp:存儲(chǔ)日期和時(shí)間值

timestamptz:存儲(chǔ)包含時(shí)區(qū)數(shù)據(jù)的時(shí)間戳

interval:存儲(chǔ)兩個(gè)時(shí)間戳值之間的差值

幾何數(shù)據(jù)

point:存儲(chǔ)一對(duì)定義點(diǎn)的坐標(biāo)

line:存儲(chǔ)一組映射出一條線的點(diǎn)

lseg:存儲(chǔ)定義線段的數(shù)據(jù)

box:存儲(chǔ)定義矩形的數(shù)據(jù)

polygon:存儲(chǔ)定義任何封閉空間的數(shù)據(jù)

設(shè)備規(guī)格

inet:存儲(chǔ)IP地址

macaddr:存儲(chǔ)設(shè)備MAC地址

PostreSQL列和表約束

列定義還可以具有約束,這些約束為列中找到的數(shù)據(jù)類型提供規(guī)則。以下內(nèi)容可用作數(shù)據(jù)類型后面的空格分隔值:

NOT NULL:列不能具有空值

UNIQUE:任何記錄的列值都不能相同。Null始終被視為唯一值

PRIMARY KEY:上述兩個(gè)約束的組合。每張表只能使用一次

CHECK:確保列中值的條件為真

REFERENCES:值必須存在于另一個(gè)表的列中

在定義列之后,可以聲明表范圍的約束。表范圍的約束可以是UNIQUE,PRIMARY KEY,CHECK或REFERENCES。

如何在PostgreSQL中創(chuàng)建表

我們將創(chuàng)建一個(gè)名為“pg_equipment”的表,它定義了各種游樂(lè)場(chǎng)設(shè)備。輸入以下表定義:

CREATE TABLE pg_equipment (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ("north", "south", "west", "east", "northeast", "southeast", "southwest", "northwest")),
    install_date date
    );
NOTICE:  CREATE TABLE will create implicit sequence "pg_equipment_equip_id_seq" for serial column "pg_equipment.equip_id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pg_equipment_pkey" for table "pg_equipment"
CREATE TABLE

我們可以通過(guò)在提示符下輸入“ d”來(lái)查看我們的新表:

d
                       List of relations
 Schema |           Name            |   Type   |     Owner     
--------+---------------------------+----------+---------------
 public | pg_equipment              | table    | postgres_user
 public | pg_equipment_equip_id_seq | sequence | postgres_user
(2 rows)

列出該表,以及“equip_id”串行數(shù)據(jù)類型聲明創(chuàng)建的序列。

如何在PostgreSQL中更改表數(shù)據(jù)

我們可以使用以下通用語(yǔ)法更改表的定義:

ALTER TABLE table_name Action_TO_Take;

例如,我們可以通過(guò)輸入以下命令在我們的“pg_equipment”表中添加一列:

ALTER TABLE pg_equipment ADD COLUMN functioning bool;
ALTER TABLE

我們可以通過(guò)輸入來(lái)查看額外的列:

d pg_equipment
    Column    |         Type          |                            Modifiers                            
--------------+-----------------------+-----------------------------------------------------------------
 equip_id     | integer               | not null default nextval("pg_equipment_equip_id_seq"::regclass)
 type         | character varying(50) | not null
 color        | character varying(25) | not null
 location     | character varying(25) | 
 install_date | date                  | 
 functioning  | boolean               |
 . . .

要添加一個(gè)默認(rèn)值,請(qǐng)?zhí)峁┮韵旅睿?/p>

ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT "true";

如果我們想確保該值也不為null,我們可以這樣做:

ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;

要重命名該列,請(qǐng)使用以下語(yǔ)法:

ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;

要?jiǎng)h除我們剛剛創(chuàng)建的列,請(qǐng)輸入以下命令:

ALTER TABLE pg_equipment DROP COLUMN working_order;

我們可以使用以下命令重命名整個(gè)表:

ALTER TABLE pg_equipment RENAME TO playground_equip;
刪除PostgreSQL中的表

我們可以通過(guò)輸入下面的命令來(lái)刪除我們創(chuàng)建的表:

DROP TABLE playground_equip;
DROP TABLE

如果我們將該命令提供給不存在的表,我們將看到以下錯(cuò)誤:

ERROR: table "playground_equip" does not exist

為了避免這個(gè)錯(cuò)誤,我們可以告訴postgreSQL刪除表,并以任何方式成功返回。我們通過(guò)發(fā)出以下命令來(lái)完成此操作:

DROP TABLE IF EXISTS playground_equip;
NOTICE:  table "playground_equip" does not exist, skipping
DROP TABLE

這一次,它告訴我們找不到表,但繼續(xù)而不是拋出錯(cuò)誤。

結(jié)論

您現(xiàn)在應(yīng)該知道在如何PostgreSQL中創(chuàng)建和管理簡(jiǎn)單表。如果您正在者學(xué)習(xí)如何從命令行控制PostgreSQL,這些技能將非常有用。更多Linux教程,請(qǐng)持續(xù)關(guān)注騰訊云+社區(qū)的文章。


參考文獻(xiàn):《How To Create, Remove, & Manage Tables in PostgreSQL on a Cloud Server》

問(wèn)答

PostgreSQL的隱藏特征?

相關(guān)閱讀

Nginx的安裝和配置疑難解答

如何備份你的MySQL數(shù)據(jù)庫(kù)

MySQL 8.0 版本功能變更介紹

此文已由作者授權(quán)騰訊云+社區(qū)發(fā)布,原文鏈接:https://cloud.tencent.com/dev...

歡迎大家前往騰訊云+社區(qū)或關(guān)注云加社區(qū)微信公眾號(hào)(QcloudCommunity),第一時(shí)間獲取更多海量技術(shù)實(shí)踐干貨哦~

海量技術(shù)實(shí)踐經(jīng)驗(yàn),盡在云加社區(qū)!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39001.html

相關(guān)文章

  • JavaScript閉包,只學(xué)這篇夠了

    摘要:當(dāng)在中調(diào)用匿名函數(shù)時(shí),它們用的都是同一個(gè)閉包,而且在這個(gè)閉包中使用了和的當(dāng)前值的值為因?yàn)檠h(huán)已經(jīng)結(jié)束,的值為。最好將閉包當(dāng)作是一個(gè)函數(shù)的入口創(chuàng)建的,而局部變量是被添加進(jìn)這個(gè)閉包的。 閉包不是魔法 這篇文章使用一些簡(jiǎn)單的代碼例子來(lái)解釋JavaScript閉包的概念,即使新手也可以輕松參透閉包的含義。 其實(shí)只要理解了核心概念,閉包并不是那么的難于理解。但是,網(wǎng)上充斥了太多學(xué)術(shù)性的文章,對(duì)于...

    CoderBear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<