zoukankan      html  css  js  c++  java
  • SQL常用语句例子

    一、单表查询练习

    1、查询<学生信息表>,查询学生"张三"的全部基本信息 Select *

    from A_studentinfo

    where sname=张三

    2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息 Select *

    from A_studentinfo

    where sname=张三 or sname=李四

    3、查询<学生信息表>,查询姓"张"学生的基本信息 Select *

    from A_studentinfo

    where sname like 张%

    4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息 Select *

    from A_studentinfo  where sname like %四%

    5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。 select *

    from A_studentinfo where sname like 李_强

    6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。 Select *

    from A_studentinfo  where sname like 张% or sname like 李%

    7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息 Select *

    from A_studentinfo

    where sname like 张%  and province=北京

    8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息 Select *

    from A_studentinfo

    where province in (北京,上海,新疆,山东)

    9、查询<学生信息表>,查询姓"张",但是"所属省份"

    不是"北京"的学生信息 Select *

    from A_studentinfo

    where sname like 张%  and province !=北京

    10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序 select *

    from A_studentinfo

    order by sex,province,class

    11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份

    select distinct province as 省份 from A_studentinfo

    12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩 Select *

    from A_studentcourse  where score is null

    13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序 Select *

    from A_studentcourse  where score is not null order by score desc

    二、聚合函数练习

    1、统计<学生信息表>,统计共有多少个学生 Select count (*) as 学生数量 from A_studentinfo

    2、统计<学生信息表>,统计年龄大于20岁的学生有多少个

    Select count(*)  as 学生数量 from A_studentinfo

    where (2008-yearofbirth)>20

    3、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数

    select count(*) as 学生数量 from A_studentinfo

    where enrollment between 1998-01-01 and 2003-12-30

    对比以下查询方式,看看有何不同,为什么? select count(*) as 学生数量

    from A_studentinfo

    where enrollment between 1998 and 2003

    4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩

    Select  avg(score)  as 平均成绩 from A_studentcourse where sno=S001

    5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩

    select  sum(score)  as 总成绩 from A_studentcourse  where sno =S001

    6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩

    select max(score)  as 最高成绩 from A_studentcourse where cno=C001

    7、统计<学生信息表>,查询所有学生中的最大年龄是多少

    select  2008-min(yearofbirth) as 最大年龄 from  A_studentinfo

    三、分组查询练习

    1、统计<学生选修信息表>,统计每个课程的选修人数 select cno,count(*)  as 学生数量 from A_studentcourse group by cno

    2、统计<学生选修信息表>,统计每个同学的总成绩 select sno,sum(score) as 总成绩 from A_studentcourse group by sno

    3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序

    select class as 班级,sex as 性别, count(*) as 人数 from A_studentinfo group by class,sex order by class

    4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序

    Select cno,avg(score) as 平均成绩 from A_studentcourse

    group by cno

    order by avg(score) desc

    5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号

    Select  sno as 不及格学生学号 from A_studentcourse  where score<60  group by sno

    having count(*)>1

    6、统计<学生信息表>,统计每个班级中的最大年龄是多少

    select class as 班级, 2008-min(yearofbirth) as 最大年龄 from A_studentinfo group by class

    四、嵌套查询练习

    1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩

    select sum(score) as 高等数学总成绩 from A_studentcourse  where cno=    (select cno

    from A_courseinfo

    where subject=高等数学 )

    2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩 select score,cno

    from A_studentcourse  where sno=S001 and score =

    (select max(score)

    from A_studentcourse      where sno =S001)

    思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果 3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和

    select  sum(score) as 数据库技术总成绩 from A_studentcourse  where cno =   (select cno

    from A_courseinfo

    where subject=数据库技术)  and sno in    (select sno

    from A_studentinfo      where class="2")

    4、用子查询实现,查询3班"张三"同学的"测试管理"成绩

    select score

    from A_studentcourse  where cno=   (select cno

    from A_courseinfo

    where subject=测试管理 )  and sno in    ( select sno

    from A_studentinfo      where class="3"     and sname=张三)

    五、联接查询练习

    1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩

    select sname as 姓名,cno as 课程号,score as 成绩 from A_studentinfo,A_studentcourse

    where A_studentinfo.sno=A_studentcourse.sno

    and sname=张三 2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩

    select sname as 姓名,cno as 课程号,score as 成绩 from A_studentinfo,A_studentcourse

    where A_studentinfo.sno=A_studentcourse.sno and sname=张三 and score is null

    3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩

    select sname as 姓名,subject as 课程名称,score as 成绩 from  A_studentinfo,A_courseinfo,A_studentcourse where A_studentcourse.sno=A_studentinfo.sno and   A_studentcourse.cno=A_courseinfo.cno

    and   A_studentinfo.sname=张三

    4、查询3班"张三"的"测试管理"成绩,要求显示姓名、成绩

    select sname as 姓名,score as 成绩

    from  A_studentcourse,A_courseinfo,A_studentinfo  where A_studentcourse.cno=A_courseinfo.cno and   A_studentcourse.sno=A_studentinfo.sno and subject=测试管理 and class="3"

    and sname=张三

    5、查询所有2000年以前入学的,各班男生的各科考试平均成绩

    select class as 班级,avg(score) as 男生平均成绩 from  A_studentcourse,A_courseinfo,A_studentinfo  where A_studentcourse.cno=A_courseinfo.cno and   A_studentcourse.sno=A_studentinfo.sno

    and sex=男

    and enrollment<2000-01-01 group by class 六、外联接查询

    查询李坚强所有课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:(S009,S010,S011) 1、使用左联接

    select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as 成绩表学号, cno as 课程号,score as 成绩 from A_studentinfo

    left join A_studentcourse

    on A_studentinfo.sno=A_studentcourse.sno

    where  sname=李坚强 2、使用右联接

    select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as 成绩表学号, cno as 课程号,score as 成绩

    from A_studentcourse

    right join  A_studentinfo

    on A_studentinfo.sno=A_studentcourse.sno  where  sname=李坚强 3、对比等值连接   select sname,score

    from A_studentinfo,A_studentcourse

    where A_studentinfo.sno=A_studentcourse.sno  and sname=李坚强

    七、补充提高

    1、查询“张三”比“王三”入学早几年

    select A.sname as 姓名,year(A.enrollment) as 入学时间 ,

    B.sname as 姓名,year(B.enrollment) as 入学时间,

    datediff(year,A.enrollment,B.enrollment) as 年差 from A_studentinfo A,A_studentinfo B

    where A.sname=张三 and B.sname=王三

    2、查询所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20岁,每个班的年龄之和大于60岁 select class as 班级,sum(2008-yearofbirth) as 年龄和 from A_studentinfo

    where (2008-yearofbirth) >20 group by class

    having sum(2008-yearofbirth)>60 order by class

  • 相关阅读:
    强化学习快速入门
    Spark GraphX图计算简单案例【代码实现,源码分析】
    CDA数据分析【第二章:数据收集与导入】
    CDA数据分析实务【第一章:营销决策分析概述】
    CDA数据分析【第一章:数据分析概述】
    BLAS快速入门
    Tachyon内存文件系统快速入门
    Solr新特性【4.x,5.x,6.x,7.x】
    利用Redis keyspace notification(键空间通知)实现过期提醒
    设计模式 行为型
  • 原文地址:https://www.cnblogs.com/marveler/p/5608891.html
Copyright © 2011-2022 走看看