【新星计划回顾】第八篇学习-多表联表查询(完结)

🏆🏆时间过的真快,这是导师回顾新星计划学习的第八篇文章!
在学习过程中,学员们也咨询了很多问题,我把一些问题整理以文章形式总结分享下。
最近这段时间非常忙,虽然导师首次参与新星计划活动已经在4月16日圆满结束,早想腾出时间来好好整理活动期间分享的知识点。
🏆🏆非常感谢大家的支持和活动期间的文章输出,导师也是忙里抽空给大家准备分享的内容,也是尽力了,所以分享的知识点主要是偏向于基础和基本的实战,虽然不是讲解的很系统,但是能够了解到一定的实战信息
🏆🏆期待我们的下次学习,导师将会在6月或者7月再次发起新星计划,本次活动也得到学员和平台的肯定,平台也是非常欢迎导师再次发起新星计划,非常感谢!

1、需求

在timidb数据库中,查找出角色后对应的皮肤信息,要求字段:角色ID,角色名称,皮肤名
称,皮肤价格,角色上架时间

2、创建表

2.1、角色表

主要字段:角色编号、角色名称、角色上架时间
这里的角色导师理解为王者荣耀之类的游戏人物,比如:关羽、德邦等
再比如:烈魂-黄忠、芝加哥教父-黄忠、冰雪之华-王昭君

-- 角色表(可以理解为人物)
create table db_role
(
    id int identity(1,1) primary key,    -- 角色自增编号
    roleName nvarchar(50),                -- 角色名称
    rolePublicTime datetime,            -- 角色上架时间
    createTime datetime                     -- 记录添加时间
)

1)模拟数据
模拟添加两条记录,黄忠和王昭君两个角色人物数据

insert into db_role(roleName,rolePublicTime,createTime)
values('黄忠',getdate(),getdate()),
('王昭君',getdate(),getdate())

2.2、皮肤表

主要字段:皮肤名称、皮肤价格
比如:黄忠的烈魂皮肤、黄忠的芝加哥教父皮肤、王昭君的冰雪之华皮肤

-- 皮肤信息:
create table db_skin
(
    id int identity(1,1) primary key,    -- 皮肤自增编号
    roleId int,                        -- 角色编号
    skinName nvarchar(50),                -- 皮肤名称
    skinPrice decimal(18,2),            -- 皮肤价格
    createTime datetime                    -- 记录添加时间
)

1)模拟数据
模拟添加三条记录,黄忠和王昭君对应皮肤数据


insert into db_skin(roleId,skinName,skinPrice,createTime)
values(1,'烈魂',23.6,getdate()),
(1,'芝加哥教父',33.6,getdate()),
(2,'冰雪之华',15.6,getdate())

🏆🏆 原则:Write Less Do More!
🍎🍎简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

3、内联查询

1)完整代码

select r.id,    -- 角色编号
 r.roleName,    -- 角色名称
 s.skinName,    -- 皮肤名称
 s.skinPrice,    -- 皮肤价格
 r.rolePublicTime    -- 角色上架时间
from db_role r
left join db_skin s on r.id=s.roleId

2)效果
在这里插入图片描述

4、知识点

SQL Server中的左右链接和内连接是用于在两个表之间建立关联关系的查询方法。
需要注意的是,内连接只返回匹配的行,而左连接和右连接则会返回左(或右)表中所有的记录。

4.1、内连接

内连接(Inner Join)是指只返回两个表中匹配的行。它会通过比较两个表中相同列的值来确定匹配的行。如果一行在一个表中没有匹配到另一个表中的行,则该行将不被返回。以下是一个内连接的示例:

SELECT *
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

4.2、左连接

左连接(Left Join)是指返回左边表中所有的记录和两个表中匹配的记录。如果右边表中没有匹配的行,则会在结果集中返回NUll。以下是一个左连接的示例:

SELECT *
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

4.3、右连接

右连接(Right Join)与左连接类似,只不过返回的是右边表中的所有记录和两个表中匹配的记录。以下是一个右连接的示例:

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

🍎🍎 本篇到此结束,感谢阅读的小伙伴,打个小小的ad,欢迎关注导师的公众号【有趣小馆】,导师会时不时发布一些有趣好玩的功能,欢迎关注!

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值