oracle中的約束有五種,分別為:
非空:not null
主鍵:primary key
外來鍵:foreign key
唯一:unique
檢查:check
在資料字典檢視 user_constraint,裡面顯示當前使用者所有的約束資訊
①主鍵和外來鍵
用於定義主表和從表之間的關係,外來鍵是定義在從表上,主表則必須具有主鍵或者unique約束,當定義外來鍵約束後,要求外來鍵列的資料必須在
主表的主鍵列存在或者為null
主鍵和外來鍵的資料型別一致
在刪除主鍵約束的時候,要注意:
因為如果兩張表存在主從關係,那麼在刪除主表的主鍵約束時,必須帶上cascade選項
alter table 表名 drop primary key cascade
這樣表示把兩個表之間的主從關係破壞掉
②非空
oracle中的空包括 null和' ' ;與sqlserver有所區別。在sqlserver中null和' '是不一樣的。
所以:在oracle中只要某一列定義為 not null ,那麼 null和 '' 都插入不進去;但是sqlserver某一列定義為 not null, 那麼null插入不進去,' ' 可以插入進去。
語法:
altertable employees modify deptno not
null
/null
注意:如果表中已經存在null,就不能更改其為not null約束
③索引
單列索引
create index 索引名 on 表名(列名)
create index ghindex on emp(empid)
復合索引
create index emp_index1 on emp(ename,job)
建立主鍵或唯一約束後,oracle會自動建立乙個與約束同名的索引。
例如:
create table stu(name varchar2(20) primary key ,
age int unique,
home varchar2(20) not null
);
裡面就會有兩個索引:name 和 age上分別都有索引
oracle索引 約束簡單總結
oracle索引 約束簡單總結 code 什麼時候應該建立索引?1.表很大而且大多數查詢的返回資料量很少 oracle推薦 總行數的2 3 2.此列的取值範圍很廣,一般為隨機分布。如年齡幾乎18歲到60歲的都有 3.一列或多列經常出現where子句或連線條件中 4.表上的dml操作較少 5.此列中包...
oracle收藏(查詢索引 約束等)
1 查詢表的所有索引 包括索引名,型別,構成列 select t.i.index type from user ind columns t,user indexes i where t.index name i.index name and t.table name i.table name and...
mysql 索引與約束 mysql約束與索引的區別
摘自 一 約束 作用 是為了保證資料的完整性而實現的摘自一套機制,它具體的根據各個不同的資料庫的實現而有不同的工具 約束 這裡主要講解mysql的約束 1 非空約束 not null 指示某列不能儲存null 值 2 唯一約束 unique uk unique約束的字段,要求必須是唯一的,但null...