常用的SQL语句

唉今天面试问了个表连接的问题没有答上来,好桑心,这东西敲一敲就会啦,真是的,整理一下吧
数据库表如下:


SC(Sid,Cid,score)成绩表
Sid:学号
Cid:编号
score:成绩


Student(Sid,Sname,Sage,Ssex)学生表
Sid:学号
Sname:学生姓名
Sage:学生年龄
Ssex:学生性别


Course(Cid,Cname,Tid)课程表
Cid:课程编号
Cname:课程名称
Tid:教师编号


Teacher(Tid,Tname)教师表
Tid:教师编号
Tname:教师名字


1. 插入数据到SC数据库

insert into SC(Sid,Cid,score) values ('201043192','001','53')

插入数据.png

2. 更新SC数据库数据

update SC set Cid='003' where Sid='201043192'

update.png

3. 创建表

create table SC(Sid char(10),Cid char(5),score int(3))

4. 查询学生成绩>60的同学的学号和平均成绩

select Sid,avg(score) as avgscore from SC group by Sid having avgscore>60

平均成绩.png

由于平均成绩是分组之后才查询出来的,所以必须先分组(group by)再取平均值,group by除了可以取平均值,还可以取sum(),min(),max(),count(*)


下面重点说下表的连接:
连接方式分三种,内连接,外连接,交叉连接.
内连接用inner join 取两个表的交集
外连接包括左(外)连接和右(外)连接和全外连接
左外连接以左边的表为主表 left join
右外连接以右边的表为主表 right join
全外连接是取两个表的并集 full join
交叉连接是取两个表的笛卡尔积 cross join
下面说下常用的:一个内连接+两个外连接


tableA(sid,sname)


图片.png

tableB(sid,score)


图片.png

1. 查询所有同学的学号,姓名(使用内连接)

select tableA.sid,sname
from tableA inner join tableB
on tableA.sid=tableB.sid
内连接.png

内连接取交集

2. 查询所有同学的学号,姓名(使用左连接)

select tableA.sid,sname
from tableA left join tableB
on tableA.sid=tableB.sid
左连接.png

注意:左连接时,当sid两个表都有时,要标注是哪个表的sid,要使用左表.sid,因为左连接时,是以左边的表为基础,连接右边的表,左边表的数据应该全部显示,即使对应的右边表中某字段对应的值有空数据,也要全部显示左边的数据,右边的数据会以左边表数据为基础显示

3. 查询所有同学的学号,姓名(使用右连接)

select tableB.sid,sname
from tableA right join tableB
on tableA.sid=tableB.sid
右连接.png

右连接时,当sid两个表都有时,要标注是哪个表的sid,要使用右表.sid,因为右连接就是以右边的表为基础,连接左边的表,右边表的数据会全部显示,即使对应的左边的表种某字段对应的值有空数据,也要全部显示右边表的数据,左边的数据会以右边表数据为基础显示


你可能感兴趣的:(常用的SQL语句)