您好,登錄后才能下訂單哦!
#######################################
索引類似于“書的目錄”
索引的優點 加快查詢的速度
索引的缺點 減慢寫的速度(占用物理存儲空間)
(1)普通索引
a.創建表時直接設置普通索引
create table stu(
>age int,
>name char(8),
>index(age)); 給age字段創建普通索引,索引名為age
show index from stu 查看索引
desc stu /age 字段的key 為MUL
b.創建表之后給字段設置普通索引
create index name(索引名) on stu(age(字段名));
c.刪除普通索引
drop index name on stu;
(2)主鍵
主鍵特點:字段內不能有重復值,而且不能賦空值 如果表里已經有主鍵,不能在創建主鍵。
a.創建表時直接設置主鍵
create table stu(
>age int,
>name char(8),
>primary key(name)); 給name字段創建主鍵
desc stu; /name字段的key為PRI
b.創建表之后給字段創建主鍵
alter table stu add primary key(name);
c.刪除主鍵
alter table stu drop primaru key; /刪除主鍵后,值可以重復,但不能賦空值
alter table stu modify name char(8); /如果想賦控制,繼續修改字段
d.復合主鍵:多個字段一起做主鍵,字段的值不允許同時重復
create table stu(
>port int,
>cip char(15),
>status enum("up","down") default "up"
>primary key(port,cip)); 同時設置兩個主鍵,不能一個一個設置
desc stu;
insert into stu(port,cip) values(23,"1.1.1.1");
ok
insert into stu(port,cip) values(24,"1.1.1.1");
ok
insert into stu(port,cip) values(24,"1.1.1.2");
ok
insert into stu(port,cip) values(24,"1.1.1.1"); 復合主鍵時,一個字段內的值可以重復,但不能多字段內的值同時重復
error
e.主鍵與 auto_increment(自加1)連用 一般用于id序號 使用auto_increment 前提是必須要是主鍵且是數值類型
create table stu(
>id int(2) zerofill primary key auto_increment, /int()里面表示顯示寬度,不能夠限制給字段賦值的大小,大小由類型決定。
zerofill 用0 補位
>port int);
insert into stu(port) values(24);
desc stu;
select * from stu;
+++++++++++
id port
01 24
+++++++++++
(3)唯一索引 unique
特點:字段可以賦空值,但不能出現重復
a.創建表時直接設置普通索引
create table stu(
>age int,
>name char(8),
>unique index(name)); 給name字段創建唯一索引
desc stu; /name 字段的key 為 UNI
b.創建表之后給字段設置唯一索引
create unique index name(索引名) on stu(name(字段名));
c.刪除唯一索引
drop index name on stu;
(4)外鍵
作用:限制給字段賦值。值必須在指定字段值的范圍里選擇
存儲引擎必須為 innodb
a.創建表時直接設置主鍵
指定參考表
create table t1(
>age int,
>primary key(age) 參考表的參考字段要是索引的一種
>)engine=innodb; /設置表t1存儲引擎為engine=innodb
創建表t2
create table t1(
>age int,
>name char(8),
>foerign key(age) references t1(age) 創建外鍵
>on update cascade 同步更新
>on delete cascade 同步刪除
>)engine=innodb; /設置表t1存儲引擎為engine=innodb
創建成功后 t2表的age字段的值必須在t1age字段的范圍內,t1 age字段的值更新或者刪除 t2表相應發生變化(更新或刪除)
b.創建表之后給字段創建主鍵
alter table stu add foreign key(age) references t1(age) on update cascade on delete cascade;
c.刪除主鍵
show create table t2; /查看建表過程
CONSTRAINT `t5_ibfk_1` FOREIGN KEY 找出t5_ibfk_1
alter table stu drop froeign key t5_ibfk_1; /刪除外鍵。刪除后t2表不再受約束。
#############################################
show engines; /查看存儲引擎 默認為innodb
mysql服務體系結構:(8個功能模塊)
連接池
sql接口
分析器
優化器
查詢緩存
存儲引擎
文件系統
管理工具
存儲引擎介紹:mysql數據庫服務軟件自帶的程序。
不同的存儲引擎有不同的功能和數據存儲方式
是表的處理器
設置表的存儲引擎:
create table 表名(。。。。)engine=innodb;
修改表的存儲引擎
alter table 表名 engine=存儲引擎名;
修改表的默認存儲引擎
/etc/my.cnf
default-storage-engine=myisam
myisam特點:
表.MYI 索引信息
表.MYD 數據
表.frm 表結構
支持表級鎖 (鎖一張表)
不支持事務 事務回滾
innodb特點:
表.frm 表結構
表.ibd 索引信息+數據
支持行級鎖 (只給當前被訪問的行加鎖)
支持事務 事務回滾
鎖的作用:解決并發訪問沖突問題。
鎖類型 :讀鎖 和 寫鎖
select update delete insert
事務: 一次數據訪問從開始到結束的過程 稱為事務
事務回滾: 一次數據訪問 任意一步執行失敗,恢復所有操作。
事務的特性: 一致性 原子性 隔離性
事務日志文件:記錄對innodb存儲引擎的表執行過的操作。
工作如何如何決定表使用的存儲引擎:
接收寫操作多的表適合使用innodb存儲引擎。
接收讀操作多的表適合使用myisam存儲引擎
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。