主鍵與外來鍵
主鍵:關係型資料庫中的一條記錄中有若干個屬性,若其中的某乙個屬性組(可以是乙個屬性,也可以是多個)能唯一標識一條記錄,那麼該屬性組就是主鍵。
外來鍵:關係型資料庫表中的一列或者某幾列的組合,它的值與另外一張表的某一列或者某幾列相匹配,且為另一張表的主鍵(即這張表的某一列或某幾列是另外一張表的主鍵,稱這一列或幾列為另外一張表的外來鍵)。
注意:一張表主鍵只能有乙個,可以有多個外來鍵以及唯一索引
oracle資料庫共有5個約束:主鍵、外來鍵、非空、唯
一、條件
主鍵和唯一約束的區別:主鍵是列的值為表中的唯一標識,不能為空值(null),而唯一約束是列的值在表中唯一存在,可以為空值(null)。
表的建立
語法結構:
createtable
[schema.
]table_name
(column datatype [
constraint-clause
][, column datatype [constraint-clause
]] … )
[tablespace tablespace][
pctfree integer][
pctused integer][
initrans integer][
maxtrans integer][
storage storage-clause][
logging|nologging][
cache|nocache
] ];
說明:常用建表示例:
--無約束create
table
items(
itemno
number(2
), itemname
varchar2(20
));
--主鍵約束
create
table
items(
itemno
number(2) constraint pk_items primary
key,
itemname
varchar2(20) not
null
);
--外來鍵約束
create
table
business(
busino
number(2) constraint pk_business primary
key,
businame
varchar2(32) not
null
, itemno
number(2
), starttime date,
constraint fk_business foreign
key(itemno) references
items(itemno)
);
--「唯一」和「條件」約束
create
table
computers(
compno
number(4) constraint pk_comp primary
key,
compmodel
varchar2(64) unique
, buytime date,
price
number(7,2) constraint ch_price check(price>
0and price<=
30000
), owner
varchar2(32));
注意:constraint:定義表中約束所必須的關鍵字
primary key:主鍵約束關鍵字
foreign key…references…:建立表的外來鍵關鍵字
unique:為唯一約束關鍵字
constraint…check…:為條件約束的關鍵字
乙個完整的示例:
createtable
employee(
id
number(5) constraint pk_employee_id primary
key,
last_name
varchar2(10) constraint employee_last_name_nn not
null
, first_name
varchar2(10) not
null
unique
, userid
varchar2(8) constraint un_employee_userid unique
, start_date date
default
sysdate,
title
varchar2(10
), dept_id
number(7) constraint fk_employee_dept_id references
dept(id),
salary
number(11,2
), user_type
varchar2(4) constraint ck_employee_user_type check (user_type in('
in','
out'
)),
constraint employee_uq_title unique
(title,salary)
)tablespace tsb_01
initrans
1maxtrans
255pctfree
20pctused
50storage (initial 1024k
next 1024k pctincrease 0 minextents 1 maxextents 5)
刪除表
droptable employee;
修改表
--修改表的名稱
rename items to orderitems;
--顯示表結構
desc orderitems;
--增加列alter
table test add address varchar2(40);
--刪除列alter
table test drop
column address;
--修改列的名稱
alter
table test modify address addresses varchar(40);
--修改列的屬性
alter
table emp modify score not
null;
新增約束,語法如下:
altertable 表名稱 add
constraint 約束名稱 約束型別(約束字段)
--示例alter
table dept add
constraint pk_dept primary
key(id);
alter
table dept add
constraint fk_dept_comp foreign
key(companyid) references company;
刪除約束,語法:
altertable 表名稱 drop
constraint 約束名稱;
--示例alter
table book drop
constraint fk_book_pid;
oracle資料庫建立表
實際工作中,在資料庫中建立表是經常會用到的。我們今天呢?主要給大家來分享一下在資料庫如何通過sql語句去建立表。其實,建立表很簡單,只需要把資料庫的資料型別和約束搞清楚就可以了,其他的就好說了。接下來呢,開始我的表演。首先,先使用plsql連線到oracle資料庫,先保證下面的服務是開啟的。我們本次...
oracle初學之建立資料庫和表
先建立資料庫 通過enterprise login assistant 按嚮導一步一步建立下去就ok.影象介面建立 第一步 建立使用者 用控制台登入資料庫 安全性 使用者 新建 第二步 賦予使用者相應的許可權 賦予dba許可權 據說是建立表的時候要用的許可權 第三步 以該使用者在控制台中登入 第四步...
資料庫 oracle資料庫建立表空間
上學的時候就裝過兩次oracle資料庫,但是一直沒有學會使用,缺少的是建立使用者表空間。臨時表空間 資料表空間 給使用者授權 sid 表空間 使用者 表 oracle11g伺服器安裝詳細步驟 教程 源文件 1 sqlplus登入 as sysdba2 建立臨時表空間 createtemporary ...