mysql 04(多表链接查询、自关联查询、子查询、多表操作、防止sql注入)

本文深入讲解了SQL中各种连接查询的使用方法,包括内连接、外连接和自关联查询等,通过实例演示如何进行高效的数据关联操作。

1、内链接
inner join、inner join…on…(两个表的交集)

select * from students inner join classes;
# 查询students表里对应的班级
# inner join..on..取的是两个表的交集
select * from students inner join classes on students.cls_id=classes.id;
select students.*,classes.name from students inner join classes on students.cls_id=classes.id;

# 起别名
select s.*,c.name from students as s inner join classes as c on s.cls_id=c.id;

在这里插入图片描述
在这里插入图片描述
2、外链接
left join(左连接)、right join(右连接)

# 以students为基准(students里所有信息都显示,classes里没有的显示为null)
select * from students left join classes on students.cls_id=classes.id;

# 以classes为基准(classes里所有信息都显示,students里没有的显示为null)
select * from students right join classes on students.cls_id=classes.id;

在这里插入图片描述

# 查询students表里没有对应班级信息的学生
# having和where都可以
select * from students right join classes on students.cls_id=classes.id having classes.id is null;
select * from students right join classes on students.cls_id=classes.id where classes.id is null;

3、自关联查询
准备文档
在这里插入图片描述
执行创建完毕如下图:
其中id和pid自联
在这里插入图片描述

省级城市id<100,pid=0
地市级100<id<10000
鲜级城市100000<id<300000
# 查询省级市有哪些
select * from pcd  where pid=0;

# 查询北京下一级城市有哪些
# 1、第一种
select * from pcd  where pid=11;
# 2、第二种(自关联查询,执行时间快)
select * from pcd as a inner join pcd as b on a.pid=b.id  having b.name='北京';
# 3、第三种(子查询,执行时间稍微慢一点)
select * from pcd where pid = (select id from pcd where name='北京');

4、子查询

# 查询最高男生的信息
select * from students where height = (select max(height) from students);

5、mysql 从一个表查询数据插入另一个表或当前表

insert into 表名(uid,lng,lat) SELECT uuid,lng,lat FROM 表名

6、创建新表同时插入另一个表里的数据
在这里插入图片描述
7、alter table可以一次修改多个表结构
在这里插入图片描述
8、取消外键约束
在这里插入图片描述

9、防止sql注入

sql注入示例:
在这里插入图片描述
防止sql注入:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值