天天看點

資料表的基本操作之建立資料表

資料表是資料庫中最重要、最基本的操作對象,是資料存儲的基本機關。資料表被定義為列的集合,資料在表中是按照行和列的格式來存儲的。每一行代表一條唯一的記錄,每一列代表記錄中的一個域。

本子產品将介紹資料表的基本操作,主要内容包括:建立資料表、修改資料表、删除資料表。

1、建立資料表

資料表屬于資料庫,在建立資料表之前,應該先在對象管理器中選擇在哪個資料庫中進行,如果沒有選擇資料庫,則不能建立資料表。常見的建立資料表的方法有兩種。

(1)使用對象管理器建立資料表

(2)使用SQL語句建立資料表

建立資料表的語句為create table,文法規則如下:

create table <表名>
(
字段名1 資料類型 [列級别限制條件] [預設值],
字段名2 資料類型 [列級别限制條件] [預設值],
...
[表級别限制條件]
);
           

使用create table建立表時,必須指定以下資訊:

-- 要建立的表的名稱不區分大小寫,不能使用SQL語言中的關鍵字,如 drop、alter、insert等。

-- 資料表中如果要建立多個列,每一個列(字段)的名稱和資料類型都要用逗号隔開。

CREATE TABLE entity_alarm
(
  id text,
  source text,
  alarm text,
  status text,
  assign text,
  devicetype text,
  alarmtype text,
  occur_time timestamp without time zone,
  collect_time timestamp without time zone,
  clear_time timestamp without time zone,
  clear_insert timestamp without time zone,
  tkt_id text,
  sms_send_flag numeric
);
           

2、使用主鍵限制

主鍵是表中一列或多列的組合。主鍵限制(Primary Key Constraint)要求主鍵列的資料唯一,并且不允許為空。主鍵能夠唯一地辨別表中的一條記錄,可以結合外鍵來定義不同資料表之間的關系,并且可以加快資料庫查詢的速度。主鍵和記錄之間的關系如同身份證和人之間的關系,它們之間是一一對應的。主鍵分為兩種類型:單字段主鍵和多字段聯合主鍵。

(1)單字段主鍵

主鍵由一個字段組成,SQL語句格式分為以下兩種情況。

1)在定義列的同時指定主鍵,文法規則如下:

字段名 資料類型 primary key
           
上邊的表定義其主鍵為id,SQL語句如下:
CREATE TABLE entity_alarm
(
  id text primary key,
  source text,
  alarm text,
  status text,
  assign text,
  devicetype text,
  alarmtype text,
  occur_time timestamp without time zone,
  collect_time timestamp without time zone,
  clear_time timestamp without time zone,
  clear_insert timestamp without time zone,
  tkt_id text,
  sms_send_flag numeric
);
           
在【對象浏覽器】窗格中選擇所建立的資料表,在右側的視窗中選擇【附屬關系】頁籤,即可看到主鍵的類型,如圖所示
資料表的基本操作之建立資料表
2)在定義完所有列之後指定主鍵,文法規則如下:
[constraint <限制名>] primary key [字段名]
           
上邊的資料表也可如下建立:
CREATE TABLE entity_alarm
(
  id text,
  source text,
  alarm text,
  status text,
  assign text,
  devicetype text,
  alarmtype text,
  occur_time timestamp without time zone,
  collect_time timestamp without time zone,
  clear_time timestamp without time zone,
  clear_insert timestamp without time zone,
  tkt_id text,
  sms_send_flag numeric,
  primary key(id)
);
           

兩個執行個體結果是一樣的,都會在id字段上設定主鍵限制。 

(2)多字段聯合主鍵

主鍵由多個字段聯合組成,文法規則如下:

primary key [字段1, 字段2, ..., 字段n]
           
 假如存在一個員工表,表中沒有主鍵id,為了唯一的确定一個員工,可以把名字和部門聯合起來作為主鍵,SQL語句如下:
create table tb_emp
(
  name text,
  deptId text,
  salary numeric,
  primary key(name, deptId)
);
           

3、使用外鍵限制

外鍵用來在兩個表的資料之間建立連接配接,它可以是一列或者多列。一個表可以有一個或多個外鍵。外鍵對應的是參照完整性,一個表的外鍵可以為空值,若不為空值,則每一個外鍵值必須等于另一個表中主鍵的某個值。

-- 外鍵:首先它是表中的一個字段,它可以不是本表的主鍵,但對應另外一個表的主鍵。外鍵的作用主要作用是保證資料引用的完整性。定義外鍵後,不允許删除在另一個表中具有關聯關系的行。例如,部門表tb_dept的主鍵是id,在員工表tb_emp中有一個鍵deptId與這個id關聯。

部門表tb_dept如下
create table tb_dept
(
  id text primary key,
  name text not null
);
           

-- 主表(父表):對于兩個具有關聯關系的表而言,相關聯字段中主鍵所在的那個表即是主表。

-- 從表(子表):對于兩個具有關聯關系的表而言,相關聯字段中外鍵所在的那個表即是從表。

(1)使用對象浏覽器建立外鍵限制

(2)使用SQL語句建立外鍵限制

建立外鍵的文法規則如下:

[constraint <外鍵名>] foreign key 字段名1 [ ,字段名2,...]
references <主鍵名> 主鍵列1 [ ,主鍵列2,...]
           

其中,“外鍵名”為定義的外鍵限制的名稱,一個表中不能有相同名稱的外鍵; “字段名”表示從表需要添加外鍵限制的字段列;“主表名”即被從表外鍵所依賴的表的名稱;“主鍵列”表示主表中定義的主鍵字段,或者字段組合。

執行個體:

建立一個部門表tb_dept1

create table tb_dept1
(
  id text primary key,
  name text not null,
  location text
);
           
建立資料表tb_emp5,讓它的鍵deptId作為外鍵關聯到tb_dept1的主鍵id
create table tb_emp5
(
  id text primary key,
  name text,
  deptId text,
  salary numeric,
  constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
);
           
 語句執行成功後,在表tb_emp5上添加了名稱為fk_emp_dept1的外鍵限制,外鍵名稱為deptId,其依賴于表tb_dept1的主鍵id。
關聯指的是在關系型資料庫中,相關表之間的聯系。它是通過相容或相同的屬性或屬性組來表示的,子表的外鍵必須關聯父表的主鍵,且關聯字段的資料類型必須比對,如果類型不一樣,則建立子表時,就會出現錯誤。

4、使用非空限制

非空限制(not null constraint)指字段的值不能為空。對于使用了非空限制的字段,如果使用者在添加資料時,沒有指定值,資料庫系統會報錯。

非空限制的文法規則如下:

字段名 資料類型 not null
           
定義資料表tb_emp6,指定員工的名稱不能為空
create table tb_emp6
(
  id text primary key,
  name text not null,
  deptId text,
  salary numeric,
  constraint fk_emp_dept2 foreign key(deptId) references tb_dept1(id)
);
           
執行後在tb_emp6中建立了一個name字段,其插入值不能為空(not null)。

5、使用唯一性限制

 唯一性限制(unique constraint)要求添加該限制的列字段的值唯一,允許為空,但隻能出現一個空值。唯一性限制可以確定一列或者幾列不出現重複值。

(1)使用對象浏覽器創造唯一性限制

(2)使用SQL語句建立唯一限制

1)在定義完列之後直接指定唯一限制,文法規則如下:

字段名 資料類型 unique
           
建立資料表tb_dept ,指定部門的名稱唯一
create table tb_dept2
(
  id text primary key,
  name text unique,
  location text
);
           
2)在定義完所有列之後指定唯一限制,文法規則如下:
[constraint <限制名>] unique(<字段名>)
           
建立資料表tb_dept3,指定部門的名稱唯一
create table tb_dept3
(
  id text primary key,
  name text,
  location text,
  constraint sth unique(name)
);
           
unique 和primary key的差別:一個表中可以有多個字段聲明為unique,但隻能有一個primary key聲明:聲明為primary key的列不允許有空值,但是聲明為unique的字段允許空值(null)的存在。

6、使用預設限制

預設限制(default constraint)指定某列的預設值。如男性同學較多,性别就可以預設為“男”。如果插入一條新的記錄時沒有為這個字段指派,那麼系統會自動為這個字段指派為“男”。

預設限制的文法規則如下:

字段名 資料類型 default 預設值
           
建立資料表tb_emp7,指定員工的部門編号預設為1111
create table tb_emp7
(
  id text primary key,
  name text not null,
  deptId text default 1111,
  salary numeric,
  constraint fk_emp_dept3 foreign key(deptId) references tb_dept1(id)
);
           
新插入的記錄如果沒有指定部門編号,則預設都為1111。