美文网首页
常用的SQL语句

常用的SQL语句

作者: zhangxinxiaowen | 来源:发表于2019-08-12 23:24 被阅读0次

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


    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语句

          本文链接:https://www.haomeiwen.com/subject/azspjctx.html