• SQL基础三(例子)



    -----------聚合函数使用------------------------
    
    --1、查询student表中所有学生人数
    select count(stuno) from student
    
    --2、查询stucou表中选课的人次
    select count(*)as 选课人数 from stucou
    
    --3、查询stucou表中学生所选课程数量
    select count(distinct couno) from stucou 
    
    --4、查询stucou表中选了001课程的人数
    select count(*) from stucou where couno='001'
    
    --5、查询stucou表中第2志愿(willorder)选了001课程的人数
    select count(*) from stucou where willorder='2' and couno='001'
    
    --6、统计student2010表中籍贯与你相同(同一县、区或市)的学生人数
    select count(*) from student2010 where  jtdz like '%汕头%'
    
    --7、统计student2010表中与你同姓的学生人数
    select * from student2010 where xm like '陈%'
    
    --8、查询qypt08class表班级最多的人数
    select max(rs) from qypt08class
    
    --9、查询qypt08class表护理学院的班级最少人数
    select min(rs) from qypt08class
    
    ---------分组统计(group by子句使用)--------------------
    
    
    --1、统计student2010表中男、女生人数
    select xb, count(xb) from student2010 group by xb
    
    --2、统计stucou表中各门课程的选修人数
    select * from stucou
    select couno, count(*) from stucou group by couno
    
    --3、统计stucou表中每个学生选修的课程数量
    select * from stucou
    select stuno,count(*) from stucou group by stuno
    
    --4、统计student2010表中每个院系的学生人数
    select * from student2010
    select xymc,count(*) from student2010 group by xymc
    --5、统计student2010表中每个班的学生人数,显示yxmc,bj及对应的人数,并按人数由多到少排序
    select * from student2010
    select bjmc,xymc,count(*) as 人数 from student2010 group by bjmc,xymc order by 人数 desc
    --6、统计student2010表中各民族学生人数,并按人数由少到多排序
    select mz,count(*) from student2010 group by mz order by count(*)
    
    --7、在student2010表分专业统计男、女生人数,按专业名称排序
    select zymc,xb,count(*) as 人数 from student2010 group by zymc,xb order by 人数 desc
    
    
    -------------------对分组统计的结果进一步筛选(having子句使用)------------------------------
    
    --1、查询qypt08class表中各院系的人数,只显示人数多于400的记录
    select * from qypt08class
    select yx,sum(rs) from qypt08class group by yx having sum(rs)>400
    --2、统计stucou表中各门课程的选修人数,只显示人数少于30的记录(显示couno及对应的人数)
    select * from stucou
    select couno,count(*) from stucou group by couno having count(*)<30
    --3、查询student2010表中人数多于70人的班级的xymc、zymc、bjmc及rs(人数)
    select * from student2010
    select xymc,zymc,bjmc,count(*) from student2010 group by xymc,zymc,bjmc having count(*)>20
    --------------------coupute子句使用----------------------
    
    
    
    --1、在qypt08class中统计每个院系人数多于60的班级数,并显示统计的明确
    
    
    
    
    
    
    
    
    
    -------------------------将查询保存为新表(into)--------------------
    
    
    --1、查询student2010表的xymc、zymc、bjmc、xh、xm五个字段内容,并将查询结果保存到新表student2010A中
    
    --查询表student2010A的内容,检验上题操作结果
    
    
    
    --2、统计student2010表中每班的人数(rs),并将结果保存到新表class2010,新表包含xymc、zymc、bjmc、rs四个字段
    
    --查询表class2010的内容,检验上题操作结果
    
    
    
    --3、查询表student2011中所有女生的信息,并将结果保存到表girl2011中
    
    
    
    ------使用嵌套子查询完成1-7题----------
    
    --1、在qypt08student表中查询和“陈小梅”在同一班级的所有男同学的信息。
    select * from qypt08student where bjmc in (select bjmc from qypt08student where xm='陈小梅') and xb=''
    
    
    --2、在qypt08student表中查询和“黄巧”在同一院系的所有女同学的信息。
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb=''
    
    --3、在qypt08student表中查询和“黄巧”在同一院系的所有陈姓女同学的信息。
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb='' and xm like '陈%'
    --4、查询course表中最多人选修的课程信息(willnum最大)
    select * from course where willnum in (select max(willnum) from course)
    
    --5、查询course表中最少人选修的课程信息(willnum最小)
    select * from course where willnum=(select min(willnum) from course)
    
    --6、查询course表中选修人数大于平均选修数的课程信息
    select * from course 
    select  from course
    --7、查询course表中选修人数少于平均选修数的课程信息
    
    
    
    ------使用相关子查询完成以下题目----------
    
    --8、查询所有有选修课的学生信息
    
    
    --9、查询没有选修课程的学生信息
    
    
    --10、查询没有人选修的课程信息
    
    
    --11、查找选修了课程号为002的课程的学生信息
    
    
    --12、查找20000001班没有选修课程号为004的课程的学生信息
    
    
    --13、查找选修了“智能建筑”课程的学生信息

    ------使用嵌套子查询完成1-7题----------
    
    --1、在qypt08student表中查询和“陈小梅”在同一班级的所有男同学的信息。
    select * from qypt08student where bjmc in (select bjmc from qypt08student where xm='陈小梅') and xb='男'
    
    
    --2、在qypt08student表中查询和“黄巧”在同一院系的所有女同学的信息。
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb='女'
    
    --3、在qypt08student表中查询和“黄巧”在同一院系的所有陈姓女同学的信息。
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb='女' and xm like '陈%'
    --4、查询course表中最多人选修的课程信息(willnum最大)
    select * from course where willnum in (select max(willnum) from course)
    
    --5、查询course表中最少人选修的课程信息(willnum最小)
    select * from course where willnum=(select min(willnum) from course)
    
    --6、查询course表中选修人数大于平均选修数的课程信息
    select * from course 
    select  from course
    --7、查询course表中选修人数少于平均选修数的课程信息
    
    
    
    ------使用相关子查询完成以下题目----------
    
    --8、查询所有有选修课的学生信息
    
    
    --9、查询没有选修课程的学生信息
    
    
    --10、查询没有人选修的课程信息
    
    
    --11、查找选修了课程号为002的课程的学生信息
    
    
    --12、查找20000001班没有选修课程号为004的课程的学生信息
    
    
    --13、查找选修了“智能建筑”课程的学生信息
    
    

    --1、在qypt08student表中查询和“陈小梅”在同一班级的所有男同学的信息。
    select * from qypt08student where bjmc in (select bjmc from qypt08student where xm='陈小梅') and xb=''
    
    --2、在qypt08student表中查询和“黄巧”在同一院系的所有女同学的信息。
    
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb=''
    --3、在qypt08student表中查询和“黄巧”在同一院系的所有陈姓女同学的信息。
    
    select * from qypt08student where yx=(select yx from qypt08student where xm='黄巧' ) and xb='' and xm like '陈%'
    --4、查询course表中最多人选修的课程信息(willnum最大)
    select * from course where willnum in (select max(willnum) from course)
    
    --5、查询course表中最少人选修的课程信息(willnum最小)
    
    select * from course where willnum=(select min(willnum) from course)
    
    --6、查询course表中选修人数大于平均选修数的课程信息
    select avg(willnum) from course 
    select * from course where willnum > (select avg(willnum) from course )
    
    --7、查询course表中选修人数少于平均选修数的课程信息
    select * from course where willnum < (select avg(willnum) from course )
    
    
    --8、查询所有有选修课的学生信息
    select * from student 
    select * from course
    select distinct stuno from stucou
    select * from student where stuno in (select distinct stuno from stucou)
    --9、查询没有选修课程的学生信息
    select * from student where stuno not in  (select distinct stuno from stucou)
    
    --10、查询没有人选修的课程信息
    select * from course where willnum ='0'
    
    --11、查找选修了课程号为002的课程的学生信息
    select stuno from stucou where couno ='002'
    select * from student where stuno in (select stuno from stucou where couno ='002')
    --12、查找20000001班没有选修课程号为004的课程的学生信息
     select * from class where classno ='20000001'
    select * from course where couno not ='004'
    
    --13、查找选修了“智能建筑”课程的学生信息
    
    
    --14、查询成绩表中大于平均分的学生信息
    
    
    --15、查询已经选修了课程的学生信息
    
    
    
    --视图练习
    --------------------------------------------------------------------------------
    --第一题
    --1、使用企业管理器创建视图,要求数据表的来源为:department,class,student三个表
    -----显示学生每个学生所属的院系名称、班级名称、学号及姓名,视图保存为v_student
    
    --2、在查询分析器中查看视图V_student的数据
    
    --3、使用T-SQL语句创建一视图,要求数据表的来源为:department,class,student三个表
    -----显示学生每个学生所属的院系名称、班级名称、学号及姓名,视图保存为v_student2
    
    --4、在查询分析器中查看视图V_student2的数据
    
    --第二题
    --1、使用企业管理器创建视图,数据表的来源为:class,student,course,stucou四个表
    -----显示每个学生的班级名称、学号、选修的课程名称,视图保存为v_cou
    
    --2、在查询分析器中查看视图V_cou的数据
    
    --3、使用T-SQL语句创建一视图,数据表的来源为:class,student,course,stucou四个表
    -----显示每个学生的班级名称、学号、选修的课程名称,视图保存为v_cou2
    
    --4、在查询分析器中查看视图V_cou2的数据
    
    --第三题
    --1、使用企业管理器创建视图,数据表的来源为:department,class,student,course,stucou五个表
    -----显示每个学生所属系部名称,班级名称、学号、姓名、选修的课程名称,视图保存为v_cou2A
    
    --2、在查询分析器中查看视图V_cou2A的数据
    
    --3、使用T-SQL语句创建一视图,数据表的来源为:department,class,student,course,stucou五个表
    -----显示每个学生所属系部名称,班级名称、学号、姓名、选修的课程名称,视图保存为v_cou2B
    
    --4、在查询分析器中查看视图V_cou2B的数据
    
    --第四题
    --1、使用T-SQL语句创建一视图,命名为V_stunocou。要求数据表的来源为stucou,course两个表
    -----显示学生的学号及所选课程的名称,并加密视图的定义
    
    --2、在查询分析器中查看视图V_stunocou的数据

    --1、检索student2010表中学制(XZ)为2年的学生信息
    
    --2、检索student2010表中班级名称(BJMC)为“2010计算机网络技术1班”的学生信息
    
    --3、检索student2010表中专业名称(ZYMC)为“计算机网络技术”的学生信息,按姓氏排序显示
    
    --4、检索student2010表中专业名称(ZYMC)为“计算机网络技术”的学生的学号、姓名字段,字段名用中文显示
    
    --5、检索stucou表中选修了004、009、010及015课程的记录
    
    --6、检索student2010表中姓名最后一个字为“华”的女学生信息
    
    --7、检索student2010表中清新籍学生的信息
    
    --8、显示qypt08student表中的系部名称(不重复显示)
    
    --9、显示stucou表中所有willorder为1的记录
    
    --10、显示stucou表中所有couno为003的记录
    
    --11、显示stucou表中所有willorder为1且couno为003的记录
    
    --12、显示stucou表中所有willorder为2到4的记录
    
    --13、显示qypt08class表中备注(bz)不为空的记录
    
    --14、显示qypt08student表中所有学号末位为1的记录
    select * from qypt08student where xh like '%1'
    --15、显示qypt08student表中每个班的学号为1号的记录
    select * from qypt08student where xh like '%01'
    --16、显示qypt08student表中所有姓‘张’的记录
    select * from qypt08student where xm like '张%'
    --17、显示qypt08student表中所有姓‘张’且姓名只包含两个字的记录
    select * from qypt08student where xm like '张_'
    --18、显示qypt08student表中所有姓‘张’且姓名只包含两个字的女性记录
    select * from qypt08student where xm like '张_' and xb like '女'
    --19、显示student表中Pwd的首末两位均为7的记录
    select * from student where pwd like '7%7' 
    --20、显示qypt08student表中所有姓‘张’且姓名只包含三个字的记录
    select * from qypt08student where xm like '张%' and xm not like '张_'
    --21、显示qypt08student表中所有姓‘张’且姓名只包含三个字的男性记录
    select * from qypt08student where xm like '张%' and xm not like '张_' and xb like '男'
    --22、显示qypt08student表中所有姓张、李、刘的记录
    select * from qypt08student where xm like '[张,李,刘]%'
    --23、检索student2010表中身份证号码(SFZH)的最后一位为数字的学生信息
    select * from student2010 where sfzh like '%[0-9]'
    
  • 相关阅读:
    web页面性能优化之接口前置
    python大佬养成计划----flask_bootstrap装饰网页
    撸个查询物流的小程序,欢迎体验
    FullCalendar插件的基本使用
    GeekforGeeks Trie
    使用Django和Python创建Json response
    nginx-gridfs的安装
    Linux kernel config and makefile system
    hadoop日志分析
    安装STS报错(三)
  • 原文地址:https://www.cnblogs.com/tcheng/p/5959073.html
Copyright © 2020-2023  润新知