一、內連接(inner join)
主要是獲取兩個表中字段匹配關系的表。查詢關聯字段共同擁有的數據,用兩個表相同的字段和內容相關聯起來。
1、兩個表之間的右連接。
使用命令:select *from 表名1 as 別名1 inner join 表名2 as 別名2 on 別名1.字段名1=別名2.字段名1;。
比如:select *from user as u inner join student 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 join student 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 *from worker as w left join student as s on s.workID=w.workID left join user as u on 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 right join student as s on u.id=s.id right join worker as w on s.workID=w.workID;。
四、刪除表里面的數據內容的三種方法(in、or):
(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;。
五、子查詢:⼦查詢也是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;