歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
什麼是PostgreSQL?
PostgreSQL是自由的物件-關係型資料庫伺服器,在靈活的BSD風格許可證下發行。它在其他開放原始碼資料庫系統和專有系統之外,為使用者又提供了一種選擇。 我們還是建議您使用雲資料庫進行搭建,省去資料遷移等麻煩操作,資料庫詳見:cloud.tencent.com/product/cdb…
在本文中,我們將討論如何在postgreSQL介面中建立和管理表。您將學習如何正確配置表並使用它們來儲存您的資訊。
如何在Ubuntu上安裝並登入PostgreSQL
我們將在Ubuntu上安裝PostgreSQL,但它應該可以在大多數其他發行版的預設儲存庫中使用。
輸入以下要安裝的命令:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
複製程式碼
安裝後,建立一個新使用者來管理我們將要建立的資料庫:
sudo adduser postgres_user
複製程式碼
登入預設的PostgreSQL使用者(稱為“postgres”)來建立資料庫並將其分配給新使用者:
sudo su - postgres
PSQL
複製程式碼
您將被放入PostgreSQL命令提示符。
建立與您建立的系統使用者匹配的新使用者。然後建立該使用者管理的資料庫:
CREATE USER postgres_user密碼為' 密碼 ';
CREATE DATABASE my_postgres_db OWNER postgres_user ;
複製程式碼
使用以下命令退出介面:
\q
複製程式碼
退出預設的“postgres”使用者帳戶並使用以下命令登入您建立的使用者:
exit
sudo su - postgres_user
複製程式碼
使用以下命令登入您建立的資料庫:
psql my_postgres_db
複製程式碼
我們現在準備瞭解表管理。
PostgreSQL中的表建立語法
我們的資料庫還沒有任何表格。我們可以此命令為來驗證這一點:
\d
複製程式碼
No relations found.
複製程式碼
我們可以通過以下語法來建立新表:
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;
複製程式碼
除了先前定義中列出的列之外,還繼承現有表中的所有列。括號內的部分分為兩部分:列定義和表約束。
PostgreSQL列和表定義
列定義遵循以下語法模式:
column_name data_type (optional_data_length_restriction) column_constraints
複製程式碼
列名應該是不言自明的。
PostgreSQL資料型別
資料型別可以是以下任何一種:
- 布林型:使用“boolean”或“bool”宣告true或false值。
- 字元值
- char:擁有一個字元
- char(#):儲存#個字元數。將插入空間以填補任何額外的空間。
- varchar(#):最多包含#個字元數。
- 整數值
- smallint:-32768和32767之間的整數。
- int:-214783648和214783647之間的整數。
- serial:自動填充的整數。
- 浮點值
- float(#):浮點數,至少有#個精度點。
- real:8位元組浮點數
- numeric(#,after_dec):擁有#位數的實數,小數點後有after_dec位
- 日期和時間值
- date:儲存日期值
- time:儲存時間值
- timestamp:儲存日期和時間值
- timestamptz:儲存包含時區資料的時間戳
- interval:儲存兩個時間戳值之間的差值
- 幾何資料
- point:儲存一對定義點的座標
- line:儲存一組對映出一條線的點
- lseg:儲存定義線段的資料
- box:儲存定義矩形的資料
- polygon:儲存定義任何封閉空間的資料
- 裝置規格
- inet:儲存IP地址
- macaddr:儲存裝置MAC地址
PostreSQL列和表約束
列定義還可以具有約束,這些約束為列中找到的資料型別提供規則。以下內容可用作資料型別後面的空格分隔值:
- NOT NULL:列不能具有空值
- UNIQUE:任何記錄的列值都不能相同。Null始終被視為唯一值
- PRIMARY KEY:上述兩個約束的組合。每張表只能使用一次
- CHECK:確保列中值的條件為真
- REFERENCES:值必須存在於另一個表的列中
在定義列之後,可以宣告表範圍的約束。表範圍的約束可以是UNIQUE,PRIMARY KEY,CHECK或REFERENCES。
如何在PostgreSQL中建立表
我們將建立一個名為“pg_equipment”的表,它定義了各種遊樂場裝置。輸入以下表定義:
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
複製程式碼
我們可以通過在提示符下輸入“\ d”來檢視我們的新表:
\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”序列資料型別宣告建立的序列。
如何在PostgreSQL中更改表資料
我們可以使用以下通用語法更改表的定義:
ALTER TABLE table_name Action_TO_Take;
複製程式碼
例如,我們可以通過輸入以下命令在我們的“pg_equipment”表中新增一列:
ALTER TABLE pg_equipment ADD COLUMN functioning bool;
複製程式碼
ALTER TABLE
複製程式碼
我們可以通過輸入來檢視額外的列:
\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 |
. . .
複製程式碼
要新增一個預設值,請提供以下命令:
ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true';
複製程式碼
如果我們想確保該值也不為null,我們可以這樣做:
ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;
複製程式碼
要重新命名該列,請使用以下語法:
ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;
複製程式碼
要刪除我們剛剛建立的列,請輸入以下命令:
ALTER TABLE pg_equipment DROP COLUMN working_order;
複製程式碼
我們可以使用以下命令重新命名整個表:
ALTER TABLE pg_equipment RENAME TO playground_equip;
複製程式碼
刪除PostgreSQL中的表
我們可以通過輸入下面的命令來刪除我們建立的表:
DROP TABLE playground_equip;
複製程式碼
DROP TABLE
複製程式碼
如果我們將該命令提供給不存在的表,我們將看到以下錯誤:
ERROR: table "playground_equip" does not exist
複製程式碼
為了避免這個錯誤,我們可以告訴postgreSQL刪除表,並以任何方式成功返回。我們通過發出以下命令來完成此操作:
DROP TABLE IF EXISTS playground_equip;
複製程式碼
NOTICE: table "playground_equip" does not exist, skipping
DROP TABLE
複製程式碼
這一次,它告訴我們找不到表,但繼續而不是丟擲錯誤。
結論
您現在應該知道在如何PostgreSQL中建立和管理簡單表。如果您正在者學習如何從命令列控制PostgreSQL,這些技能將非常有用。更多Linux教程,請持續關注騰訊雲+社群的文章。
參考文獻:《How To Create, Remove, & Manage Tables in PostgreSQL on a Cloud Server》
問答
相關閱讀
此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1160560?fromSource=waitui
歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社群!