數據表的基本操作之創建數據表

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

本模塊將介紹數據表的基本操作,主要內容包括:創建數據表、修改數據表、刪除數據表。

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。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章