Oracle約束 索引

2022-04-09 04:10:48 字數 1217 閱讀 1459

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插入不進去,' ' 可以插入進去。

語法:

alter

table 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...