1. 程式人生 > >key與PRIMARY KEY區別

key與PRIMARY KEY區別

KEY通常是INDEX同義詞。如果關鍵字屬性PRIMARY KEY在列定義中已給定,則PRIMARY KEY也可以只指定為KEY。這麼做的目的是與其它資料庫系統相容。 PRIMARY KEY是一個唯一KEY,此時,所有的關鍵字列必須定義為NOT NULL。如果這些列沒有被明確地定義為NOT NULL,MySQL應隱含地定義這些列。一個表只有一個PRIMARY KEY。如果您沒有PRIMARY KEY並且一個應用程式要求在表中使用PRIMARY KEY,則MySQL返回第一個UNIQUE索引,此索引沒有作為PRIMARY KEY的NULL列


1. 如果Key是空的, 那麼該列值的可以重複, 表示該列沒有索引, 或者是一個非唯一的複合索引的非前導列
2. 如果Key是PRI, 那麼該列是主鍵的組成部分
3. 如果Key是UNI, 那麼該列是一個唯一值索引的第一列(前導列),並別不能含有空值(NULL)
4. 如果Key是MUL, 那麼該列的值可以重複, 該列是一個非唯一索引的前導列(第一列)或者是一個唯一性索引的組成部分但是可以含有空值NULL

如果對於一個列的定義,同時滿足上述4種情況的多種,比如一個列既是PRI,又是UNI
那麼"desc 表名"的時候,顯示的Key值按照優先順序來顯示 PRI->UNI->MUL
那麼此時,顯示PRI

一個唯一性索引列可以顯示為PRI,並且該列不能含有空值,同時該表沒有主鍵

一個唯一性索引列可以顯示為MUL, 如果多列構成了一個唯一性複合索引
因為雖然索引的多列組合是唯一的,比如ID+NAME是唯一的,但是沒一個單獨的列依然可以有重複的值
只要ID+NAME是唯一的即可

相關推薦

keyPRIMARY KEY區別

KEY通常是INDEX同義詞。如果關鍵字屬性PRIMARY KEY在列定義中已給定,則PRIMARY KEY也可以只指定為KEY。這麼做的目的是與其它資料庫系統相容。 PRIMARY KEY是一個唯一KEY,此時,所有的關鍵字列必須定義為NOT NULL。如果這些列沒有被明確

Mysql中keyprimary key 、unique key index區別

條件 那是 database 表空間 可用 where 進行 utf8 擁有 索引被用來快速找出在一個列上用一特定值的行。沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。 表越大,花費時間越多。如果表對於查詢的列有一個索引,MySQL能快

mysql 建立、刪除 索引 keyprimary key 、unique key index區別

建立:creta index test_suoying(索引的欄位名) on 表名;  刪除:drop index index_name on table_name ; 一、key與primary key區別CREATE TABLE wh_logrecord ( logre

obeject.keyobject[key]的區別

https://segmentfault.com/q/1010000004225321 data[key]適用於動態取key、key為特殊字元。 data.key訪問的是data物件下的key。 data[key]訪問的是data陣列的下標為key的值(物件是可以以陣列形式來訪問的)。

unique keyprimary key、foreign key、index、key區別理解

首先說一下SQL中約束的概念: SQL 約束用於規定表中的資料規則。如果存在違反約束的資料行為,行為會被約束終止。約束可以在建立表時規定(通過 CREATE TABLE 語句),或者在表建立之後規定(通過 ALTER TABLE 語句)。舉個栗子: CREATE TABL

object.keyobject[key]的差異

今天在做專案的時候用到了delete object.key 這個方法來刪除物件中的某一個鍵值對,然後通過Object.keys(object).length來列印物件鍵值對數時,發現結果跟我預想的不同,通過測試發現, delete object.key   和delete object[k

Android AndroidStudio檢視debug keyrelease key

檢視debug key 找到AS左側的gradle,找到root下面的Task點開,找到android點開,雙擊signingReport 執行如下,並點選下圖標出來的按鈕,會看到執行結果

學習筆記--mysql索引(一) 索引使用,index,keyprimary key, unique

所有MySQL列型別都可以被索引,對相關列使用索引是ᨀ高SELECT操作效能的最佳途 徑。根據儲存引擎可以定義每個表的最大索引數和最大索引長度,MyISAM和InnoDB 儲存引擎的表預設建立的都是BTREE索引,支援字首索引,即對索引欄位的前N個字元建立索引

主鍵(primary key)和唯一索引(unique index)區別

主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。 所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外來鍵構成參照完整性約束,防止出現數

sql:主鍵(primary key)和唯一索引(unique index)區別

主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。  所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外來鍵構成參照完整性約束

同時建立主鍵 PRIMARY KEY 聚集索引 Clustered Index 的先後順序

                主鍵(PRIMARY KEY)與聚集索引(Clustered Index)的對比可以參看我之前的部落格:SQL Server 索引基礎知識(4)----主鍵與聚集索引   一個表最多一個主鍵,最多一個聚集索引。  資料庫在建立主鍵同時,會自動建立一個唯一索引。如果這個表之前沒有

PRIMARY KEYidentity(1,1)的比較

PRIMARY KEY 約束 表中經常有一個列或列的組合,其值能唯一地標識表中的每一行。 這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。 當建立或更改表時可通過定義 PRIMARY KEY 約束來建立主鍵。  一個表只能有一個 PRIMARY KEY 約束,而

MYSQL 的 primary key 和unique key區別

Primary key 與Unique Key都是唯一性約束。但二者有很大的區別: 1、Primary key的1個或多個列必須為NOT NULL,如果列為NULL,在增加PRIMARY KEY時,列自動更改為NOT NULL。而UNIQUE KEY 對列沒有此要求。 2、一

Sqlite中的rowid欄位和integer primary key autoincrement的欄位區別

前言 原創文章,歡迎轉載,請保留出處。 有任何錯誤、疑問或者建議,歡迎指出。 我的郵箱:[email protected] Android中提供的SQLiteDatabase類,其中的幾個方法返回的是rowid,這個rowid並不是插入的行號(r

MySQL之主鍵(primary key)和唯一索引(unique index)區別

主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。  所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外來鍵構成

INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 區別

Sqlite 中INTEGER PRIMARY KEY AUTOINCREMENT和rowid/INTEGER PRIMARY KEY的使用 在用sqlite設計表時,每個表都有一個自己的整形id值作為主鍵,插入後能直接得到該主鍵. 因為sqlite內部本來

PRIMARY KEY主鍵和IDENTITY屬性函式的區別

1 PRIMARY KEY 約束 表通常具有包含唯一標識表中每一行的值的一列或一組列。這樣的一列或多列稱為表的主鍵 (PK),用於強制表的實體完整性。在建立或修改表時,您可以通過定義 PRIMARY KEY約束來建立主鍵。一個表只能有一個PRIMARY KEY 約束。如

Mysql primary key主鍵衝突的可能性解決方案

 在mysql中,資料的儲存其實相當於Oracle的IOT表。主鍵和其他列的值以b+tree的形式組織在一起,在其葉子節點上不僅包含了主鍵,還包含了其他列的值。所以,我們在訪問以主鍵作為where條件的查詢時,極大的提高了效率。當然,這也存在一個缺點,主鍵和其他列存在一起,導

SQLite中的自增關鍵字:AUTO_INCREMENT、INTEGER PRIMARY KEYAUTOINCREMENT

1、SQLite不支援關鍵字AUTO_INCREMENT 1)AUTO_INCREMENT不生效的問題 SQL語句: CREATE TABLE todo (     id INTEGER AUTO_INCREMENT,     title TEXT,     PRI

java後臺讀取配置文件中keyvalue -----demo

undle ltm string 文件名 logs 配置 rip conf 返回值 public class ResourcesUtils { /* * @description:根據屬性獲取文件名 * * @param:propertyName文件的