如何在MYSQL插數(shù)據(jù)ID自增的方法。

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都做網(wǎng)站與策劃設(shè)計,寧明網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:寧明等地區(qū)。寧明做網(wǎng)站價格咨詢:18980820575
如下參考:
1.在添加字段之前,第一個應(yīng)該首先檢查當(dāng)前tb1表的結(jié)構(gòu),如下圖所示。
2.實例字段列添加到表,如下所示。
3.再次看表結(jié)構(gòu)和比較之前和之后的情況添加字段,如下圖所示。
4.最后,插入新的數(shù)據(jù)行看到的樣子,最后添加自動增長的字段,如下所示。
注意事項:
MySQL使用的SQL語言是訪問數(shù)據(jù)庫最常用的標(biāo)準(zhǔn)語言。MySQL軟件采用雙重許可政策,分為社區(qū)版,商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特性,一般中小網(wǎng)站開發(fā)選擇MySQL作為數(shù)據(jù)庫。
在MySQL中可通過字段的AUTO_INCREMENT屬性來自動生成。
mysql數(shù)據(jù)庫表主鍵自增長的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;
create?table?表名(
id?int?auto_increment?primaryKey
)
auto_increment??就是自增
設(shè)置自增列
MYSQL的自增列一定要是有索引的列,設(shè)置種子值要在表的后面設(shè)置
--mysql
-- 設(shè)置自增ID從N開始
CREATE TABLE empautoinc(
ID INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT = 100 ; --(設(shè)置自增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)
設(shè)置自增列的步長,可以分為全局級別和會話級別
如果是會話級別,那么當(dāng)用戶新建一個會話的時候,那么步長又回到了全局級別,所以mysql的步長跟sqlserver的步長有很大的不同
mysql不能設(shè)置為 表級別 的步長
私信666領(lǐng)取資料
列的自增屬性,一般用來設(shè)置整數(shù)列根據(jù)一定步長逐步增長的值,類似于其他數(shù)據(jù)庫的序列。不過這里的“序列”是基于特定一張表的。關(guān)于自增屬性的相關(guān)特性如下:
1. 控制自增屬性性能的變量:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統(tǒng)模式,也就是說,在對有自增屬性的字段插入記錄時,會持續(xù)持有一個表級別的自增鎖,直到語句執(zhí)行結(jié)束為止。比如說下面兩條語句,SQL 1 在執(zhí)行期間,一直持有對表 f1 的表級自增鎖,接下來 SQL 2 執(zhí)行時鎖超時。
innodb_autoinc_lock_mode=1
代表連續(xù)模式,和傳統(tǒng)模式差不多,不同的點在于對于簡單的插入語句,比如 SQL 2,只在分配新的 ID 過程中持有一個輕量級的互斥鎖(線程級別,而不是事務(wù)級別),而不是直到語句結(jié)束才釋放的表鎖。
代表交錯模式。這個模式下放棄了自增表鎖,產(chǎn)生的值會不連續(xù)。不過這是性能最高的模式,多條插入語句可以并發(fā)執(zhí)行。MySQL 8.0 默認(rèn)就是交錯模式。
那針對復(fù)制安全來說,以上三種模式,0 和 1 對語句級別安全,也就是產(chǎn)生的二進制日志復(fù)制到任何其他機器都數(shù)據(jù)都一致;2 對于語句級別不安全;三種模式對二進制日志格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主復(fù)制架構(gòu)或者多源復(fù)制架構(gòu)里,主動規(guī)避主鍵沖突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對于要立刻獲取插入值的需求
就是說要獲取一張表任何時候的最大值,應(yīng)該時刻執(zhí)行以下 SQL 3 ,而不是 SQL 2。SQL 2 里的函數(shù) last_insert_id() 只獲取上一條語句最開始的 ID,只適合簡單的 INSERT。
4. 自增列溢出現(xiàn)象
自增屬性的列如果到了此列數(shù)據(jù)類型的最大值,會發(fā)生值溢出。比如變更表 f1 的自增屬性列為 tinyint。
1.主鍵語法
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) );
②修改時:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
前提是原先沒有設(shè)置主鍵。
2.外鍵語法
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) );
②修改時:
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區(qū)分一個表里的記錄時,可以考慮多個列組合起來達到區(qū)分表記錄的唯一性,形式
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時:alter table tb_name add primary key (字段1,字段2,字段3);
前提是原來表中沒有設(shè)置主鍵,若原先已有主鍵則會報錯。
名稱欄目:mysql怎么定義自增,MySQL自增
URL分享:http://chinadenli.net/article48/hsigep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、Google、定制開發(fā)、網(wǎng)站制作、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)