精华内容
下载资源
问答
  • MySQL数据表查询

    千次阅读 2017-10-28 15:00:48
    查询语句 在一个select语句中嵌入了另一个select语句,那么被嵌入的select语句叫做子查询语句 ...查询students表中大于平均年龄的学生信息 查询班级学生平均年龄 查询大于平均年龄的学生查询:select语句
    子查询语句
    在一个select语句中嵌入了另一个select语句,那么被嵌入的select语句叫做子查询语句
    主查询语句
    第一个select语句
    主查询和子查询的关系


    子查询的分类

    1、标量子查询(子查询语句返回的是一个值)
    查询students表中大于平均年龄的学生信息
    1. 查询班级学生平均年龄
    2. 查询大于平均年龄的学生
    子查询:select语句中嵌套select语句
    select * from students where height 主查询
    select avg(height) from students 子查询身高平均值
    将两句合并,并给子查询加小括号,提高优先级
    select * from students where age > (select avg(age)from students);

    2、列级子查询(子查询语句返回的结果为单列)
    查询有学生的班级有哪些
    1. 找出学生表中所有的班级 id
    2. 找出班级表中对应的名字
    select class_name from classes where id in (select cls_id from students);

    3、行级子查询
    查找班级年龄最大,身高最高的学生(两个条件同时出现在一个学生生身上)
    • 行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素
    select * from students where (height,age)=(select max(height),max(age) from students);

    4、表级子查询(返回多行多列的结果集)
    查询学生和学生所在的班级
    select students.name,classes.class_name from students inner join classes on students.cls_id = classes.id;
    ↓ ↓ ↓ ↓ ↓ ↓ ↓
    select students.name,classes.class_name from (多行多列的结果集)

    子查询特定关键字:in、some、any、all
    select class_name from classes where id in (select cls_id from students);
    ---any | some 比较运算符 类似in
    select class_name from classes where id = any(select cls_id from students);

    select class_name from classes where id = some(select cls_id from students);

    ---all 一般搭配 != <> 使用
    作用类似于not in
    select class_name from classes where id <> all(select cls_id from students);

    总结
    子查询的完整语句

    执行顺序


    展开全文
  • 第一篇博客,简单的写下Student类,可以实现输出每个学生信息,增加学生年龄,查询年龄大于20岁的学生,取平均值,取最大最小值,查询个层次等级人数。 运行效果如下: 这个类的成员变量有 String 型的 sid,sname 与...

    **
    第一篇博客,简单的写下Student类,可以实现输出每个学生信息,增加学生年龄,查询年龄大于20岁的学生,取平均值,取最大最小值,查询各层次等级人数。

    运行效果如下:
    在这里插入图片描述在这里插入图片描述

    这个类的成员变量有 String 型的 sid,sname 与整型的 sage,sgrade,分别表示学号、姓名、年龄和成绩。构造方法是带参数的。类的成员方法有getgetSid() getSname() getSage() getSgrade() 这几个都用于返回成员变量的值 。
    以及静态类GetAverageScore(Studentsarr[]),GetLevel(Students arr[]),GetMaxandMinGrade(Students arr[])等。
    多用到for循环遍历和输出。

    代码如下:

    ```java
    package 练习;
    
    public class Students {
    	 String sid;      //创建变量
         String sname;
         int sage;
         int sgrade;
         
         public Students(String id,String name,int age,int grade){  //构建函数
        	 sid = id;
        	 sname = name;
        	 sage = age;
        	 sgrade = grade;
         }
    
         public String getSid() {    //生成get
    			return sid;
    		}
    		public String getSname() {
    			return sname;
    		}
    		public int getSage() {
    			return sage;
    		}
    		public int getSgrade() {
    			return sgrade;
    		}
    		
    	 public static void GetAverageScore(Students arr[]) {  //计算平均分
    		   int sum=0;      
    	       for(int i=0;i<arr.length;i++)  //计算成绩总和
    	       {
    	    	   sum=sum+arr[i].getSgrade();   	     
    	       }
    	       System.out.println("\n平均成绩为:"+sum/arr.length );  //平均成绩
    	 }
    		
    	 public static void GetLevel(Students arr[]) {
    		 int A=0,B=0,C=0,D=0,E=0;  
    			for(int i=0;i<arr.length;i++)  //统计各分数等级人数
    			{
    			  switch(arr[i].getSgrade()/10) {
    			  case 10:
    			  case 9:
    				  A++;
    				  break;
    			  case 8:
    				  B++;
    				  break;
    			  case 7:
    				  C++;
    				  break;
    			  case 6:
    				  D++;
    				  break;
    			  default:
    				  E++;
    				  break;	  
    			  } 
    			}
    			System.out.println("\n优的人数为:"+A);  //输出结果
    			System.out.println("良的人数为:"+B);
    			System.out.println("中的人数为:"+C);
    			System.out.println("及格的人数为:"+D);
    			System.out.println("不及格的人数为:"+E);		
    
    		}	
    	 
    	public static void GetMaxandMinGrade(Students arr[]){   //取最高分和最低分
    		int max = 0;
    		int min = 100;
    		for(int i=0;i<arr.length;i++) {
    			if(arr[i].getSgrade()<min) {
    				min = arr[i].getSgrade();
    			}
    			if(arr[i].getSgrade()>max) {
    				max = arr[i].getSgrade();
    			}
    		}
    		System.out.println("\n最高分为:"+max);
    		System.out.println("\n最低分为:"+min);
    	}
    	
         public static void PrintStudents(Students arr[]) {  //打印学生信息
            	  System.out.println("   学号\t\t姓名\t\t年龄\t成绩");
            	  for(int i = 0;i<arr.length;i++) {    		
             		 System.out.println(" "+arr[i].getSid()+"\t"+arr[i].getSname()+"\t"+arr[i].getSage()+"\t"+arr[i].getSgrade());
             	 }
              }
         
         public static void AddStudentsAge(Students arr[]) {  //所有学生年龄加1岁
        	 System.out.println("\n将所有学生年龄增加一岁:\n");
        	 for(int i=0;i<arr.length;i++) {
        		arr[i].sage = arr[i].sage + 1;
        	 } 	 
         }
             
         public static void QueryStudentsAge(Students arr[]) {  //查找年龄大于20岁的学生
        	 System.out.println("\n年龄大于20岁的学生信息如下:\n");
        	 for(int i=0;i<arr.length;i++) {
        		 if(arr[i].sage>20){
        			 System.out.println(" "+arr[i].getSid()+"\t"+arr[i].getSname()+"\t"+arr[i].getSage()+"\t"+arr[i].getSgrade());
        		 }
        	 }
        		
           
         }
         
         public static void main(String[] args) {
        	
        	 Students[] students = new Students[9];   //创建数组 	 
        	 students[0] =new Students("3228005210","student1",18,97); //初始化数组
        	 students[1] =new Students("3228005211","student2",17,88);
        	 students[2] =new Students("3228005212","student3",16,60);
        	 students[3] =new Students("3228005213","student4",20,45);
        	 students[4] =new Students("3228005214","student5",22,70);
        	 students[5] =new Students("3228005215","student6",19,59);
        	 students[6] =new Students("3228005216","student7",19,77);
        	 students[7] =new Students("3228005217","student8",18,100);
        	 students[8] =new Students("3228005218","student9",22,98);
        	 PrintStudents(students);   //调用打印学生信息
        	 AddStudentsAge(students);  //调用增加学生年龄
        	 PrintStudents(students);   //调用打印学生信息   	
        	 QueryStudentsAge(students);  //调用查询年龄大于20岁的学生
        	 GetAverageScore(students);  //取平均值
        	 GetMaxandMinGrade(students);  //取最大最小值
        	 GetLevel(students);   //查询各等级人数
         }
    
    	
    
    }
    
    
    
      
    

    注:如果要随机产生成绩,调用 score[k] = (int) (Math.random( ) * 101); 即可

    展开全文
  • 查询

    2019-10-03 21:16:38
    查询和子查询的关系 子查询是嵌入到主查询中 子查询是辅助主查询的,要么充当条件,要么充当数据源 子查询是可以独立存在的语句,是一条完整的 select 语句 ... 查询大于平均年龄的学生 查...

    主查询和子查询的关系

    • 子查询是嵌入到主查询中
    • 子查询是辅助主查询的,要么充当条件,要么充当数据源
    • 子查询是可以独立存在的语句,是一条完整的 select 语句

     

    子查询分类

    • 标量子查询: 子查询返回的结果是一个数据(一行一列)
    • 列子查询: 返回的结果是一列(一列多行)
    • 行子查询: 返回的结果是一行(一行多列)

    标量子查询

    1. 查询班级学生平均年龄
    2. 查询大于平均年龄的学生

    查询班级学生的平均身高

    select * from students where age > (select avg(age) from students);
    

    列级子查询

    • 查询还有学生在班的所有班级名字
      1. 找出学生表中所有的班级 id
      2. 找出班级表中对应的名字
    select name from classes where id in (select cls_id from students);
    

    子查询中特定关键字使用

    • in 范围
      • 格式: 主查询 where 条件 in (列子查询)

     

    行级子查询

    • 需求: 查找班级年龄最大,身高最高的学生
    • 行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素
    select * from students where (height,age) = (select max(height),max(age) from students);

     

     

    • 完整的select语句
    select distinct *
    from 表名
    where ....
    group by ... having ...
    order by ...
    limit start,count
    
    • 执行顺序为:
      • from 表名
      • where ....
      • group by ...
      • select distinct *
      • having ...
      • order by ...
      • limit start,count

     

    展开全文
  • 1、查询年龄在18岁到22岁的学生学号和姓名。 2、查询不同性别的学生人数 3、查询不姓张的同学的信息 4、查询每个同学的平均成绩 5、查询每个同学的最高成绩 6、查询平均大于70分的同学的学号(多表连接和嵌套) 7、...

    实验目的

    1.单表查询
    2.夺标查询
    3.数据修改
    4.删除数据

    实验内容

    1、查询年龄在18岁到22岁的学生学号和姓名。
    2、查询不同性别的学生人数
    3、查询不姓张的同学的信息
    4、查询每个同学的平均成绩
    5、查询每个同学的最高成绩
    6、查询平均分大于70分的同学的学号(多表连接和嵌套)
    7、查询每个同学的平均成绩,并按照平均成绩的降序排序
    8、查询赵丽丽的平均成绩(多表连接和嵌套)
    9、查询不及格的同学的姓名
    10、查询没有参加考试的学生的姓名
    11、查询赵丽丽选修的课程名称(多表连接和嵌套)
    12、查询没有不及格的同学的姓名
    13、删除张三的成绩
    14、修改赵丽丽的分数,分数加5

    实验步骤

    1、查询年龄在18岁到22岁的学生学号和姓名。

    select sno,sname
    from student
    where age>18 and age<22;
    
    select sno,sname
    from student
    where age between 18 and 22;
    

    在这里插入图片描述

    2、查询不同性别的学生人数

    select sex,count(*)
    from student
    group by sex;
    

    在这里插入图片描述

    3、查询不姓张的同学的信息

    select *
    from student
    where sname not like '张%';
    

    在这里插入图片描述

    4、查询每个同学的平均成绩

    select sno,avg(grade)
    from sc
    group by sno;
    

    在这里插入图片描述

    5、查询每个同学的最高成绩

    在这里插入图片描述

    6、查询平均分大于70分的同学的学号(多表连接和嵌套)

    多表查询

    在这里插入图片描述

    嵌套查询在这里插入图片描述

    7、查询每个同学的平均成绩,并按照平均成绩的降序排序

    在这里插入图片描述

    8、查询赵丽丽的平均成绩(多表连接和嵌套)

    在这里插入图片描述

    9、查询不及格的同学的姓名
    注:赵丽丽没有参加考试
    应该是<60
    在这里插入图片描述

    在这里插入图片描述

    10、查询没有参加考试的学生的姓名

    在这里插入图片描述

    11、查询赵丽丽选修的课程名称(多表连接和嵌套)
    在这里插入图片描述在这里插入图片描述
    12、查询没有不及格的同学的姓名

    SELECT sname 
    FROM STUDENT 
    where sno  in (SELECT DISTINCT sno 
    				FROM sc MINUS 
    				SELECT sno FROM sc where GRADE>60)
    

    在这里插入图片描述

    select sname
    from student
    where sno in(select sno
                 from sc
                 where sno not in(select sno
                                 from sc
                                 where grade<60));
    

    在这里插入图片描述

    select sname
    from student,sc
    where student.sno = sc.sno
    group by sname
    having min(grade)>= 60;
    

    在这里插入图片描述
    相关子查询,查询1次

    select sname
    from student
    where(select min(grade)
         from sc
         where student.sno = sc.sno)>=60;
    

    在这里插入图片描述

    图片应该是>60
    13、删除张三的成绩

    delete from sc
    where sno =(select sno
                 from student
                 where sname ='张三');
    
    

    在这里插入图片描述

    14、修改赵丽丽的分数,分数加5
    在这里插入图片描述
    附加题:
    1、修改赵三的分数,分数+5
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    查询所有学生姓名及那些选课的学生对应的成绩

    左链接
    在这里插入图片描述
    右链接
    在这里插入图片描述

    查询有先行课的课程名称及对应的先行课的课程名

    在这里插入图片描述

    内连接
    在这里插入图片描述

    ps:书上的知识体系很完整,还是值得翻看一下的

    展开全文
  • 查询大于平均年龄的学生: select * from students where age > (select avg(age) from students); 例2. 查询学生在班的所有班级名字: select name from classes where id in (select cls_id from students where ...
  • 查询 1.子查询的介绍 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部...查询大于平均年龄的学生: select * from students where age > (select avg(age) from
  • (9)找出选修“数据库”课程,且成绩大于90的学生姓名 (10)找出张平所选修全部课程的课程名和成绩 (11)找出选修了所有课程的学生的学号 (12)找出选修了学号为“98001”的学生所选修所有课程的学生姓名 (13)...
  • 目录集合查询[例 3.64] 查询计算机科学系的学生及年龄不大于19岁...基于派生表的查询[例3.57]找出每个学生超过他自己选修课程平均成绩的课程号数据更新数据插入insert[例3.72] 对每一个系,求学生的平均年龄,并把结果
  • msyql基础8-子查询

    2019-04-22 20:13:57
    例如:查询成绩大于平均成绩的学生 先要查出平均成绩,为一个值,此为标量子查询 2)列子查询 //子查询返回的结果是一列 例如:查询年龄为17,18的学生信息 先要查出来17,18岁的学生id 利用 in...
  • 文章目录集合查询【例...基于派生表的查询【例】找出每个学生超过他自己选修课程平均成绩的课程号【例】查询所有选修了1号课程的学生姓名,可以用如下查询完成:数据更新【例3.72】对每一个系,求学生的平均年龄,并把
  • MySQL_子查询

    2019-12-21 20:12:39
    查询的介绍 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询. 主查询可子查询的关系: ...查询大于平均年龄的学生 select *...
  • MySQL数据库子查询

    2020-10-20 08:03:32
    目录 1. 子查询的介绍 2. 子查询的使用 3. 小结 1. 子查询的介绍 ...在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句... 查询大于平均年龄的学生: mysql> selec.
  • MySql子查询

    2018-06-13 22:22:00
    出现在其他SQL语句内的SELECT字句。(select 中 嵌套 select ) ...#查找出大于平均年龄的数据mysql> select * from stu_details where age >18.25; #将平均数的SQL语句作为子查询放入上一条语句中mysq...
  • 数据库MySQL之子查询

    2021-01-15 08:56:23
    查询 1. 子查询的介绍 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个... 查询大于平均年龄的学生: select * from students where age > (sele.
  • 数据库查询题目1-10

    2021-03-23 22:53:10
    1 与“张三”同乡的男生姓名 2 选修了赵露老师所讲课程的学生人数 3 查询没学过“王”姓老师课的同学的学号、姓名 ...9 查询所在班级和该班内学生的年龄之和,(要求该班级中每个人的年龄大于20岁)
  • 查询平均成绩大于60分同学学号和平均成绩; 查询所有同学学号、姓名、选课数、总成绩; 查询课程编号“01”成绩比课程编号“02”课程低所有同学学号、姓名; 查询没学过“张三”老师课同学学号...
  • MySQL 单表查询习题

    2019-08-05 19:48:36
    查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生年龄降序排 查出每个人的地址合并为一个字段address 将每门课程的最高分分按从高到低排序,并指出是哪位同学 统计总计有多少门课程 ...
  • VF 查询与视图

    2010-06-28 16:09:24
    3、 建立视图名为学生平均成绩,包含学生的姓名,学号,平均成绩 4、 视图可以更新表中数据吗? 5、 用视图成绩视图更新xsgl中姓名字段(把李永年改为李年年) 6、 建立视图V1 ,输出奖学金大于等于200学号,...
  • SQL查询学习

    2018-09-28 16:46:00
    student(学号#,姓名,性别,年龄) course(课程号#,课程名,教师号#) score(学号#,课程号#,成绩) teacher(教师号#,教师名) 查询平均成绩大于60分同学学号和平均成绩 select stuNo,avg(score) from score group ...
  • 一个sql查询问题

    2009-11-30 15:35:37
    给了3张表: 学生表student {学号sid,姓名sname,性别sex,年龄age,院系dept} 课程表Course{课号cid,课程名称cname...2.查询院系人数大于100系 人数和平均年龄 3.查询所有成绩都超过80分学号 姓名
  • 9. 按系统计各系学生的平均年龄,结果按降序排列; 10. 查询每门课程课程名; 11. 查询无先修课课程课程名和学时数; 12. 统计无先修课课程学时总数; 13. 统计每位学生选修课程门数、学分及其平均...
  • 请书写下面的SQL语句: Student(Sid ,Sname,Sage,Ssex)学生表(学号,学生姓名,年龄,性别) Course(Cid,Cname,Tid)课程表(课程编号,课程名,教师id...1.查询平均成绩大于60分的学生的学号和平均成绩 selec...
  • T-SQL高级查询

    2015-04-26 14:17:13
    查询班级的学生年龄大于班级的学生年龄的信息 select * from student where cid = 5 and age > all ( select age from student where cid = 3 ); select * from student where cid = 5 and age > any ( select...
  • 给了3张表: 学生表student {学号sid,姓名sname,性别sex,年龄sage,院系dept} 课程表source {课号cid,课程名称cname,学分...2.查询院系人数大于100系 人数和平均年龄 3.查询所有成绩都超过80分学号...
  • 19) 求年龄大于女同学平均年龄的男同学姓名和年龄 20) 求年龄大于所有女同学年龄的男同学姓名和年龄 21) 查询至少选修了95002选修的全部课程的学生号码 22) 查询95001和95002两个学生都选修的课程的信息...
  •  实例335 利用聚合函数AVG求某班学生的平均年龄 490  实例336 利用聚合函数MIN求销售额、利润最少商品 492  实例337 利用聚合函数MAX求月销售额完成最多员工 493  实例338 利用聚合函数COUNT求日...
  •  A查询方式有:按考试编号精确查询、按考生姓名模糊查询、按总得分大于查询、按本次排名、按所在班级集体查询。  B查询内容是由不同的查询方式产生结果。查询内容除了下拉选择之外你还能手工输入内容进行...
  • 1.1子查询 在一个select语句中,嵌入另一个select语句,那么被嵌入的select语句称为子查询语句; 子查询分类; (1)标量子查询:子查询返回结果为...查询大于平均年龄的学生 select * from students where age &g...
  • 数据库练习题2

    2021-03-31 19:29:22
    查出表中年龄大于平均年龄的信息 查出0305班所有男生信息 查询张三所在班级的名称 练习: 学生表:学号,姓名,性别,年龄,所在系 课程表:课程编号,课程名称,课程学分 选课表:学号,课程号,成绩 1:查询与刘晨...

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

查询年龄大于平均年龄的学生