資料表是資料庫中最重要、最基本的操作對象,是資料存儲的基本機關。資料表被定義為列的集合,資料在表中是按照行和列的格式來存儲的。每一行代表一條唯一的記錄,每一列代表記錄中的一個域。
本子產品将介紹資料表的基本操作,主要内容包括:建立資料表、修改資料表、删除資料表。
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)在定義列的同時指定主鍵,文法規則如下:
上邊的表定義其主鍵為id,SQL語句如下:字段名 資料類型 primary key
在【對象浏覽器】窗格中選擇所建立的資料表,在右側的視窗中選擇【附屬關系】頁籤,即可看到主鍵的類型,如圖所示 2)在定義完所有列之後指定主鍵,文法規則如下: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 );
上邊的資料表也可如下建立:[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)多字段聯合主鍵
主鍵由多個字段聯合組成,文法規則如下:
假如存在一個員工表,表中沒有主鍵id,為了唯一的确定一個員工,可以把名字和部門聯合起來作為主鍵,SQL語句如下:primary key [字段1, 字段2, ..., 字段n]
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
建立資料表tb_emp5,讓它的鍵deptId作為外鍵關聯到tb_dept1的主鍵idcreate table tb_dept1 ( id text primary key, name text not null, location text );
語句執行成功後,在表tb_emp5上添加了名稱為fk_emp_dept1的外鍵限制,外鍵名稱為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) );
關聯指的是在關系型資料庫中,相關表之間的聯系。它是通過相容或相同的屬性或屬性組來表示的,子表的外鍵必須關聯父表的主鍵,且關聯字段的資料類型必須比對,如果類型不一樣,則建立子表時,就會出現錯誤。
4、使用非空限制
非空限制(not null constraint)指字段的值不能為空。對于使用了非空限制的字段,如果使用者在添加資料時,沒有指定值,資料庫系統會報錯。
非空限制的文法規則如下:
定義資料表tb_emp6,指定員工的名稱不能為空字段名 資料類型 not null
執行後在tb_emp6中建立了一個name字段,其插入值不能為空(not null)。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) );
5、使用唯一性限制
唯一性限制(unique constraint)要求添加該限制的列字段的值唯一,允許為空,但隻能出現一個空值。唯一性限制可以確定一列或者幾列不出現重複值。
(1)使用對象浏覽器創造唯一性限制
(2)使用SQL語句建立唯一限制
1)在定義完列之後直接指定唯一限制,文法規則如下:
建立資料表tb_dept ,指定部門的名稱唯一字段名 資料類型 unique
2)在定義完所有列之後指定唯一限制,文法規則如下:create table tb_dept2 ( id text primary key, name text unique, location text );
建立資料表tb_dept3,指定部門的名稱唯一[constraint <限制名>] unique(<字段名>)
unique 和primary key的差別:一個表中可以有多個字段聲明為unique,但隻能有一個primary key聲明:聲明為primary key的列不允許有空值,但是聲明為unique的字段允許空值(null)的存在。create table tb_dept3 ( id text primary key, name text, location text, constraint sth unique(name) );
6、使用預設限制
預設限制(default constraint)指定某列的預設值。如男性同學較多,性别就可以預設為“男”。如果插入一條新的記錄時沒有為這個字段指派,那麼系統會自動為這個字段指派為“男”。
預設限制的文法規則如下:
建立資料表tb_emp7,指定員工的部門編号預設為1111字段名 資料類型 default 預設值
新插入的記錄如果沒有指定部門編号,則預設都為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) );