Mysql查询语句之连表查询和增删改查语句补充

Python进阶者
• 阅读 1479

前言

Hey,大家好,我是码农星期八!

上次怎么大概说了一下or,!=,in/not in between,like,limit,order by,group by

但是还没完,咱们接着往下说!

查询

我们的数据是这样的。

Mysql查询语句之连表查询和增删改查语句补充

发现class_id是一个数字,这是因为我们在设计时,将学生表班级表分开设计的。

Mysql查询语句之连表查询和增删改查语句补充

但是如果我们偏偏想要查询这个人是几班的,怎么办?

连表查询

方式一,where连表

语法

SELECT * from 表1,表2 WHERE 表1.外键列=表2.被外键列;
SELECT 表1.列1,表1.列2,表2.列1,... from 表1,表2 WHERE 表1.外键列=表2.被外键列;

连表显示所有列

SELECT * from student,class WHERE student.class_id=class.id;

执行结果

Mysql查询语句之连表查询和增删改查语句补充

喏,这样就知道哪个学生是哪个班的了!

连表显示指定列

SELECT student.id,student.`name`,class.title from student,class WHERE student.class_id=class.id;

执行结果

Mysql查询语句之连表查询和增删改查语句补充

方式二,left连表

通过where连表固然简单,但是缺点明显。

因为我们的where后面是要跟判断条件的,使用where进行连表会造成逻辑有些混乱

在一般连表操作中,使用的也是left进行连表。

语法

SELECT * from 表1 LEFT JOIN 表2 on 表1.外键字段=表2.被外键字段;
SELECT 表1.列1,表1.列2,表2.列1,... from 表1 LEFT JOIN 表2 on 表1.外键字段=表2.被外键字段;

连表显示所有列

SELECT * from student LEFT JOIN class on student.class_id=class.id;

执行结果

Mysql查询语句之连表查询和增删改查语句补充

选择指定列查询

SELECT student.id,student.`name`,class.title from student LEFT JOIN class on student.class_id=class.id;

执行结果

Mysql查询语句之连表查询和增删改查语句补充

其实这和where连表是一样的。

方式三,inner连表

innerleft是差不多的,只不过left是正向连表,inner是反向连表。

就像学生表和课程表。

如果是通过学生表连课程表,属于正向,用left

如果是通过课程表连学生表,就属于反向,用inner

如果反向连表硬生生用left,会出现一些空值现象。

inner语法同left,只不过是表的前后顺序不一样。

其他操作

上述所有的操作,都属于查询操作,基本上入门是可以的,下面咱们来看一下剩下的增,删,改操作。

增(insert)

单条插入

语法

INSERT INTO 表(列名1,列名2,...) values(值1,值2,...);

添加一条学生信息

INSERT into student(name,age,gender,class_id) VALUES("吴彦祖",22,"男",1);

执行结果

Mysql查询语句之连表查询和增删改查语句补充

表内容

Mysql查询语句之连表查询和增删改查语句补充

多条插入

语法

INSERT INTO 表(列名1,列名2,...) values(值1,值2,...),(值1,值2,...);

批量添加学生信息

INSERT INTO student (NAME, age, gender, class_id)
VALUES
    ("范冰冰", 18, "女", 2),
    ("成龙", 24, "男", 3);

执行结果

Mysql查询语句之连表查询和增删改查语句补充

表内容

Mysql查询语句之连表查询和增删改查语句补充

改(update)

语法

UPDATE <表> set 列 = 值 where <条件>;

将李四的年龄修改成88岁

UPDATE student set age = 88 where name = "张三"

执行结果

Mysql查询语句之连表查询和增删改查语句补充

删除(delete)

语法

delete from <表名>
delete from <表名> where <条件>

删除张三

DELETE from student where name="张三"

执行结果

Mysql查询语句之连表查询和增删改查语句补充

总结

这章有点像收尾部分,补充了连表查询,后续又补充了Mysql的增删改查。

连表查询要区分一下leftinner的区别,一个是正向连,一个是反向连。

插入数据可以插入单条数据和多条数据,多跟参数即可。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

越努力,越幸运。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。

感谢你的观看。

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
Mysql查询语句进阶知识集锦
前言上次咱们简单的学习了一下select的用法,,对数据库大概有了一些基本的了解。咱们接着上次继续来看叭!查询数据如下or查询我们在上学时,会听到这样的话,某某某,你把谁谁谁或者谁谁谁叫过来。这样子的话,我们我们要查询的,就是一个或(or)的关系了。or查询只有满足一个条件即可sql语法SELECTfromstudentWHERE<条件or
Karen110 Karen110
3年前
一篇文章教会你使用Django根据现有数据库反向生成models
前言Hey,大家好呀,我是码农,星期八!熟悉Django的都知道,Django真是个好东西。复制粘贴一把梭很快都能撸出来一个web,再借助Django的Models和ORM。查询简直不要太方便!!!但是,但是,但是,真的如此吗???DjangoModels遇到的问题通常情况下,我们是通过pythonmanage.pymakemigrationspy
Python进阶者 Python进阶者
3年前
手把手教你进行Mysql查询操作
大家好,我是IT共享者,人称皮皮。今天给大家讲讲MySQL中的查询操作。前言我们在以前,大概学了一下如何通过命令创建数据库,创建表等基本操作。但是实际上啊,至少在我的实际工作中,用到的不是太多,了解就可以。因为我们可以通过一些可视化软件,像NavicatforMySQL等。可以很方便的帮助我们创建数据库,创建表,修改表等操作。Navicatfor
Kevin501 Kevin501
3年前
Mysql 多表联合查询效率分析及优化
Mysql多表联合查询效率分析及优化一、总结一句话总结:连表操作时:先根据查询条件和查询字段确定驱动表,确定驱动表之后就可以开始连表操作了,然后再在缓存结果中根据查询条件找符合条件的数据1、找出所有在左表,不在右表的纪录?我们可以用右表没有on匹配则显示null的规律,来找出所
Wesley13 Wesley13
3年前
SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过LEFTJOIN等语句进行相关联,并且我们也会为我们所想查询的数据进行一个筛选,这时我们就会用到过滤语句。       LEFTJOINONWHE
Wesley13 Wesley13
3年前
MySQL学习(十二)
视图view在查询中,我们经常把查询结果当成临时表来看,view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影。表的变化会影响到视图既然视图只是表的某种查询的投影,所以主要步骤在于查询上,查询的结果命名为视图就可以了。创建视图的语法CREATEVIEW视图ASSELECT语句;mysqlcreate
Wesley13 Wesley13
3年前
135 MySQL子查询
\TOC\一、子查询的概念将一条sql语句执行的结果作为另一个sql语句的条件二、子查询的规则以下是基于对表的增删改查操作的1.增数据时:insertinto表名select子查询注解:对一个表插入数据时,插入的数据可以是另外一个sql
Wesley13 Wesley13
3年前
mysql数据库查询操作
\mysql数据库\知识要点:1\.单表查询2\.子查询3\.联表查询4\.事务在进行查询之前,我们要先建好关系表,并往数据表中插入些数据。为查询操作做好准备。\五张关系表的创建:\\\mysql创建并进入数据库:mysqlCREATEDATABASE\
Wesley13 Wesley13
3年前
mysql 数据操作 多表查询 准备
为什么需要多表查询:因为我们不可能把所有数据都放在一张表里我们把不同数据存储放在一张一张不同表方便管理,但我们为了方便管理,把数据拆分到一张一张表去存储。但是数据还是一个整体,数据之间是有关联关系,那就要把分散的数据,合并到一起进行查询多表查询概念:连表操作通过连接方式,把有关系的表拼成一个整体,进行关联查询。
Wesley13 Wesley13
3年前
MySQL之视图、触发器、事务、存储过程、函数
一. 视图  视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的数据,但是下次我要是想用这个虚拟表呢,没办法,只能重新查一次,每次都要重新查。其本质是【根据SQL语句获取动态的数据集,并为其命名】