• SQL(一)—— 模糊查询


    模糊查询
      1.使用like关键字进行模糊查询,需要通配符配合使用
      通配符:
        "_":表示任意一个字符,除了空字符
        "%":表示任意 一个字符串
        "[]":表示指定范围内的一个字符
        "[^]":表示指定范围外的一个字符
      2.使用in关键字进行模糊查询。in表示指定的数据范围

    多表查询,重点在连接(inner join,right join,left join,full join)
      内连接(inner join):
        select 表1名.列1,表2名.列1... from 表1 inner join 表2
        on 表1.主键=表2.外键;
      右连接查询(right join):
        select 表1名.列1,表2名.列1... from 表1 right join 表2
        on 表1.主键=表2.外键;
      左连接查询(left join)
        注意:指查询的时候以左表为主,把左表的信息都查询出来,其他没有的数据的使用null表示
        select 表1名.列1,表2名.列1... from 表1 left join 表2
        on 表1.主键=表2.外键;
      完全连接查询(full join)
        select 表1名.列1,表2名.列1... from 表1 full join 表2
        on 表1.主键=表2.外键;

    视图

      定义:视图就是一个虚拟的表,视图就是封装了一个查询结果。

        也就是是说视图就是对应一个“结果集“。
      作用:方便查询。
      创建:create view 视图名 as 查询指令(一般是连接指令)
      例:create view myview as select stu.sname,stu.sex,stu.tel,kemu.kname,score.fenshu from stu
       inner join score on stu.sid=score.sid inner join kemu
       on kemu.kid=score.kid;

    聚合函数(max(),min(),sum(),avg(),count())
      注意:聚合函数只针对列进行运算
      分组查询(group by ),按照某列分组,分组后再分别查询
      查询每个学生的总分。先按照学生分组,每组分别求和
        select sname,sum(fenshu) from myview group by sname ;
      having子句,表示分组查询后再添加查询条件
      比如,查询总分高于200分的学生
        select sname,sum(fenshu) from myview group by sname
        having sum(fenshu)>200;
    例:

    查询田某同学的基本信息
    select * from studentInfo where sname like '田_';--"_":表示任意字符但是不能为空字符
    select * from studentInfo where sname like '田%';--"%":表示任意一个字符串
    select * from studentInfo where sname like '[天田填舔][陈晨]';--"[]":表示指定范围内的一个字符
    select * from studentInfo where sname like '[天田填舔][^陈晨][罐关贯]';
    --"[^]":表示指定范围外的一个字符
    update scoreInfo set score=score+3 where score in (93,87,56,32);
    --使用in关键字进行模糊查询,in表示指定的数据范围
    select * from scoreInfo where score between 60 and 80 ;

    --内连接查询:inner join
    select studentInfo.sno,studentInfo.sname,studentInfo.sage,studentInfo.gender,studentInfo.department,
    courseInfo.cno,courseInfo.cname,
    scoreInfo.score
    from courseInfo inner join scoreInfo on courseInfo.cno=scoreInfo.cno
    inner join studentInfo on studentInfo.sno=scoreInfo.sno
    order by scoreInfo.sno asc;
    --左连接查询:left join
    select studentInfo.sno,studentInfo.sname,scoreInfo.cno,scoreInfo.score
    from studentInfo left join scoreInfo on studentInfo.sno=scoreInfo.sno
    order by studentInfo.sno asc;
    --右连接查询:right join
    select studentInfo.sno,studentInfo.sname,scoreInfo.cno,scoreInfo.score
    from studentInfo right join scoreInfo on studentInfo.sno=scoreInfo.sno
    order by studentInfo.sno asc;
    --视图
    create view myview as
    select studentInfo.sno,studentInfo.sname,studentInfo.sage,studentInfo.gender,studentInfo.department,
    courseInfo.cno,courseInfo.cname,
    scoreInfo.score
    from courseInfo inner join scoreInfo on courseInfo.cno=scoreInfo.cno
    inner join studentInfo on studentInfo.sno=scoreInfo.sno ;

    select * from myview ;
    select * from Allview ;

  • 相关阅读:
    解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
    qemu vm setup network(ssh) with buildroot
    C: 当字符数组首指针转化成char *指针,sizeof(*ptr)不为array的size
    C 利用strtok, feof 截取字符串
    LINUX C: 获取本地指定网卡的IP地址
    C语言比较好的风格梳理
    perf-perf stat用户层代码分析
    内核调试-perf introduction
    内核调试-ftrace introduction
    【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
  • 原文地址:https://www.cnblogs.com/myfaith-feng/p/7783465.html
Copyright © 2020-2023  润新知