主鍵和主鍵的自動遞增字段
創(chuàng)新互聯(lián)公司是專業(yè)的長順網(wǎng)站建設公司,長順接單;提供做網(wǎng)站、成都網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行長順網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
每個表都應有一個主鍵字段。主鍵用于對表中的行(注:列表中的每一行)進行唯一標識。每個主鍵值(注:行)每在表中必須是唯一的。此外,主鍵字段不能為空,這是由于數(shù)據(jù)庫引擎需要一個值來對記錄進行定位。主鍵字段永遠要被編入索引。這條規(guī)則沒有例外。你必須對主鍵字段進行索引,這樣數(shù)據(jù)庫引擎才能快速定位給予該鍵值的行。下面的例子把 personID 字段設置為主鍵字段。主鍵字段通常是 ID(注:IDnetity的縮寫,身份標識號碼的意思) 號,且通常使用 AUTO_INCREMENT(注:increment,中文意思是增加的意思) 設置。AUTO_INCREMENT 會在新記錄(注:)被添加時逐一增加該字段的值。要確保主鍵字段不為空,我們必須向該字段添加 NOT NULL(注:不為空) 設置。
關系型數(shù)據(jù)庫的特點在于多個表之間使用關系聯(lián)系起來這樣可以顯著降低數(shù)據(jù)庫的容量,并提高維護效率主鍵并不是必須的但是增加主鍵對單表查詢的效率提升很高所以從原理上來說只要該字段絕對不會重復那么使用任何類型的字段,比如你上面所說的人名也是可以的但是如果考慮到與其它表的相互連接使用人名的可操作性就不是很好所以,第一點,建議你另外增加一個自動編號的字段作為id,用來做主鍵第二點,關系型數(shù)據(jù)庫的特點就是多表之間有冗余,但是實際上是降低了整個數(shù)據(jù)庫的維護難度,鑒于你看起來對關系型數(shù)據(jù)庫原理不清楚更建議你先把關系型數(shù)據(jù)庫原理再看看
創(chuàng)建個表不熟悉,不但慢,還容易出錯。并且不直觀。真不知道為什么那么多的人喜歡這個玩意。難道就是速度快?安全性好嗎?
主鍵是數(shù)據(jù)表的唯一索引。
1、建表的時候是這樣設置的:
CREATE TABLE mytable
(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(20),KEY(id)
);
就這樣,就可以建立主鍵了。
你使用:show columns in mytable進行查看創(chuàng)建的列表.
2、如果我們開始建表的時候沒有設置任何字段為主鍵,那么,現(xiàn)在我們要添加一個主鍵或者說是要讓一個字段變?yōu)樽詣泳幪?,哪么該怎么辦呢?
alter table myphp.users
modify column id int unsigned not null auto_increment,
add primary key(id);
就這樣,不但設置了自動編號,同時設置了主鍵。
方法一:
如果曾經(jīng)的數(shù)據(jù)都不需要的話,可以直接清空所有數(shù)據(jù),并將自增字段恢復從1開始計數(shù)
truncate
table
表名
方法二:
dbcc
checkident
('table_name',
reseed,
new_reseed_value)
當前值設置為
new_reseed_value。如果自創(chuàng)建表后沒有將行插入該表,則在執(zhí)行
dbcc
checkident
后插入的第一行將使用
new_reseed_value
作為標識。否則,下一個插入的行將使用
new_reseed_value
+
1。如果
new_reseed_value
的值小于標識列中的最大值,以后引用該表時將產(chǎn)生
2627
號錯誤信息。
方法二不會清空已有數(shù)據(jù),操作比較靈活,不僅可以將自增值歸零,也適用于刪除大量連續(xù)行后,重新設置自增值并插入新的數(shù)據(jù);或從新的值開始,當然不能和已有的沖突。
$sql="delete
from
$table_vote";
mysql_query($sql,
$link);
$sql="alter
table
$table_vote
auto_increment=1";
mysql_query($sql,
$link);
如何在MySQLOracle下創(chuàng)建自動遞增字段
在MySQL下創(chuàng)建自動遞增字段
create table article?? //先創(chuàng)建一個表
(???????
id int primary key auto_increment ? //設置該字段為自動遞增字段
title varchar( )
);
insert into article values (null a );???? //向數(shù)據(jù)庫中插入數(shù)據(jù)
select * from article;?? 結果如下
Id
Title
a
insert into article values (null b );
insert into article values (null c );
insert into article ?(title)? values ( d );
select * from article;?? 結果如下
Id
Title
a
b
c
d
但是oracle沒有這樣的功能 但是通過觸發(fā)器(trigger)和序列(sequence)可以實現(xiàn)
假設關鍵字段為id 建一個序列 代碼為
create sequence seq_test_ids minvalue maxvalue start with increment by nocache order ;! [if !supportLineBreakNewLine] ! [endif]
建解發(fā)器代碼為
lishixinzhi/Article/program/Oracle/201311/18903
可以使用主鍵來設置標識列,最常用的方法是使用自增id來做為標識列。請參考下列sql語句:
create
table
`animal`
(
`id`
int(11)
not
null
auto_increment,
--
定義自增id標識列
`animal`
varchar(10)
default
null,
primary
key
(`id`)
)
engine=innodb
auto_increment=3
default
charset=gb2312;