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

数据库 MySQL
这章有点像收尾部分,补充了连表查询,后续又补充了Mysql的增删改查。连表查询要区分一下left和inner的区别,一个是正向连,一个是反向连。

前言

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

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

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

查询

我们的数据是这样的。

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

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

连表查询

方式一,where连表

语法

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

连表显示所有列

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

执行结果

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

连表显示指定列

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

执行结果

方式二,left连表

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

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

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

语法

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

连表显示所有列

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

执行结果

选择指定列查询

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

执行结果

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

方式三,inner连表

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

就像学生表和课程表。

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

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

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

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

其他操作

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

增(insert)

单条插入

语法

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

添加一条学生信息

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

执行结果

表内容

多条插入

语法

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

批量添加学生信息

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

执行结果

表内容

改(update)

语法

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

将李四的年龄修改成88岁

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

执行结果

删除(delete)

语法

  1. delete from <表名> 
  2. delete from <表名> where <条件> 

删除张三

  1. DELETE from student where name="张三" 

执行结果

总结

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

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

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

 

责任编辑:姜华 来源: IT共享之家
相关推荐

2009-06-30 16:57:21

Criteria查询

2010-09-26 15:23:24

SQL语句

2010-10-27 15:34:37

oracle查询

2020-09-13 13:05:41

MySQL慢查询数据

2021-03-15 10:01:40

Mysql查询语句

2010-11-24 17:36:02

MySQL条件查询语句

2010-09-25 16:42:45

sql语句

2010-11-16 16:26:42

Oracle查询用户表

2010-11-25 15:57:49

mysql查询语句

2010-11-18 13:40:48

mysql分页查询

2018-06-07 09:45:08

2011-04-28 09:49:56

SQLwith子查询

2022-09-01 16:42:47

MySQL数据库架构

2022-06-26 06:32:28

MySQL数据库维护

2010-10-27 10:11:07

Oracle分页查询

2009-09-24 10:35:10

Hibernate查询

2010-11-25 14:33:26

MySQL查询分页

2010-10-21 10:28:13

SQL Server查

2021-06-28 10:25:47

MySQL语句接口

2021-06-28 10:00:32

JDBC数据库MySQL
点赞
收藏

51CTO技术栈公众号