面试中的一些必须知道的简单知识

前段时间,给cs本科生带一c#实验课。看他们就像当年的自己一样,学习没有头绪。当年的自己也很努力,但是总觉得一些学到的东西没有什么作用。这也许就是那个时候的浮躁和不安。复习一下当年的基本知识。
很久没有写博客了,这段时间很忙。

sql篇

1、左连接
以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=左表原数据数

语法:select n1,n2,n3 from ta left join tb on ta.n1= ta.n2 [这里on后面的表达式,不一定为=,也可以>,<等算术、逻辑运算符]【连接完成后,可以当成一张新表来看待,运用where等查询】
取出价格最高的五个商品,并显示商品的分类名称
select goods_id,goods_name,goods.cat_id,cat_name,shop_price from goods left join category on goods.cat_id = category.cat_id order by shop_price desc limit 5;

2、右连接
a left join b 等价于 b right join a
推荐使用左连接代替右连接
语法:select n1,n2,n3 from ta right join tb on ta.n1= ta.n2
3、内连接
查询结果是左右连接的交集,【即左右连接的结果去除null项后的并集(去除了重复项)】
mysql目前还不支持 外连接(即左右连接结果的并集,不去除null项)
语法:select n1,n2,n3 from ta inner join tb on ta.n1= ta.n2
例:现有表a
name hot
a 12
b 10
c 15
表b:
name hot
d 12
e 10
f 10
g 8
表a左连接表b,查询hot相同的数据
select a.,b. from a left join b on a.hot = b.hot
查询结果:
name hot name hot
a 12 d 12
b 10 e 10
b 10 f 10
c 15 null null
从上面可以看出,查询结果表a的列都存在,表b的数据只显示符合条件的项目
再如表b左连接表a,查询hot相同的数据
select a.,b. from b left join a on a.hot = b.hot
查询结果为:
name hot name hot
d 12 a 12
e 10 b 10
f 10 b 10
g 8 null null
再如表a右连接表b,查询hot相同的数据
select a.,b. from a right join b on a.hot = b.hot
查询结果和上面的b left join a一样
###练习,查询商品的名称,所属分类,所属品牌
select goods_id,goods_name,goods.cat_id,goods.brand_id,category.cat_name,brand.brand_name from goods left join category on goods.cat_id = category.cat_id left join brand on goods.brand_id = brand.brand_id limit 5;
理解:每一次连接之后的结果都可以看作是一张新表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值