資料庫自增字段的使用問題,關於資料庫表字段自增長的問題

2022-12-06 21:36:45 字數 5528 閱讀 1241

1樓:匿名使用者

自增字段在何時使用,比如我的使用者表已經有使用者名稱可以唯一地作為主鍵,還需要用自增字段嗎?

那就沒有必要了,主鍵都有了,要那個欄位只會浪費空間。

如果使用了自增欄位,在進行外來鍵關聯時繫結到使用者表的自增編號還是使用者名稱呢?

自編號沒有實際邏輯意義,當然用使用者名稱了

如果使用者所屬某個部門,這個部門又屬於某個大的部門,需要將兩個屬性都作為使用者表的字段嗎?這樣會具有更高效率嗎?

恩。一定程度上會,這樣減少表連線,通過犧牲儲存空間來換效率就是這樣乙個例子。

2樓:理工愛好者

用自增編號,尤其在存在外來鍵關聯的時候

如果使用者所屬某個部門,這個部門又屬於某個大的部門,需要將兩個屬性都作為使用者表的字段嗎?這樣會具有更高效率嗎?

*****==

會的,這個屬於資料冗餘範疇的問題,要注意保持資料的一致性。

3樓:匿名使用者

1)自增做主鍵更靈活

比如:如果表1選擇使用者名稱做主鍵,那麼使用者名稱就不能更改,否則將導致其它表關聯資料會混亂(如果表2記錄的是使用者名稱來與表1關聯的話)。

2)關於部門的問題,使用者表只要記錄部門,不需要記錄 大部門否則,修改部門所屬的 大部門 時,需要同時更新使用者表中的大部門字段,如果程式邏輯不嚴謹,容易引起資料不一致問題

4樓:韋小海

看你表的關係,有的唯一主鍵就可以了,有的還要用到兩個主鍵,一般乙個主鍵都用編號

mysql資料庫已經設定欄位是自增的為什麼插入的時候還是必須插入該列呢????求解……

5樓:邪魔劍聖

2個辦法

1.你可以在insert中將想要插入的field寫進去,id不用寫,一一對應即可

2.如果你的field很長或者你不想寫的話只要將auto_increment的列留空即可

如:insert into petdiary values('','2010-07-03 01:04:

05','w','ww','kk','off','2010-07-03 01:04:05','kk','kk')

6樓:匿名使用者

如果有2個字段,id,name,其中id為自增,那麼可以這樣插入:

insert into student (name) values('student1'); 省略自增字段,列出其他字段,插入值一一對應就可以了。

資料庫mysql中,如果有個字段是自增型,如何寫插入語句?

7樓:用著追她

1、增加欄位前,首先檢視tb1表當前的結構。

2、為表增加一列字段,例項。

3、再次檢視表結構,對比字段增加前後。

4、最後,插入一行新的資料看一下效果。

注意事項:mysql所使用的 sql 語言是用於訪問資料庫的最常用標準化語言。mysql 軟體採用了雙授權政策,分為社群版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型**的開發都選擇 mysql 作為**資料庫。

8樓:匿名使用者

對於自增型的字段,在插入資料的時候,不需要賦值。

但是在寫語句的時候,你得注意一下。

假設col1自增,表一共3列,col1, col2, col3, 那麼語句就是insert into table(col2, col3) values('1', '2');

希望能解決你遇到的問題。

9樓:黑客痞子

自增那個字段不用插入

insert into table(b,c)values(d,e)

10樓:

insert 表名(欄位2,欄位3) values(欄位2值,欄位3值)

11樓:匿名使用者

insetr into 目的表或查詢(欄位1,欄位2,…)

values(數值1,數值2,…)

關於資料庫表字段自增長的問題

12樓:左鵬翼

你好自增id呢 是會在你使用插入或者修改語句的時候進行遞增+1的,打個比方 如果你的插入語句寫錯了插入資料不成功,但是資料庫的id還是會+1,想要避免或者重新新增id為73的資料可以開啟表設計 把他的自動增長先設為否,然後 insert into 手動插一條id為73的資料進入 插入好之後再把字段增長給調回來

dbcc checkident ('table_name', reseed, new_reseed_value) 當前值設定為 new_reseed_value。如果自建立表後沒有將行插入該錶,則在執行 dbcc checkident 後插入的第一行將使用 new_reseed_value 作為標識。否則,下乙個插入的行將使用 new_reseed_value + 1。

如果 new_reseed_value 的值小於標識列中的最大值,以後引用該錶時將產生 2627 號錯誤資訊。

方法二不會清空已有資料,操作比較靈活,不僅可以將自增值歸零,也適用於刪除大量連續行後,重新設定自增值並插入新的資料;或從新的值開始,當然不能和已有的衝突。

當表中有了一下資料後

執行語句 dbcc checkident ('dbo.person', reseed, 10) 後再通過management studio新增資料時,id就會自動從11開始,也就是new_reseed_value+1開始

13樓:

是不是中間有過刪除,在資料庫中會出現這種情況的。

設計表時,id欄位在資料庫中設定為自增好嗎?能詳細說明原因嗎?

14樓:匿名使用者

設計表時對於唯一標識字段根據資料表的增長情況可以選擇是自增還是newid(sqlserver);自增整型字段對於表資料行很大的情況下不建議用,因為總會有數值不夠用的時候;但自增欄位有個好處,對於流水記錄可以很方便記錄順序記錄;另外時間戳也是個不錯的選擇;

另外選擇newid(sqlserver)即guid,唯一標識號,為字串型別,這個有個好處就是不用擔心字段值不夠用,但此字段值占用表儲存空間較大,在sqlserver中查詢效率與自增列基本一樣;一般用於關心順序,但需要唯一標識一筆記錄行,且資料表很大的情況,當然也可以什麼表都使用此型別來做唯一標識(不考慮儲存空間的話);

另外自增數值列可以用作表分割槽的方案,如(每100萬分乙個表),但newid不行;

(希望此資訊對你有用)

15樓:匿名使用者

個人感覺自增的id列比較方便,少量資料查詢速度快,不會有衝突id出現。但是如果資料量比較大的表,最好是人工新增的如使用newid()

16樓:下揚州啊

這要看你的業務流程

因為這種自增的id實際上是沒有意義的,僅僅是乙個標識而已

sql自增字段,有資料刪除後,如何實現自增字段的連續 5

17樓:匿名使用者

對於自增字段確實有這個問題,也無法改變,這是由於自增字段的值是內部計算,專每使用一次都會自屬動+1,有點類似線序,你可以使用如下兩種方法解決:

1、自增字段改為不用手工增加,每次都取最大值+1來儲存

2、不改自增欄位型別,採用邏輯刪除的方法,比如在表中增加乙個欄位isdel(1表示已刪除,0或者其它值表示沒有刪除),記錄當前記錄是否屬於刪除狀態,

18樓:匿名使用者

自動實現比較困難。

你就不能自增長的值為序號。

用儲存過程來實現。

19樓:匿名使用者

1.先取消主鍵的自增長,alter table 表名change id id int primary key ;

2.調整資料id順序 update 表名 set id = id - 1 where id > 10;

3.建議刪除一遍後面的空數版據,delete from 表名 where id > 1000;

4.把主鍵自增權長設定回來,alter table 表名 change id id int primary key auto_increment;

20樓:匿名使用者

改sequence的初始值,不過來

這個風源險太大,不建bai議這樣操作。如果你調整序du號之前zhi的那一刻有人往表裡dao插入了一條資料,然後你把序號往前挪了,自增之後插入的id遇到了已存在的序號就要報錯了。另外你這樣做也沒啥意義啊,假如1,2,3。

你把2刪了,依然是不連貫的,何必糾結最後一條記錄產生的不連貫

21樓:穹拓

自增字段的值自己是不能設定的,所以在原先的表裡面是改是行不通的。您可以把這個表給複製一下,只複製表結構就行,然後把錶裡面的資料給複製到新錶裡面,直到您誤刪的哪條記錄

22樓:匿名使用者

序號3已經生生了,雖然刪除了,但刪除的只是表記錄,資料庫已經記錄了id,所以再次插入記錄會從4開始。可以不用資料庫自帶的自增序列,改用自己建立序列。

23樓:匿名使用者

跳號對你的資料也沒bai

影響;如果你du感覺很不爽的話你可以自zhi己dao做自增效果,每次內

去除表中自增字段容

的最大值加一咯;

sql server自帶的自增效果就是這樣,使用過的序號將不再使用。除非你每次刪除最後一條記錄重置一下重新開始自增;

24樓:2011屆畢業生

mysql 資料庫就是這樣的,刪除資料就會斷掉排列順序。要想重新從1開始排序,就要先刪除自增列,在新增自增列(網頁鏈結)。

其實排列順序不連續不影響我們運算元據的,無非就是看起來不自在而已。

25樓:匿名使用者

斷號問題看看相關貼子吧

不能重排,重排會引起很多問題,只能在後面新增的時候補上

自己寫乙個版插入操作的儲存過程權,先判斷有無斷號,有斷號插入斷號,沒有就直接插入

26樓:匿名使用者

更新自增的主鍵值 mysql

alter table tablename auto_increment = auto_increment - 1;

將表的 自增 id 值減 1 即可

27樓:匿名使用者

老鐵,有知道怎麼弄了嗎?我也遇到這個問題了

28樓:下揚州啊

這個自增基本上是沒有具體的意義的,不要追求這個不間斷的視覺效果

凡是自增的,肯定避免不了不連續,這個無關緊要

客戶端可以用行號來作為替代顯示

29樓:匿名使用者

刪除自增字段後重新建

關於資料庫表主鍵設定為自增字段的疑問?

30樓:匿名使用者

自增列也原原本本的可以導過去的

oracle資料庫問題使用索引

建立索引語法看下面引用的內容 建立好索引之後你查詢過程中資料庫會自己使用的。索引介紹 1.1 索引的建立語法 create uniuqe bitmap index on asc desc,asc desc,tablespace storage logging nologging compute st...

資料庫正規化的問題,資料庫正規化的問題

樓上的回答不對。包含在任何乙個候選碼中的屬性稱為主屬性 可以這麼理解 如果一張表中有多個候選碼,那麼任意乙個候選碼或者幾個候選碼的組合都可以作為主鍵。你的例子中說了 sno,cno 組成候選碼。那麼,既然這張表只有乙個候選碼,那麼主鍵只能是 sno,cno 而不能是單個的sno或cno。用乙個反例來...

關聯式資料庫中資料庫,表,欄位及元組的概念及相互之間的關係

一 概念 1 關聯式資料庫的表採用二維 來儲存資料,是一種按行與列排列的具有相關資訊的邏輯組,它類似於excle工作表。乙個資料庫可以包含任意多個資料表。2 關聯式資料庫 在乙個給定的應用領域中,所有實體及實體之間聯絡的集合構成乙個關聯式資料庫。它是一種以關係模式為基礎儲存資料以及用數字方法處理資料...