mysql多个表之间的连接方式(内连接左连接右连接)delete删除表内数据的方法以及mysql索引
Posted 不将就就
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 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、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;
MySQL连接查询之内连接左连接右连接自连接
目录
一、内连接
1. 连接查询的介绍
连接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成。
连接查询可以分为:
- 内连接查询
- 左连接查询
- 右连接查询
- 自连接查询
2. 内连接查询
查询两个表中符合条件的共有记录
内连接查询效果图:
内连接查询语法格式:
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
说明:
- inner join 就是内连接查询关键字
- on 就是连接查询条件
例1:使用内连接查询学生表与班级表:
select * from students as s inner join classes as c on s.cls_id = c.id;
二、左连接
1. 左连接查询
以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值填充
左连接查询效果图:
左连接查询语法格式:
select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2
说明:
- left join 就是左连接查询关键字
- on 就是连接查询条件
- 表1 是左表
- 表2 是右表
例1:使用左连接查询学生表与班级表:
select * from students as s left join classes as c on s.cls_id = c.id;
三、右连接
1. 右连接查询
以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在使用null值填充
右连接查询效果图:
右连接查询语法格式:
select 字段 from 表1 right join 表2 on 表1.字段1 = 表2.字段2
说明:
- right join 就是右连接查询关键字
- on 就是连接查询条件
- 表1 是左表
- 表2 是右表
例1:使用右连接查询学生表与班级表:
select * from students as s right join classes as c on s.cls_id = c.id;
四、自连接
1. 自连接查询
左表和右表是同一个表,根据连接查询条件查询两个表中的数据。
区域表效果图
例1:查询省的名称为“山西省”的所有城市
创建areas表:
create table areas(
id varchar(30) not null primary key,
title varchar(30),
pid varchar(30)
);
执行sql文件给areas表导入数据:
source areas.sql;
说明:
- source 表示执行的sql文件
自连接查询的用法:
select c.id, c.title, c.pid, p.title from areas as c inner join areas as p on c.pid = p.id where p.title = '山西省';
说明:
- 自连接查询必须对表起别名
2022年Python+大数据学习路线图,源码笔记,最优学习资源_黑马程序员官方的博客-CSDN博客任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮大家理清思路,攻破难关!文章目录前言第一阶段 大数据开发入门1.大数据数据开发基础MySQL8.0从入门到精通第二阶段 大数据核心基础2022版大数据Hadoop入门教程第三阶段 千亿级数仓技术数据离线数据仓库,企业级在线教育项目实战(Hive数仓项目完整流程)第四阶段 PB内存计算1.pythohttps://blog.csdn.net/itcast_cn/article/details/1223065522022年人工智能学习路线图,清楚明确_黑马程序员官方的博客-CSDN博客_人工智能学习路线图众所周知,人工智能时代已经融入到我们的生活的当中,不论是图像识别还是语音识别的相关产品已经开始落地,就连国家都将人工智能设为了国家战略级发展规划,人工智能开发将会是是未来技术研究的前沿。下面特别给大家整理了人工智能的学习路线,希望大家都能有清楚的学习方向。文章目录第一阶段 人工智能开发入门1. 人工智能之python编程零基础入门2、4天快速入门Python数据挖掘第二阶段 机器学习核心技术第三阶段 NLP自然语言处理技术第四阶段 CV计算机视觉技术1.AI-OpenCV图像处理10小时零基础入门2https://blog.csdn.net/itcast_cn/article/details/122882407
详情大家可以关注Python专栏,努力为大家更新更多好内容 ↑ ↑ ↑
以上是关于mysql多个表之间的连接方式(内连接左连接右连接)delete删除表内数据的方法以及mysql索引的主要内容,如果未能解决你的问题,请参考以下文章