歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~php
PostgreSQL是自由的對象-關係型數據庫服務器,在靈活的BSD風格許可證下發行。它在其餘開放源代碼數據庫系統和專有系統以外,爲用戶又提供了一種選擇。 咱們仍是建議您使用雲數據庫進行搭建,省去數據遷移等麻煩操做,數據庫詳見:cloud.tencent.com/product/cdb…數據庫
在本文中,咱們將討論如何在postgreSQL接口中建立和管理表。您將學習如何正確配置表並使用它們來存儲您的信息。bash
咱們將在Ubuntu上安裝PostgreSQL,但它應該能夠在大多數其餘發行版的默認存儲庫中使用。服務器
輸入如下要安裝的命令:微信
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
複製代碼
安裝後,建立一個新用戶來管理咱們將要建立的數據庫:post
sudo adduser postgres_user
複製代碼
登陸默認的PostgreSQL用戶(稱爲「postgres」)來建立數據庫並將其分配給新用戶:學習
sudo su - postgres
PSQL
複製代碼
您將被放入PostgreSQL命令提示符。ui
建立與您建立的系統用戶匹配的新用戶。而後建立該用戶管理的數據庫:spa
CREATE USER postgres_user密碼爲' 密碼 ';
CREATE DATABASE my_postgres_db OWNER postgres_user ;
複製代碼
使用如下命令退出界面:
\q
複製代碼
退出默認的「postgres」用戶賬戶並使用如下命令登陸您建立的用戶:
exit
sudo su - postgres_user
複製代碼
使用如下命令登陸您建立的數據庫:
psql my_postgres_db
複製代碼
咱們如今準備瞭解表管理。
咱們的數據庫尚未任何表格。咱們能夠此命令爲來驗證這一點:
\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;
複製代碼
除了先前定義中列出的列以外,還繼承現有表中的全部列。括號內的部分分爲兩部分:列定義和表約束。
列定義遵循如下語法模式:
column_name data_type (optional_data_length_restriction) column_constraints
複製代碼
列名應該是不言自明的。
數據類型能夠是如下任何一種:
列定義還能夠具備約束,這些約束爲列中找到的數據類型提供規則。如下內容可用做數據類型後面的空格分隔值:
在定義列以後,能夠聲明表範圍的約束。表範圍的約束能夠是UNIQUE,PRIMARY KEY,CHECK或REFERENCES。
咱們將建立一個名爲「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」串行數據類型聲明建立的序列。
咱們可使用如下通用語法更改表的定義:
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;
複製代碼
咱們能夠經過輸入下面的命令來刪除咱們建立的表:
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),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社區!