1查詢主鍵 存在與否 如果存在count值為1 不存在count值為0
成都創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
select count(*) PrimaryNum
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t
where t.TABLE_NAME ='test'
如果結(jié)果 = 1,則表示有主鍵。
2刪除存在的主鍵
alter table test drop primary key;
3.創(chuàng)建主鍵
alter table test add primary key(id);
在SYBASE的ASE和ASA中,可以使用如下的系統(tǒng)存儲(chǔ)過程來獲取主鍵:
exec
sp_pkeys
'table_name';
sql
server也是一樣的!
至于mysql,我沒這個(gè)環(huán)境,相信應(yīng)該有類似的存儲(chǔ)過程的!
樓主用的什么樣的客戶端程序?不同的客戶端程序查看的方式可能不一樣。我用Navicat。選擇表后點(diǎn)右鍵---選擇設(shè)計(jì)表,在字段后面有個(gè)黃色的鑰匙,那個(gè)字段就是主鍵。
盡管客戶端不同,但查看應(yīng)該都是在設(shè)計(jì)表中。
主鍵是定義一個(gè)表中起主要作用的數(shù)據(jù)項(xiàng),這些數(shù)據(jù)項(xiàng)的數(shù)據(jù)在表中是唯一的,同時(shí)系統(tǒng)按主鍵為表建立索引。\x0d\x0a\x0d\x0a外鍵是定義一個(gè)表中的某數(shù)據(jù)項(xiàng)的數(shù)據(jù),要參照另一個(gè)表的主鍵數(shù)據(jù)。既沒有在另一個(gè)表的主鍵數(shù)據(jù)中出現(xiàn)的數(shù)據(jù),不允許在這個(gè)表的外鍵數(shù)據(jù)項(xiàng)中出現(xiàn)。\x0d\x0a\x0d\x0a主鍵:表中記錄的唯一標(biāo)識(shí)\x0d\x0a\x0d\x0a外鍵:依賴于別的表的數(shù)據(jù)\x0d\x0a\x0d\x0a唯一鍵:在表中唯一\x0d\x0a\x0d\x0a鍵是一個(gè)或多個(gè)字段的組合\x0d\x0a\x0d\x0a唯一鍵:可以確定一條記錄的字段(或字段組合),一張表可以有多個(gè)唯一鍵,正如可以識(shí)別你的身份的可以是身份證,學(xué)生證,軍人證\x0d\x0a\x0d\x0a主鍵:你把唯一鍵的一個(gè)選做主鍵,一張表只能有一個(gè)主鍵\x0d\x0a\x0d\x0a外鍵:所定義的外鍵是另一張表的主鍵,\x0d\x0a\x0d\x0a主鍵:表中記錄的唯一標(biāo)識(shí),外鍵:依賴于別的表的數(shù)據(jù),唯一鍵:在表中唯一。\x0d\x0a\x0d\x0a主鍵和唯一鍵的一個(gè)區(qū)別:主鍵是不允許為NULL的,唯一鍵則可以,當(dāng)然你可以加上NOT NULL來限制它\x0d\x0a\x0d\x0a主鍵:能夠唯一表示數(shù)據(jù)表中的每個(gè)記錄的字段或者字段的組合就稱為主鍵。一個(gè)主鍵是唯一識(shí)別一個(gè)表的每一行記錄,但這只是其作用的一療分,主鍵的主要作用是將記錄和存放在其他表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián),在這一點(diǎn)上,主鍵是不同表中各記錄間的簡單指針,主鍵約整就是確定表中的每一條記錄,主鍵不能是空值,唯一約束是用于指定一個(gè)或多個(gè)列的組合值具有唯一性,以防止在列中輸入重復(fù)的值,所以,主鍵的值對(duì)用戶而言是沒有什么意義,并且和它賦予的值也沒有什么特別聯(lián)系。\x0d\x0a\x0d\x0a外鍵:\x0d\x0a\x0d\x0a若有兩個(gè)表A,B,C是A的主鍵,而B中也有C字段,則C就是表B的外鍵,外鍵約束主要用來維護(hù)兩個(gè)表之間數(shù)據(jù)的一致性。\x0d\x0a\x0d\x0aA為基本表,B為信息表。\x0d\x0a\x0d\x0a在數(shù)據(jù)庫中,常常不只是一個(gè)表,這些表之間也不是相互獨(dú)立的,不同的表之間需要建立一種關(guān)系,才能將它們的數(shù)據(jù)相互溝通,而在這個(gè)溝通過程中,就需要表中有一個(gè)字段作為標(biāo)志,不同的記錄對(duì)應(yīng)的字段取值不能相同,也不能是空白的,通過這個(gè)字段中不同的值可以區(qū)別各條記錄,就像我們區(qū)別不同的人,每個(gè)人都有名字,但它卻不能作為主鍵,因?yàn)槿嗣苋菀壮霈F(xiàn)重復(fù),而身份證號(hào)是每個(gè)人都不同的,所以可以根據(jù)它來區(qū)別不同的人,數(shù)據(jù)庫的表中作為主鍵的段段就要像人的身份證號(hào)一樣,必須是每個(gè)記錄的值都不同,這才能根據(jù)主鍵的值來確定不同的記錄。\x0d\x0a\x0d\x0a什么是外鍵?\x0d\x0a\x0d\x0a說明你的表A中的某項(xiàng)a,是引用表B的某列b\x0d\x0a\x0d\x0a為什么要使用外鍵?\x0d\x0aRDBMS的基本概念,可以維護(hù)數(shù)據(jù)庫的完整。\x0d\x0a\x0d\x0a如何來用,涉及到數(shù)據(jù)庫的定義。\x0d\x0a\x0d\x0a唯一約束和主鍵的區(qū)別是什么?\x0d\x0a\x0d\x0a唯一性約束\x0d\x0a\x0d\x0a唯一性約束所在的列允許空值,但是主鍵約束的列不允空值。\x0d\x0a\x0d\x0a可以把唯一約束放在一個(gè)或者多個(gè)列上,但是,唯一性約束所在的列并不是表的主鍵列。\x0d\x0a\x0d\x0a唯一性約束強(qiáng)制在指定的列上創(chuàng)建一個(gè)唯一性索引,在默認(rèn)情況下,創(chuàng)建唯一性的非聚簇索引,但是,也可以指定所創(chuàng)建的索引是聚簇索引。\x0d\x0a\x0d\x0a主鍵:\x0d\x0a\x0d\x0a用于標(biāo)識(shí)某行而且與之相關(guān)\x0d\x0a\x0d\x0a是不可能更新\x0d\x0a\x0d\x0a不應(yīng)該允許空\x0d\x0a\x0d\x0a唯一域/字段\x0d\x0a\x0d\x0a用于作為訪問某行的可選手段。\x0d\x0a\x0d\x0a只要唯一就可以更新\x0d\x0a\x0d\x0a可以為空\x0d\x0a\x0d\x0a注意唯一和主鍵的區(qū)別,它們都是創(chuàng)建一個(gè)唯一的索引,一個(gè)表格僅含有一個(gè)主鍵約束列,但是,它有可能在其他列中含有許多的唯一約束。