如果你數(shù)據(jù)庫已經(jīng)建立 用這個(gè)方法:
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括運(yùn)城網(wǎng)站建設(shè)、運(yùn)城網(wǎng)站制作、運(yùn)城網(wǎng)頁制作以及運(yùn)城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,運(yùn)城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到運(yùn)城省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
ALTER TABLE `test` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
如果你數(shù)據(jù)庫沒有建立 ?就用CREATE :
如果你用的數(shù)據(jù)庫軟件 比如Navicat for MySQL。 ?那么在設(shè)計(jì)表選項(xiàng)里有設(shè)置自動(dòng)增長的,打上勾
列的自增屬性,一般用來設(shè)置整數(shù)列根據(jù)一定步長逐步增長的值,類似于其他數(shù)據(jù)庫的序列。不過這里的“序列”是基于特定一張表的。關(guān)于自增屬性的相關(guān)特性如下:
1. 控制自增屬性性能的變量:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統(tǒng)模式,也就是說,在對(duì)有自增屬性的字段插入記錄時(shí),會(huì)持續(xù)持有一個(gè)表級(jí)別的自增鎖,直到語句執(zhí)行結(jié)束為止。比如說下面兩條語句,SQL 1 在執(zhí)行期間,一直持有對(duì)表 f1 的表級(jí)自增鎖,接下來 SQL 2 執(zhí)行時(shí)鎖超時(shí)。
innodb_autoinc_lock_mode=1
代表連續(xù)模式,和傳統(tǒng)模式差不多,不同的點(diǎn)在于對(duì)于簡單的插入語句,比如 SQL 2,只在分配新的 ID 過程中持有一個(gè)輕量級(jí)的互斥鎖(線程級(jí)別,而不是事務(wù)級(jí)別),而不是直到語句結(jié)束才釋放的表鎖。
代表交錯(cuò)模式。這個(gè)模式下放棄了自增表鎖,產(chǎn)生的值會(huì)不連續(xù)。不過這是性能最高的模式,多條插入語句可以并發(fā)執(zhí)行。MySQL 8.0 默認(rèn)就是交錯(cuò)模式。
那針對(duì)復(fù)制安全來說,以上三種模式,0 和 1 對(duì)語句級(jí)別安全,也就是產(chǎn)生的二進(jìn)制日志復(fù)制到任何其他機(jī)器都數(shù)據(jù)都一致;2 對(duì)于語句級(jí)別不安全;三種模式對(duì)二進(jìn)制日志格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主復(fù)制架構(gòu)或者多源復(fù)制架構(gòu)里,主動(dòng)規(guī)避主鍵沖突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對(duì)于要立刻獲取插入值的需求
就是說要獲取一張表任何時(shí)候的最大值,應(yīng)該時(shí)刻執(zhí)行以下 SQL 3 ,而不是 SQL 2。SQL 2 里的函數(shù) last_insert_id() 只獲取上一條語句最開始的 ID,只適合簡單的 INSERT。
4. 自增列溢出現(xiàn)象
自增屬性的列如果到了此列數(shù)據(jù)類型的最大值,會(huì)發(fā)生值溢出。比如變更表 f1 的自增屬性列為 tinyint。
1.主鍵語法
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) );
②修改時(shí):ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
前提是原先沒有設(shè)置主鍵。
2.外鍵語法
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) );
②修改時(shí):
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區(qū)分一個(gè)表里的記錄時(shí),可以考慮多個(gè)列組合起來達(dá)到區(qū)分表記錄的唯一性,形式
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時(shí):alter table tb_name add primary key (字段1,字段2,字段3);
前提是原來表中沒有設(shè)置主鍵,若原先已有主鍵則會(huì)報(bào)錯(cuò)。
主鍵一般要設(shè)置成自增。
所謂自增,就是在插入的時(shí)候,該字段不需要賦值,會(huì)自動(dòng)+1;
如果我的表有id,name兩個(gè)字段,id自增。插入的時(shí)候只需這樣:
insert
into
tablename(name)
values('zhangsan');//id會(huì)自動(dòng)有值
如果你沒有自增,那就要指明字段了:
insert
into
tablename(id,name)
values(1,'zhangsan');//id不會(huì)自動(dòng)有值