mysql多個表之間的連線方式(內連線、左連線、右連線)、delete刪除表內資料的方法以及mysql索引
一、內連線(inner join)
主要是獲取兩個表中欄位匹配關係的表。查詢關聯欄位共同擁有的資料,用兩個表相同的欄位和內容相關聯起來。
1、兩個表之間的右連線。
使用命令:select*from 表名1 as 別名1 inner join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1;。
比如:select*from user as uinner joinstudent as s on u.id=s.id;。
2、多個表之間的連線
使用命令:select*from 表名1 as 別名1 inner join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1 inner join表名3 as 別名3 on 別名2.欄位名2=別名3.欄位名2;。
比如:select*from user as u inner joinstudent as s on u.id=s.id inner join worker as w on s.workID=w.workID;。
二、左連線(left join)
獲取左表所有的資料,同時獲取到右表與左表相同的資料。
1、兩個表之間的右連線。
使用命令:select*from 表名1 as 別名1 left join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1;。
比如:select*from student as s left join worker as w on s.workID=w.workID;
2、多個表之間的連線
使用命令:select*from 表名1 as 別名1 left join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1 left join表名3 as 別名3 on 別名2.欄位名2=別名3.欄位名2;。
比如:select*fromworker as w left joinstudent as s ons.workID=w.workID left join user as uon u.id=s.id;。
三、右連線(right join)
獲取右表所有的資料,同時獲取到左表與右表相同的資料。
兩個表之間的右連線。
使用命令:select*from 表名1 as 別名1 left join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1;。
比如:select*from student as s right join worker as w on s.workID=w.workID;。
2、多個表之間的連線
使用命令:select*from 表名1 as 別名1 right join 表名2 as 別名2 on 別名1.欄位名1=別名2.欄位名1 right join表名3 as 別名3 on 別名2.欄位名2=別名3.欄位名2;。
比如:select*from user as u rightjoinstudent as s on u.id=s.id rightjoin worker as w on s.workID=w.workID;。
四、刪除表裡面的資料內容的三種方法(in、or、and):
(1)、使用命令:delete from 表名 where 欄位名 in(欄位值,欄位值);。比如:delete from user where id in(3,4);。
(2)、使用命令:delete from 表名 where 欄位名=欄位值 or 欄位名=欄位值;。比如:delete from user where id=3 or id=4;。
(3)、使用命令:delete from 表名 where 欄位名=欄位值 and 欄位名=欄位值;。比如:delete from user where id=3 and id=4;。
五、子查詢:⼦查詢也是select語句的⼀種形式
使用命令:select 欄位名1 from 表名1 where 欄位名3 in (select 欄位名4 from 表名2 where 表名2='欄位值' );。(欄位3和欄位4必須是一致的)
比如:select name from user where id in (select id from student where isGood="good");
六、mysql的索引
在MySQL中,建立MySQL的索引主要是為了提⾼MySQL查詢的效率。但是新增太多的索引也是會降低更新表的速 度的,因為對錶進⾏DML操作的時候,
MySQL的內部不僅僅要儲存資料,還需要儲存索引⽂件的。
建立索引使用命令:create table userIndex( id int primary key, name varchar(10), address varchar(100), index indexName (name) );
新增索引使用的命令:alter table student add index indexStu(score);
ps:刪除表裡面的內容為NULL的命令:delete from worker where workID is null;