1. 程式人生 > >唯一性約束、主鍵約束、唯一索引的區別

唯一性約束、主鍵約束、唯一索引的區別

1.主鍵約束(PRIMARY KEY)
主鍵用於唯一地標識表中的每一條記錄
可以定義一列或多列為主鍵
主鍵列上沒有任何兩行具有相同值(即重複值)
主鍵列上也不能為空值

2.唯一性約束(UNIQUE)
唯一性約束用來限制不受主鍵約束的列上的資料的唯一性,
即表中任意兩行在 指定列上都不允許有相同的值。

3.唯一索引(INDEX)
建立唯一索引可以確保任何生成重複鍵值的嘗試都會失敗。

唯一性約束和主鍵約束的區別:
(1)唯一性約束允許在該列上存在NULL值,而主鍵約束的限制更為嚴格,不但不允許有重複,而且也不允許有空值。
(2)在建立唯一性約束和主鍵約束時可以建立聚集索引和非聚集索引,但在 預設情況下主鍵約束產生聚集索引,而唯一性約束產生非聚集索引

約束和索引, 前者是用來檢查資料的正確性,後者用來實現資料查詢的優化,目的不同。
唯一性約束與唯一索引有所不同:
(1)建立唯一約束會在Oracle中建立一個Constraint,同時也會建立一個該約束對應的唯一索引。
(2)建立唯一索引只會建立一個唯一索引,不會建立Constraint。
也就是說其實唯一約束是通過建立唯一索引來實現的。
在刪除時這兩者也有一定的區別:
刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對應的列還是必須唯一的,
而刪除了唯一索引的話就可以插入不唯一的值。

相關推薦

唯一性約束約束唯一索引區別

1.主鍵約束(PRIMARY KEY) 主鍵用於唯一地標識表中的每一條記錄 可以定義一列或多列為主鍵 主鍵列上沒有任何兩行具有相同值(即重複值) 主鍵列上也不能為空值 2.唯一性約束(UNIQUE) 唯一性約

SQL約束約束外來約束不允許空值唯一值預設值檢查)

NOT NULL 不允許空值約束 NOT NULL 約束強制列不接受 NULL 值(NULL值就是沒有值或缺值)。NOT NULL 約束強制欄位始終包含值,即不向欄位新增值,就無法插入新記錄或者更新記錄,也就是在插入或更新行時該列必須有值。 注意:NULL值時沒有值,它不

oracle 表結構表字段表中資料約束的相關操作

1.表字段的的操作1)增加欄位語法:alter table tablename add (column datatype [default value] [null/not null] ….);(比較增加主鍵約束:alter table table_name add cons

hibernate 獲取實體的表名列名(轉載+修改)

package com.escs.utils; import java.util.Iterator; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Config

Hibernate--根據實體類獲得表名欄位名(與Spring整合)(二)

在上一篇中,我們建立了HibernateConfigurationUtil類,可以通過它來獲得實體類對應的表名、列名等相關資訊,本篇我們會就藉助於HibernateConfigurationUtil類以及Java反射,來實現一個JDBCUitl工具類,實現類似於Hibern

建立Primary key和Unique唯一索引

在MySQL中,我們進行資料儲存時,為了避免插入重複資料,常常通過給資料表新增主鍵或者索引的方法來解決,在插入過程中,如果遇到重複資料就會提示“uplicate entry 'D550-49' for

SQL Server(第一章) 創建表 刪除表 創建約束唯一約束約束CHECK約束默認約束

tsql mil null employee alter bold soft arc 刪除表 1.Employees員工表 /** 創建Employees員工表 **/ USE TSQL2012 IF OBJECT_ID(‘dbo.Employees‘,‘U‘) IS N

【第三章】字段約束:數據完整性非空默認值自增唯一性

索引 記錄 incr efault 主鍵 pri 增長 不可 作用 一、表完整性約束 作用:用於保證數據的完整性和一致性==============================================================約束條件        

約束非空唯一性外來檢查約束

一、五種約束 如果DML操作所涉及資料違反了已定義的約束,則資料庫系統將拒絕執行這樣的操作。 Oracle資料庫中,約束具體包括非空(NOT NULL)約束、唯一鍵(UNIQUE)約束、主鍵(PRIMARY KEY)約束、外來鍵(FOREIGN KEY)約束和檢查(CHECK)約束五種。 和資料表類似,

SQL約束(約束 primary key外來約束 foreign key唯一約束unique CHECK約束)

注意: A.表中有資料不能建立約束 B.檢視下設定後,要點選儲存(只有儲存後在才看的到) c   別忘了,點重新整理,才會出來呀! 1、主鍵約束 primary key 主鍵是每行的唯一識別符號,僅僅通過它就能準確定位到一行,其中主鍵列在整個表中不能有重

MySQL:04---資料完整性(非空唯一check預設值外來約束),級聯設定,表自增列

一、資料完整性 1.概念:指資料能正確反映實際情況 2.分類 實體完整性:識別符號或主鍵完整性(主鍵、唯一值約束) 域完整性:限制資料型別、格式、取值範圍(檢查、預設值、外來鍵約束) 引用完整性:輸入或刪除時,不能存在引用不存在的值(外來鍵約束) 自定義完整性

MySQL入門——修改資料表4:新增約束顯示錶結構新增唯一約束

這裡的新增主鍵約束、新增唯一約束,指的是列級約束,是在資料表建立以後再新增的。 例如,給user3表中的id欄位新增主鍵約束: ALTER TABLE user3 ADD PRIMARY KE

Oracle-約束唯一約束與外來約束

          1.主鍵約束: 一個表只能有一個主鍵約束。主鍵可以是單個欄位,也可以是多個欄位。無論是哪種情況,其所有欄位都是NOT NULL。           2.Unique約束:一個表可以有多個Unique約束,Unique的欄位可以為NULL。        

T-sql sql server 設定約束標示列唯一約束預設值約束建立表

----選擇資料庫 use ythome go ----查看錶是否存在 if Exists ( select * from sysobjects where name='sys_menu' and type='U' ) ----刪除表 begin drop tabl

Mysql-基本練習(07-修改表-新增唯一外來約束新增/刪除預設約束刪除約束)

1.新增主鍵約束語法:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,……)新增主鍵約束前表結構為表tb1的id欄位新增主鍵約束,約束名為pk_tb1

FOREIGN KEY 外約束; UNIQUE和PRIMARY KEY 約束CREATE INDEX建立索引的使用

pan bsp constrain 一個表 int 完整性 有一個 user 刪除 1)foreign key 是個約束,意思是說如果你給A字段設置了外鍵約束,以後你要往A字段插入數據,這個數據一定是要在foreign key 後面跟的那個字段中存在的值。這個的意義就是約束

建立表修改表刪除表的方法 ,建立約束外來約束使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用

撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、建立表 – 建立圖書館管理系統所涉及的表 – 建立產品銷售系統所涉及的表 – 圖書表book(bid,bname,price,qty) – 書庫表lib(lid,lname,address) – 讀者表reader

oracle 唯一索引唯一約束之間的聯系

檢查 特性 dad cda 聯系 其它 分享圖片 ges oracl 主鍵(primary key)是表中的一個或多個字段,它的值用於唯一地標識表中的某一條記錄,在兩個表的關系中,主鍵用來在一個表中引用來自於另一個表中的特定記錄,,主鍵時一種唯一關鍵字,表定義的一部分。一個

新增約束 唯一約束 無更改INNoDB

mysql> CREATE TABLE users2( -> username VARCHAR(10) NOT NULL -> , -> pid SMALLINT UNSIGNED -> ); Query OK, 0 rows affec

mysql索引唯一索引聯合索引區別索引的建立原則和注意事項)

索引對資料庫效能的影響? 本質:縮小查詢範圍。大大減少需要掃描的資料量。大大提高查詢的速度,降低寫的速度,佔用磁碟。將隨機I/O變成順序I/O 特大的表怎麼解決查詢問題? 分割槽。 主鍵索引和唯一索引的區別? 一個表只能有一個主鍵索引,但可以有多個唯一索引, 主鍵索引是唯一索