SQL语句-更新与连接

插入

insert into:向表中插入新纪录
一次性对全部列插入一行:

insert into tablename values(value1,value2,value3,……);

一次对部分列插入一行

insert into tablename (1,列2,列3,……) values (value1, value2, value3,……);

一次性插入多行

insert into tablename values(……),(……);
insert into tablename (1,列2,列3,……) values (value1, value2, value3,……)(value1, value2, value3,……);

更新

update:更新表中记录

update tablename set1=value1,2=value2,……, where ……;

删除记录

delete from tablename where ……;

连接join

把来自两个表或者多个表的列结合起来,条件语句使用on,不使用where

内连接:inner join

在这里插入图片描述
在表中存在至少一个匹配时返回,一般Inner可以省略,直接用Join
例:假设有一张表1

idage
120
221
322
423
524

表2:

nameage
aa20
bb26
cc22
dd24
ee20
select1.id,表2.name from1 join2 on1.age=2.age

这结果只会返回两个表中age匹配的记录

idname
1aa
1ee
3cc
5dd

左外连接:left join

在这里插入图片描述
从表1返回所有的行,即使表2中没有匹配,用Null替代

select1.id,表2.name from1 left join2 on1.age=2.age;

返回结果

idname
1aa
1ee
2null
3cc
4null
5dd

此时id为2和4的age,没有表二中的age与之匹配,则用Null替代。

右外连接:right join

在这里插入图片描述
返回右表中所有的行,即使左表没有与之对应的,用Null替代

select1.id,表2.name from1 right join2 on1.age=2.age
idname
1aa
1ee
nullbb
3cc
5dd
nullee

全连接:full join

在这里插入图片描述

select1.id,表2.name from1 cross join2 on1.age=2.age
idname
1aa
1ee
2null
3cc
4null
5dd
nullbb
nullee

笛卡尔积:cross join

……

on 和where的区别

onon条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

wherewhere条件是在临时表生成好后,再对临时表进行过滤的条件。条件不为真的就全部过滤掉。

以left join为例:
表1:

idage
110
220
330

表2:

nameage
10aa
20bb
20cc
select tab1.id, tab2.name form tab1 left join tab2 on tab1.age = tab2.age where tab2.name='aa'

此时tab1 left join tab2 on tab1.age = tab2.age会生成一张中间表,之后再用where条件过滤
中间表

idname
1aa
2bb
2cc
3null

where对中间表进行过滤

idname
1aa

再看第二条SQL

select tab1.id, tab2.name form tab1 left join tab2 on tab1.age = tab2.age and tab2.name='aa'
idname
1aa
2null
3null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值