mysql之索引 應用於事物 內連接、左(外)連接、右(外)連接


什么是索引 

索引就像是一本書的目錄一樣,能夠快速找到所需要的內容

索引的作用

加快查詢速率,降低IO成本加快表與表之間的連接,減少分組和排序時間

索引類型

普通索引:沒有唯一性的基本索引

唯一索引:有唯一性,但可以為空

主鍵索引:有唯一性且不能夠為空

全文索引:

單列索引與多列索引

創建索引的依據

表的主鍵,外鍵必須有索引

數量超過300行的必須有索引

經常與其他表連接大表,在連接字段應該有索引

唯一性差,頻繁更新的不適合建索引

將常出現在where字段的應該建索引

索引應該建在選擇性高的小字段上

創建查看刪除索引

1.普通

create index  索引名字 on 表名(把誰設為索引);
create index  sy on wk(年齡);

2.查看索引

show index from 庫名.表名\G;  查看並以豎列形式顯示出來
show keys from 庫名.表名\G;

3.唯一索引

create unique index 索引名字 on 表名(把誰設為唯一索引);

 create unique index wysy on wk(姓名);

 4.主鍵索引

1.在create建表時創建 

2.若忘記在建表時創建

alter table 表名 add primary key(把誰建為主鍵索引);

5.刪除索引

非主鍵

drop index 索引名字 on 表名;
alter tables 表名 drop index 索引名字;

主鍵索引

alter table 表名 drop primary key;

事物處理控制命令

begin   開始一個事務

commit     提交一個事務

rollback  回滾一個事物


set 命令進行控制

set autocommit=0;        #禁止自動提交
set autocommit=0;        #開啟自動提交

MySQL 內連接、左(外)連接、右(外)連接

內連接
就是找兩個表之間的交集

關鍵字:inner join on

select * from 表名1 自定義的表1的別名 inner join 表名2 自定義的表2的別名 on 表一的別名.a_id = 表2的別名.b_id;
select * from a_table a inner join b_table b on a.a_id = b.b_id;
查看表內所有 表a_table 定義別名a 兩個表之間的交集 表b_table 定義別名b 通過格式上的b_id作對比找出b_id的並集

左(外)連接

以左邊表為基准,找右邊表里和左邊一樣的列出來

關鍵字:left join on 或 left outer join on  #兩種寫法都行,沒區別,前者是后者的簡寫

 select * from a_table a left join b_table b on a.a_id = b.b_id;   

右(外)連接

跟左連接差不多,以右邊表為基准,右邊的都列出來,找左邊表里和右邊一樣的列出來

關鍵字:right join on 或 right outer join on 

 select * from a_table a right join b_table b on a.a_id = b.b_id;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM