alter table questionlib modify id?int(11) auto_increment;
為噶爾等地區用戶提供了全套網頁設計制作服務,及噶爾網站建設行業解決方案。主營業務為網站制作、網站建設、噶爾網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
注意事項:
修改后從下一條記錄開始自動增長。如果想讓原來的自動增長就得復制現有表的結構(無id),添加id并加上AUTO_INCREMENT,然后通過循環,添加n條空記錄,然后對應先前表的id,依次插入數據。
擴展資料:
mysql自動增長開始值設置總結
1、創建表,設置表主鍵id自動增長,默認自動增長的起始值為1開始。
2、當表數據不為空的時候,重新去修改自動增長id開始值,mysql會主動去核對你設置的起始值是否是當前數據庫已有id的最大值+1; 若是則修改成功,若不是則修改不成功 (默認還是id最大值+1)
3、要設置自動增長為1開始,需要清空表數據才行。alter table table_name AUTO_INCREMENT=1
4、若每次直接在數據庫里面插入數據,則會自動的去修改當前表的自動增長起始值(設置自動增長起始值為當前插入成功的數據的id)
在MySQL中可通過字段的AUTO_INCREMENT屬性來自動生成。
mysql數據庫表主鍵自增長的sql語句
1、不控制主鍵的起點
create?table?emb_t_dictBusType
(
emb_c_busTypeID??????int?not?null?auto_increment,
emb_c_busTypeEnName??varchar(255)?not?null,
emb_c_busTypeZhName??varchar(255)?not?null,
primary?key(emb_c_busTypeID)??
)engine=INNODB??default?charset=gbk;
2、控制主鍵的起點
create?table?emb_t_dictBusType
(
emb_c_busTypeID??????int?not?null?auto_increment,
emb_c_busTypeEnName??varchar(255)?not?null,
emb_c_busTypeZhName??varchar(255)?not?null,
primary?key(emb_c_busTypeID)??
)engine=INNODB?auto_increment=1001?default?charset=gbk;
列的自增屬性,一般用來設置整數列根據一定步長逐步增長的值,類似于其他數據庫的序列。不過這里的“序列”是基于特定一張表的。關于自增屬性的相關特性如下:
1. 控制自增屬性性能的變量:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統模式,也就是說,在對有自增屬性的字段插入記錄時,會持續持有一個表級別的自增鎖,直到語句執行結束為止。比如說下面兩條語句,SQL 1 在執行期間,一直持有對表 f1 的表級自增鎖,接下來 SQL 2 執行時鎖超時。
innodb_autoinc_lock_mode=1
代表連續模式,和傳統模式差不多,不同的點在于對于簡單的插入語句,比如 SQL 2,只在分配新的 ID 過程中持有一個輕量級的互斥鎖(線程級別,而不是事務級別),而不是直到語句結束才釋放的表鎖。
代表交錯模式。這個模式下放棄了自增表鎖,產生的值會不連續。不過這是性能最高的模式,多條插入語句可以并發執行。MySQL 8.0 默認就是交錯模式。
那針對復制安全來說,以上三種模式,0 和 1 對語句級別安全,也就是產生的二進制日志復制到任何其他機器都數據都一致;2 對于語句級別不安全;三種模式對二進制日志格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主復制架構或者多源復制架構里,主動規避主鍵沖突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對于要立刻獲取插入值的需求
就是說要獲取一張表任何時候的最大值,應該時刻執行以下 SQL 3 ,而不是 SQL 2。SQL 2 里的函數 last_insert_id() 只獲取上一條語句最開始的 ID,只適合簡單的 INSERT。
4. 自增列溢出現象
自增屬性的列如果到了此列數據類型的最大值,會發生值溢出。比如變更表 f1 的自增屬性列為 tinyint。
SQL 2 顯式插入最大值 127, SQL 3 就報錯了。所以這點上建議提前規劃好自增列的字段類型,提前了解上限值。
5. 自增列也可以顯式插入有符號的值
那針對這樣的,建議在請求到達數據庫前規避掉。
設置自增列
MYSQL的自增列一定要是有索引的列,設置種子值要在表的后面設置
--mysql
-- 設置自增ID從N開始
CREATE TABLE empautoinc(
ID INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT = 100 ; --(設置自增ID從100開始)
insert into empautoinc(id) values(null);
Query OK, 1 row affected (0.00 sec)
mysql select * from empautoinc;
+-----+
| ID |
+-----+
| 100 |
+-----+
1 row in set (0.00 sec)
show table status like 'empautoinc'G;
*************************** 1. row ***************************
Name: empautoinc
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 1
Avg_row_length: 16384
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 101
Create_time: 2016-10-27 01:50:32
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
設置自增列的步長,可以分為全局級別和會話級別
如果是會話級別,那么當用戶新建一個會話的時候,那么步長又回到了全局級別,所以mysql的步長跟sqlserver的步長有很大的不同
mysql不能設置為 表級別 的步長
私信666領取資料
如果你數據庫已經建立 用這個方法:
ALTER TABLE `test` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
如果你數據庫沒有建立 ?就用CREATE :
如果你用的數據庫軟件 比如Navicat for MySQL。 ?那么在設計表選項里有設置自動增長的,打上勾
以插入語句的方法來解決此問題。
如下參考:
1.在添加字段之前,第一個zd應該首先檢查tb1表的當前結構。
2.將字段列instance添加到表中,如下圖。
3.再次查看表結構,比較添加字段之前和之后的情況。
4.最后,插入新的數據行,看看它是什么樣子,最后就加入了自動增長字段如下圖。
注意事項:
MySQL使用的SQL語言是訪問數據庫最常用的標準化語言。MySQL軟件采用雙重許可政策,分為社區版和商業版,由于其體積小,速度快,整體擁有成本低,尤其是開源這一特點,一般中小型網站開發都選擇MySQL作為網站數據庫。
本文名稱:mysql怎么添加自增 mysql創建表設置自增
當前URL:http://vcdvsql.cn/article24/hehpje.html
成都網站建設公司_創新互聯,為您提供網站建設、全網營銷推廣、虛擬主機、動態網站、網站維護、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯