pgsql資料表定義

2021-06-22 08:32:53 字數 2970 閱讀 7425

postgresql 8.1 中文文件

prev

fast backward

fast forward

next

table of contents5.1. 

表的基本概念

5.2. 

預設值5.3. 

約束5.3.1. 

檢查約束

5.3.2. 

非空約束

5.3.3. 

唯一約束

5.3.4. 

主鍵5.3.5. 

外來鍵5.4. 

系統字段

5.5. 

修改表5.5.1. 

增加字段

5.5.2. 

刪除字段

5.5.3. 

增加約束

5.5.4. 

刪除約束

5.5.5. 

改變乙個欄位的預設值

5.5.6. 

修改乙個欄位的資料型別

5.5.7. 

給字段改名字

5.5.8. 

給字段改名字

5.5.9. 

給表改名字

5.6. 

許可權5.7. 

模式5.7.1. 

建立乙個模式

5.7.2. 

public 模式

5.7.3. 

模式搜尋路徑

5.7.4. 

模式和許可權

5.7.5. 

系統表模式

5.7.6. 

使用方式

5.7.7. 

移植性5.8. 

繼承5.9. 

分割槽5.9.1. 

概述5.9.2. 

實現分割槽

5.9.3. 

分割槽和約束排除

5.10. 

其它資料庫物件

5.11. 

依賴性追蹤

本章介紹我們如何建立乙個儲存我們的資料的資料庫結構。 在關係型資料庫裡,裸資料是儲存在表中的,因此本章的大部分內容都將用於介紹如何建立表以及如何修改他們, 以及我們在控制表中儲存的資料上有什麼可以獲得的特性。隨後, 我們討論表是如何能組織成模式的,以及如何給表賦予許可權。最後, 我們將簡單檢視一下影響資料儲存的其他因素,比如繼承,檢視,函式,和觸發器。

關係型資料庫中的表非常類似紙面上的一張表:它由行和列組成。 欄位的數目是固定的,每個欄位都有乙個名字。行的數目是變化的 -- 它反映在任意時刻裡儲存的資料量。sql 對錶中的行的順序沒有任何承諾---除非你要求明確地進行排序。 這些內容在 chapter 7 裡介紹。另外,sql 並不給行賦予唯一的標識, 因此我們很可能在乙個表中有好幾個完全相同的行。 這是作為sql的基礎的下層數學模型的必然結果,但是通常是我們不願意看到的。 本章稍後的部分將討論如何處理這個問題。

每個欄位都有乙個資料型別。資料型別約束可以賦予乙個欄位的可能數值的集合, 並且約束儲存在字段裡的資料的賦值語義,這樣它就可以用於計算。比如, 乙個宣告為乙個數值型別的字段將不會接受任意文字字串,而儲存在這樣的字段裡的資料可以用於數學計算。 相比之下,乙個宣告為字元字串型別的字段將接受幾乎任意型別的資料, 但是它們自身是不能進行數學計算的,不過我們可以進行其他象字串連線這樣的操作。

postgresql 包含一套可剪裁的內建資料型別, 這些型別可以適用於許多應用。使用者也可以定義它們自己的資料型別。 大多數內建的資料型別有顯而易見的名字和語義,因此我們把詳細的解釋放在了 chapter 8。 有些常用的資料型別是用於整數的 integer,用於可能為分數的 numeric,用於字串的 text,用於日期的 date, 用於時間的 time,以及用於包含日期和時間的數值的 timestamp。

要建立乙個表,你使用乙個命名合適的 create table 命令。 在這個命令裡,你至少為新錶宣告乙個名字,欄位的名字以及欄位的資料型別。比如:

create table my_first_table (

first_column text,

second_column integer

);

這樣就建立了乙個有兩個欄位的叫做 my_first_table 的表。第乙個欄位的名字是 first_column,資料型別為 text;第二個欄位的名字是 second_column, 資料型別是 integer。表和字段的名字遵循我們在 section 4.1.1 裡面解釋的識別符號語法。 型別名通常也是識別符號,但是有一些例外。請注意字段列表是逗號分隔的, 並且用圓括弧包圍。

當然,前面的例子是非常虛構的乙個例子。通常,你會給你的表和欄位名字, 這些欄位裡儲存它們儲存的資料。所以還是讓我們給乙個比較現實的例子:

create table products (

product_no integer,

name text,

price numeric

);

(numeric 型別可以儲存分數部分,金額很可能有這樣的分數部分。)

有乙個小限制:乙個錶能包含的字段數目。 根據字段型別的不同,這個數目可能在250到1600之間。 不過,不管是哪一端的數字,如果你設計的表包含那麼多的字段好象都很不可能發生, 否則是設計上有問題的表現。

如果你不再需要這個表,那麼你可以用 drop table 命令刪除它。象這樣:

drop table my_first_table;

drop table products;

試圖刪除乙個不存在的表是乙個錯誤。不過,在 sql 指令碼檔案裡, 我們常見在建立表之前試圖無條件刪除它,忽略錯誤資訊。

如果你需要修改乙個已經存在的表,那麼可以看看本章稍後的 section 5.5。

使用到目前為止討論的工具我們可以建立功能完整的表。 本章剩下的部分是有關向表定義中增加特性,保證資料完整性,安全性或者便利性的內容。 如果你急於給你的表填充資料,那麼你可以忽略餘下的部分直接到 chapter 6,然後在稍後的時候再閱讀本章。

prev

home

next

值表示式

up預設值

pgsql 備份表結構資料

備份表結構 pg dump h p d u s data sql 只備份資料 a 只備份結構 s,表結構和資料 什麼都不加 還原庫 psql h p u d data sql 備份指定表 包含資料 pg dump h p d t t u data sql 匯出匯入資料到txt copy to dat...

資料庫 筆記 定義資料表約束和修改資料表

修改資料表 總結在這裡只使用sql語句來進行 null not null約束 分別表示可以為空和不可以為空,語句如下 create table stu stu no nchar 11 constraint s con not null constraint 約束名 約束型別,其中約束名自己定義,中括...

hive 自定義元資料表 Hive 元資料表含義

hive 元資料表含義 1 version 查詢版本資訊 fieldtypecomment ver id bigint 20 id主鍵 schema version varchar 127 hive版本 version comment varchar 255 版本說明 2 dbs 儲存hive中所有...