辽宁枚挪装修公司

聚集怎么寫(聚集索引)

如何寫(

1)創(chuàng)建表用戶(如何寫名字 varchar(

10)。

)engine=innodb;(

2) insert into user values('shenjian');

(

3) insert into user values('shenjian');提問,連續(xù)執(zhí)行上面的語句,執(zhí)行結(jié)果是:

A 建表語句(

1)報錯 B 插入語句(

2)報錯 C 插入語句(

3)報錯 D 均不報錯 實操如上,所以答案是【D 均不報錯】

InnoDB必須要有聚集索引,行記錄按照聚集索引物理上排序。

必須要有聚集索引,并不代表一定要有主鍵。

1)如果定義了主鍵,主鍵就是聚集索引;(

2)如果沒有定義主鍵,第一個非空(not null)且唯一(unique)列是聚集索引;

3)如果沒有符合條件的列,會自動創(chuàng)建一個隱藏的row-id作為聚集索引;畫外音:本例就屬于第三種情況。

(

1) create table user( id int,name varchar(

10),primary key(id)

)engine=innodb;(

2) insert into user(name) values('shenjian');

(

3) insert into user(name) values('shenjian');提問,連續(xù)執(zhí)行上面的語句,執(zhí)行結(jié)果是:

A 建表語句(

1)報錯 B 插入語句(

2)報錯 C 插入語句(

3)報錯 D 均不報錯 實操如上,所以答案是:【C 插入語句(

3)報錯】

建表語句可以不主動設(shè)置主鍵非空(上例中的id),InnoDB會自動添加非空(not null)且唯一(unique)的限制。

insert into user(name) values('shenjian');id默認(rèn)為0,第一次插入成功,第二次插入主鍵沖突。

畫外音:這一題很多人答錯。練習(xí)

三:建表時,可不可以選擇多個字段做主鍵?(

1) create table user(

id int not null,name varchar(

10) not null,primary key(id,name)

)engine=innodb;(

2) insert into user values(

1,'shenjian');

(

3) insert into user values(

1,'zhangsan');(

4) insert into user values(

2,'shenjian');

提問,連續(xù)執(zhí)行上面的語句,執(zhí)行結(jié)果是:A 建表語句(

1)報錯 B 插入語句(

2)報錯 C 插入語句(

3)報錯

D 插入語句(

3)報錯 E 均不報錯 實操如上,所以答案是:【E 均不報錯】 這就是所謂的聯(lián)合主鍵,不要求每個列唯

一,而要求聯(lián)合主鍵各個列的“組合唯一”。

畫外音:聯(lián)合索引,聯(lián)合主鍵,類似的。練習(xí)

四:可不可以主動插入自增主鍵?(

1) create table user(

id int auto_increment,name varchar(

10) not null,primary key(id)

)engine=innodb;(

2) insert into user(name) values('shenjian');

(

3) insert into user(id,name) values(

10,'shenjian');

(

4) insert into user(name) values('shenjian');畫外音:建表時,自增ID為主鍵,插入若干元素,有些包含自增ID,有些不包含。

提問,連續(xù)執(zhí)行上面的語句,執(zhí)行結(jié)果是:A 建表語句(

1)報錯 B 插入語句(

2)報錯 C 插入語句(

3)報錯

D 插入語句(

3)報錯 E 均不報錯 實操如上,所以答案是:【E 均不報錯】 自增ID經(jīng)常被用來作為主鍵,插入行記錄時,不指定值,InnoDB自動增加。

同時,也可以手動指定值:

1)手動指定的值與已有值重復(fù),則主鍵沖突;(

2)與已有值不沖突,則插入成功;(

3)未來不指定值插入,會從手動插入值往后繼續(xù)遞增;

如上例,手動插入10后,未來插入的行會從11開始,自增ID中間出現(xiàn)空洞。練習(xí)

五:建表時,可不可以使用聯(lián)合自增主鍵?

(

1) create table user( id int auto_increment,name varchar(

10) not null,

primary key(name,id) )engine=innodb;(

2) insert into user(name) values('shenjian');

(

3) insert into user(id,name) values(

10,'shenjian');

(

4) insert into user(name) values('shenjian');提問,連續(xù)執(zhí)行上面的語句,執(zhí)行結(jié)果是:

A 建表語句(

1)報錯 B 插入語句(

2)報錯 C 插入語句(

3)報錯 D 插入語句(

3)報錯 E 均不報錯

實操如上,所以答案是:【A 建表語句(

1)報錯】 這里不是指自增ID不能作為聯(lián)合主鍵,而是如果作為聯(lián)合主鍵,必須放在第一列。

primary key(name,id) 改為 primary key(id,name) 就可以執(zhí)行成功了。

畫外音:這一題很多人答錯??偨Y(jié)(

1)有主鍵,主鍵是聚集索引;(

2)沒有主鍵,首個非空唯一列是聚集索引;

3)沒有符合條件的列,row-id是聚集索引;主鍵和聚集索引不是一個東西,不要混淆。

三:InnoDB建表時,可不可以選擇多個字段做主鍵?

可以使用聯(lián)合主鍵,組合列唯一即可。

四:InnoDB插入時,可不可以主動插入自增主鍵?可以指定自增列的值,但可能導(dǎo)致空洞。

五:InnoDB建表時,可不可以使用聯(lián)合自增主鍵?可以,但自增ID必須在聯(lián)合主鍵的第一列。希望大家對主鍵有更系統(tǒng)性的認(rèn)識。

作者:毛毛禮物

作者: 毛毛禮物

過生日、春節(jié)過年、母親節(jié)父親節(jié)、紀(jì)念日等各種節(jié)日送什么禮物好?毛毛禮物網(wǎng)為您走心推薦。

發(fā)表評論

0條評論

本文來自網(wǎng)絡(luò),不代表本站立場,轉(zhuǎn)載請注明出處: http://bjshzs.cn/shengriliwu/op133rre.html
返回頂部
蒲江县| 泸水县| 沙坪坝区| 石林| 视频| 舟曲县| 浪卡子县| 三亚市| 平阳县| 新源县| 汨罗市| 铁力市| 南投市| 汕头市| 哈巴河县| 昭通市| 锡林浩特市| 绥棱县| 银川市| 成武县| 锦屏县| 叶城县| 瑞安市| 吉安县| 新津县| 仁怀市| 确山县| 韶山市| 石门县| 长垣县| 集贤县| 扎赉特旗| 新巴尔虎右旗| 依兰县| 图木舒克市| 昆明市| 宜章县| 青海省| 溧阳市| 郸城县| 隆林|