zoukankan      html  css  js  c++  java
  • Sql语句基础练习(一)

    1、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。(表名:成绩表。字段名:课号,学号,成绩。)
    SELECT 学号,成绩 FROM 成绩表 WHERE 课号=1 AND 成绩>80 ORDER BY 成绩 DESC
     
    2、列出非软件专业学生的名单。(表名:学生表。字段名:学号,性别,姓名,专业。)
    SELECT 姓名 FROM 学生表 WHERE  专业 not in ('软件')
     
    3、查询成绩在70~80分之间的学生选课得分情况。(表名:选课表。字段名:课号,学号,成绩。)
    SELECT * FROM 选课表 WHERE 成绩 BETWEEN 70 AND 80
     
    4、列出选修1号课或3号课的全体学生的学号和成绩。(表名:选课表。字段名:课号,学号,成绩。)
    方法一:SELECT 学号,成绩 FROM 选课表 WHERE 课号=1 OR 课号=3
    方法二:SELECT 学号,成绩 FROM 选课表 WHERE 课号 IN (1,3)
     
    5、列出所有98级学生的学生成绩情况。(表名:选课表。字段名:课号,学号,成绩,班级。)
    SELECT * FROM 选课表 WHERE 学号 LIKE "98%"
     
    6、列出成绩为空值(或不为空值)的学生的学号和课号。(表名:选课表。字段名:课号,学号,成绩。)
    答案一:SELECT 学号,课号 FROM 选课表 WHERE 成绩 IS NULL
    答案二:SELECT 学号,课号 FROM 选课表 WHERE 成绩 IS NOT NULL
     
    7、求出所有学生的总成绩。(表名:选课表。字段名:课号,学号,成绩。)
    SELECT SUM(成绩) AS 总成绩 FROM 选课表
     
    8、列出每个学生的平均成绩。(表名:选课表。字段名:课号,学号,成绩。)
    SELECT 学号,AVG(成绩) AS 平均成绩 FROM 选课表 GROUP BY 学号
     
    9、列出各科的平均成绩、最高成绩、最低成绩和选课人数。(表名:选课表。字段名:课号,学号,成绩。)
    SELECT 课号,AVG(成绩) AS 平均成绩,MAX(成绩) AS 最高分,MIN(成绩) AS 最低分,COUNT(课号) AS 选课人数
    FROM 选课表 GROUP BY 课号
     
    10、列出选修1号课的学生姓名及成绩。【表名:学生表(字段名:学号,性别,姓名,专业。)】;【表名:成绩表(字段名:课号,学号,成绩。)】
    SELECT 姓名,成绩 FROM 学生表,成绩表 WHERE 学生表.学号=成绩表.学号 AND 课号=1
     
    11、列出选修1号课的学生的学号、姓名及成绩。【表名:学生表(字段名:学号,性别,姓名,专业。)】;【表名:成绩表(字段名:课号,学号,成绩。)】
    SELECT 学生表.学号,姓名,成绩 FROM 学生表,成绩表 WHERE 学生表.学号=成绩表.学号 AND 课号=1
     
    12、求出总成绩大于150的学生的学号、姓名及总成绩。【表名:学生表(字段名:学号,性别,姓名,专业。)】;【表名:成绩表(字段名:课号,学号,成绩。)】
    SELECT 学生表.学号,学生表.姓名,SUM(成绩) AS 总成绩 FROM 学生表,成绩表
    WHERE 学生表.学号=成绩表.学号 GROUP BY 学生表.学号,学生表.姓名 HAVING SUM(成绩)>150
     
    13、实战基础题一
    Student(S#,Sname,Sage,Ssex) 学生表
    Course(C#, Cname ,T#) 课程表
    SC(S#, C#, score)成绩表
    Teacher (T#, Tname) 教师表
     
    1,查询平均成绩大于60分的同学的学号和平均成绩;
    select SC.s#,avg(SC.score)
    from SC
    group by SC.s#
    having avg(SC.score)>60;
    2,查询所有同学的学号,姓名,选课数,总成绩;
         select d.s#,d.sname,count(distinct s.c#),sum(s.score)
        from Student d,SC s
         where d.s#=s.s#
          group by  d.s#, d.sname;
    3,查询所有课程成绩小于60分的同学的学号,姓名
    SELECT stu.S#,stu.Sname FROM SC sc, student stu
     WHERE stu.S# = sc.S# GROUP BY stu.S# ,stu.Sname
     HAVING MAX(sc.score) < 60;
    4,删除学习'叶平'老师课的SC 表记录;
    DELETE  FROM  SC WHERE   S#
    IN (
       SELECT DISTINCT sc.S# FROM SC sc, course c, teacher t
       WHERE sc.C# = c.C# AND c.T# = t.T#
       AND t.tname = '叶平');
    delete from SC where C# in
    (select C# from Course,Teacher where Course.T#=Teacher.T#
    AND Tname='叶平' );
    delete from SC where C# in
    (SELECT C# from Course where T# in
    (select T# FROM Teacher WHERE Tname='叶平' ) );

    5,查询各科成绩最高和最低的分:以如下形式显示:课程ID, 最高分,最低分。
    select C# 课程ID, max(score) 最高分 ,min(score) 最低分
    from SC
    GROUP BY C#;
     
    14、实战基础题二
    有两张表: 部门表department 部门编号dept_id 部门名称dept_name
    员工表employee 员工编号emp_id 员工姓名emp_name 部门编号dept_id 工资emp_wage
    根据下列题目写出sql:
    1、列出工资大于5000的员工所属的部门名、员工id和员工工资
    select a.dept_name,  b.emp_id , b.emp_wage
     from department a , employee b
     where a.dept_id= b.dept_id and b.emp_wage> 5000;
    2、列出员工表中的部门id对应的名称和员工id (左连接)
    select   a.dept_id , b.dept_name,a.emp_id  from employee a
    left join department b
    on a.dept_id= b.dept_id;
    3、列出员工大于等于2人的部门编号
    select dept_id,count(emp_id) from employee group by dept_id having count(emp_id)>=2;
    4、列出工资最高的员工姓名
    select emp_name ,emp_wage
     from employee
     where emp_wage = (select max(emp_wage) from employee);
    select  emp_name,max(emp_wage) 
    from employee
    group by emp_name
    having max(emp_wage) = (select max(distinct emp_wage) from employee);
    5、求各部门的平均工资
    select a.dept_id,a.dept_name ,avg(emp_wage)
    from department a,employee b 
    where a.dept_id= b.dept_id
    group by a.dept_id,a.dept_name;
    6、求各部门的员工工资总额
    select a.dept_id,a.dept_name ,sum(emp_wage)
    from department a,employee b 
    where a.dept_id= b.dept_id
    group by a.dept_id,a.dept_name;
    7、求每个部门中的最大工资值和最小工资值,并且它的最小值小于5000,最大值大于10000
    select dept_id , max(emp_wage) 最高工资, min(emp_wage) 最低工资
     from employee
    group by dept_id
    having  max(emp_wage)>10000 and min(emp_wage)<5000;

    8、假如现在在库中有一个和员工表结构相同的空表employee2,请用一条sql语句将employee表中的所有记录插入到employee2 中。
     insert into employee2 select * from employee;
     
    生命很短,请让生活更精彩一些!
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/10574910.html
Copyright © 2011-2022 走看看