您好,登錄后才能下訂單哦!
下文我給大家簡單講講關于Mysql索引、存儲引擎有何具體區別,大家之前了解過相關類似主題內容嗎?感興趣的話就一起來看看這篇文章吧,相信看完Mysql索引、存儲引擎有何具體區別對大家多少有點幫助吧。
一、普通索引:index
查看索引:
desc 庫名.表名;
show index from 庫名.表名;
默認使用的索引類型:
BTREE(二叉樹) hash B+Tree
創建索引:
--》建表時創建:
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);
//注意:我們索引名與字段名可以不相同,但是為了方便辨認,我們一般將索引名與字段名設置相同。
刪除索引:
drop index 索引名 on 表名;
##########################################################################################3
二、主鍵:primary key
使用規則:
-->設置主鍵的字段的值,不能重復,且不能賦空值
--》一個表只能有一個主鍵
--》如果,多個字段都作為primary key,稱為復合主鍵,必須一起創建。
--》主鍵字段的key標志為pri
--》通常與auto_increment(自動增長),一起連用。
創建主鍵:
--》建表時創建:
create table 表名(
字段名1 類型(寬度) 約束條件,
字段名2 類型(寬度) 約束條件,
primary key(字段名1,字段名2)
);
create table t4(
id int auto_increment, //設置自動增長(不賦值時,會根據上條記錄自動加1)
name char(10),
primary key(id,name) //設置復合主鍵
);
--》已有表創建:
alter table 表名 primary key(字段名);
alter table t1 primary key(id);
刪除主鍵:
alter table 表名 drop primary key;
##########################################################################################
三、唯一索引:unique
使用規則:
--》字段值可以為null,但不能重復
--》當將字段修改為null,限制與主鍵相同,
--》表中可以有多個unique字段
創建唯一索引:
--》建表時創建:
create table 表名(
字段名1 類型(寬度) 約束條件,
字段名2 類型(寬度) 約束條件,
unique(字段名1),
unique(字段名2)
);
create table t5(
id int,
name char(10),
unique(id),
unique(name)
);
--》已有表創建:
create unique index 索引名 on 表名(字段名);
刪除唯一索引:
drop index 索引名 on 表名;
#############################################################################################
四、外鍵:foreign key
外鍵:
讓當前表字段的值在另一個表中字段值的范圍內選擇。
使用規則:
--》表的存儲引擎必須是innodb
--》字段類型要一致
--》被參照字段必須要是索引類型的一種
創建外鍵:
命令: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
);
//創建jfb表,創建xsb表。xsb的num需要參考jfb中的id字段。即將num設為外鍵,將jfb中的id設為參考鍵。并設置自動更新。
insert into jfb values(1,"bob",20000),(2,"lucy",19000);
insert into xsb values(3,"jim","1709"); //無法插入,因為num的值,不在jfb的id值范圍內。
insert into xsb values(1,"jim","1709"; //插入成功
update jfb set id=6 where name=“bob”
select * from xsb; //更新jfb中的id字段數據,查看xsb中的記錄,也同時更新
delete from jfb where name=“bob”;
selece * from xsb; //刪除jfb表中記錄,xsb中的記錄也隨之刪除。
查看外鍵:
show create table 表名; //可以查看外鍵信息,包含外鍵名
刪除外鍵:
alter table 表名 drop foreign key 外鍵名;
##############################################################################################
mysql存儲引擎:
一、介紹:
mysql數據庫服務軟件自帶的程序,不同的存儲引擎有不同的功能和數據存儲方式,是表的處理器。
mysql服務體系結構:
連接池
sql接口
分析器
優化器
查詢緩存
存儲引擎
文件系統
管理工具
########################################################################################
二、基本設置、
查看數據庫服務使用的存儲引擎:
show engines;
查看表使用的存儲引擎:
show create table 表名;
設置數據庫服務使用的存儲引擎:
vim /etc/my.cnf
[mysql]
default-storage-engine=引擎類型
設置表的存儲引擎:
create table 表名(。。。。); //使用默認引擎
create table 表名(。。。。)engine=innodb; //設置存儲引擎為innodb
修改表使用的存儲引擎:
alter table 表名 engine=存儲引擎類型;
################################################################################3
三、常用引擎的特點:
myisam特點:
表.MYI 索引信息
表.MYD 數據
表.frm 表結構
支持表級鎖 (鎖一張表)
不支持事務 事務回滾
innodb特點:
表.frm 表結構
表.ibd 索引信息+數據
支持行級鎖 (只給當前被訪問的行加鎖)
支持事務 事務回滾
鎖的作用:解決并發訪問沖突問題。
鎖類型 :讀鎖 和 寫鎖
鎖粒度 : 行級鎖 表級鎖
事務: 一次數據訪問從開始到結束的過程 稱為事務
事務回滾: 一次數據訪問 任意一步執行失敗,恢復所有操作。
事務的特性: 一致性 原子性 隔離性
事務日志文件:記錄對innodb存儲引擎的表執行過的操作。
工作如何如何決定表使用的存儲引擎:
接收寫操作多的表適合使用innodb存儲引擎。
接收讀操作多的表適合使用myisam存儲引擎
大家覺得Mysql索引、存儲引擎有何具體區別這篇文章怎么樣,是否有所收獲。如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。