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;
     
    生命很短,请让生活更精彩一些!
  • 相关阅读:
    7月27日
    7月26日
    7月25日
    7月24日
    UI基础 选项卡
    UI基础 手势
    UI基础 小球拖拽
    UI基础 事件
    UI基础 自定义视图
    UI基础 视图控制器
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/10574910.html
Copyright © 2011-2022 走看看