下文我給大家簡單講講關(guān)于MySQL索引、存儲引擎有何具體區(qū)別,大家之前了解過相關(guān)類似主題內(nèi)容嗎?感興趣的話就一起來看看這篇文章吧,相信看完Mysql索引、存儲引擎有何具體區(qū)別對大家多少有點幫助吧。
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)魯山,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
一、普通索引:index
查看索引:
desc 庫名.表名;
show index from 庫名.表名;
默認(rèn)使用的索引類型:
BTREE(二叉樹) hash B+Tree
創(chuàng)建索引:
--》建表時創(chuàng)建:
creat table 表名(
字段名 類型(寬度) 約束條件,
字段名 類型(寬度) 約束條件,
index(字段1),index(字段2)
);
create table t2 (
name char(10) not null,
index(name)
);
--》已有表添加索引:
create index 索引名 on 表名(字段名);
create index id on t1(id);
//注意:我們索引名與字段名可以不相同,但是為了方便辨認(rèn),我們一般將索引名與字段名設(shè)置相同。
刪除索引:
drop index 索引名 on 表名;
##########################################################################################3
二、主鍵:primary key
使用規(guī)則:
-->設(shè)置主鍵的字段的值,不能重復(fù),且不能賦空值
--》一個表只能有一個主鍵
--》如果,多個字段都作為primary key,稱為復(fù)合主鍵,必須一起創(chuàng)建。
--》主鍵字段的key標(biāo)志為pri
--》通常與auto_increment(自動增長),一起連用。
創(chuàng)建主鍵:
--》建表時創(chuàng)建:
create table 表名(
字段名1 類型(寬度) 約束條件,
字段名2 類型(寬度) 約束條件,
primary key(字段名1,字段名2)
);
create table t4(
id int auto_increment, //設(shè)置自動增長(不賦值時,會根據(jù)上條記錄自動加1)
name char(10),
primary key(id,name) //設(shè)置復(fù)合主鍵
);
--》已有表創(chuàng)建:
alter table 表名 primary key(字段名);
alter table t1 primary key(id);
刪除主鍵:
alter table 表名 drop primary key;
##########################################################################################
三、唯一索引:unique
使用規(guī)則:
--》字段值可以為null,但不能重復(fù)
--》當(dāng)將字段修改為null,限制與主鍵相同,
--》表中可以有多個unique字段
創(chuàng)建唯一索引:
--》建表時創(chuàng)建:
create table 表名(
字段名1 類型(寬度) 約束條件,
字段名2 類型(寬度) 約束條件,
unique(字段名1),
unique(字段名2)
);
create table t5(
id int,
name char(10),
unique(id),
unique(name)
);
--》已有表創(chuàng)建:
create unique index 索引名 on 表名(字段名);
刪除唯一索引:
drop index 索引名 on 表名;
#############################################################################################
四、外鍵:foreign key
外鍵:
讓當(dāng)前表字段的值在另一個表中字段值的范圍內(nèi)選擇。
使用規(guī)則:
--》表的存儲引擎必須是innodb
--》字段類型要一致
--》被參照字段必須要是索引類型的一種
創(chuàng)建外鍵:
命令:foreign key(字段名) references 表名(字段名)
on update cascade on delete cascade
create table jfb(
id int auto_increment,
name char(10),
pay float(7,2),
primary key(id),
);
create table xsb(
num int,
name char(10),
class char(10),
foreign key(num) references key(id) on update cascade on delete cascade
);
//創(chuàng)建jfb表,創(chuàng)建xsb表。xsb的num需要參考jfb中的id字段。即將num設(shè)為外鍵,將jfb中的id設(shè)為參考鍵。并設(shè)置自動更新。
insert into jfb values(1,"bob",20000),(2,"lucy",19000);
insert into xsb values(3,"jim","1709"); //無法插入,因為num的值,不在jfb的id值范圍內(nèi)。
insert into xsb values(1,"jim","1709"; //插入成功
update jfb set id=6 where name=“bob”
select * from xsb; //更新jfb中的id字段數(shù)據(jù),查看xsb中的記錄,也同時更新
delete from jfb where name=“bob”;
selece * from xsb; //刪除jfb表中記錄,xsb中的記錄也隨之刪除。
查看外鍵:
show create table 表名; //可以查看外鍵信息,包含外鍵名
刪除外鍵:
alter table 表名 drop foreign key 外鍵名;
##############################################################################################
mysql存儲引擎:
一、介紹:
mysql數(shù)據(jù)庫服務(wù)軟件自帶的程序,不同的存儲引擎有不同的功能和數(shù)據(jù)存儲方式,是表的處理器。
mysql服務(wù)體系結(jié)構(gòu):
連接池
sql接口
分析器
優(yōu)化器
查詢緩存
存儲引擎
文件系統(tǒng)
管理工具
########################################################################################
二、基本設(shè)置、
查看數(shù)據(jù)庫服務(wù)使用的存儲引擎:
show engines;
查看表使用的存儲引擎:
show create table 表名;
設(shè)置數(shù)據(jù)庫服務(wù)使用的存儲引擎:
vim /etc/my.cnf
[mysql]
default-storage-engine=引擎類型
設(shè)置表的存儲引擎:
create table 表名(。。。。); //使用默認(rèn)引擎
create table 表名(。。。。)engine=innodb; //設(shè)置存儲引擎為innodb
修改表使用的存儲引擎:
alter table 表名 engine=存儲引擎類型;
################################################################################3
三、常用引擎的特點:
myisam特點:
表.MYI 索引信息
表.MYD 數(shù)據(jù)
表.frm 表結(jié)構(gòu)
支持表級鎖 (鎖一張表)
不支持事務(wù) 事務(wù)回滾
innodb特點:
表.frm 表結(jié)構(gòu)
表.ibd 索引信息+數(shù)據(jù)
支持行級鎖 (只給當(dāng)前被訪問的行加鎖)
支持事務(wù) 事務(wù)回滾
鎖的作用:解決并發(fā)訪問沖突問題。
鎖類型 :讀鎖 和 寫鎖
鎖粒度 : 行級鎖 表級鎖
事務(wù): 一次數(shù)據(jù)訪問從開始到結(jié)束的過程 稱為事務(wù)
事務(wù)回滾: 一次數(shù)據(jù)訪問 任意一步執(zhí)行失敗,恢復(fù)所有操作。
事務(wù)的特性: 一致性 原子性 隔離性
事務(wù)日志文件:記錄對innodb存儲引擎的表執(zhí)行過的操作。
工作如何如何決定表使用的存儲引擎:
接收寫操作多的表適合使用innodb存儲引擎。
接收讀操作多的表適合使用myisam存儲引擎
大家覺得Mysql索引、存儲引擎有何具體區(qū)別這篇文章怎么樣,是否有所收獲。如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。