一、内连接(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;