1. 查询学习课程”python”比课程 “java” 成绩高的学生的学号;
    – 思路:
    – 获取所有有python课程的人(学号,成绩) - 临时表
    – 获取所有有java课程的人(学号,成绩) - 临时表
    – 根据学号连接两个临时表:
    – 学号 | 物理成绩 | 生物成绩
    – 然后再进行筛选
    1
    2
    3
    4
    5
    select A.s_id from
    (select s_id, num as python from score left join course on score.c_id = course.c_id where course.c_name = 'python') as A
    left join
    (select s_id, num as java from score left join course on score.c_id = course.c_id where course.c_name = 'java') as B
    on A.s_id = B.s_id where A.python > B.java;
  1. 查询平均成绩大于65分的同学的姓名和平均成绩(保留两位小数);

    1
    2
    3
    4
    5
    SELECT student.s_name as names, round(AVG(score.num), 2) as average
    FROM student, score
    WHERE student.s_id = score.s_id
    GROUP BY student.s_name
    HAVING AVG(score.num) > 65;
  2. 查询所有同学的姓名、选课数、总成绩

    1
    2
    3
    4
    5
    SELECT student.s_name, COUNT(score.s_id) as course_num, SUM(score.num) as total_grades
    FROM student, score
    WHERE student.s_id = score.s_id
    GROUP BY student.s_name
    ORDER BY student.s_name;
  3. 查询所有的课程的名称以及对应的任课老师姓名;

    1
    2
    3
    SELECT course.c_name, teacher.t_name  
    FROM course, teacher
    WHERE course.t_id = teacher.t_id;
  4. 查询没学过“alex”老师课的同学的姓名;

    1
    2
    3
    4
    5
    6
    7
    SELECT s_name
    FROM student
    WHERE student.s_id NOT IN (
    SELECT DISTINCT score.s_id
    FROM score, course, teacher
    WHERE course.c_id = score.c_id AND teacher.t_id = course.t_id AND teacher.t_name = 'alex'
    )
  5. 查询学过’python’并且也学过编号’java’课程的同学的姓名

    1
    2
    3
    4
    5
    6
    7
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as cid
    FROM score, course
    WHERE score.c_id = course.c_id AND (course.c_name = 'python' OR course.c_name = 'java')) as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) > 1;
  6. 查询学过“alex”老师所教的全部课程的同学的姓名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as cid
    FROM score, course, teacher
    WHERE score.c_id = course.c_id AND teacher.t_id = course.t_id AND teacher.t_name = 'alex') as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) = (SELECT COUNT(course.c_id) FROM
    course, teacher
    WHERE
    teacher.t_id = course.t_id AND teacher.t_name='alex');
  7. 查询挂科超过两门(包括两门)的学生姓名;

    1
    2
    3
    4
    5
    6
    7
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as大专栏  SQL语法练习(一)span> cid
    FROM score, course
    WHERE score.c_id = course.c_id AND (score.num < 60 OR score.num ISNULL)) as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) > 1;
  8. 查询有课程成绩小于60分的同学的姓名;

    1
    2
    3
    4
    5
    6
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as cid
    FROM score, course
    WHERE score.c_id = course.c_id AND score.num < 60) as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name;
  9. 查询选修了全部课程的学生姓名;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as cid
    FROM score, course
    WHERE score.c_id = course.c_id) as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) = (SELECT COUNT(*) FROM course); SELECT s_name FROM
    student
    LEFT JOIN score ON student.s_id = score.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) = (SELECT COUNT(*) FROM course)
  10. 查询至少有一门课程与“貂蝉”同学所学课程相同的同学姓名;

    1
    2
    3
    4
    5
    6
    SELECT s_name
    FROM student, score
    WHERE student.s_id = score.s_id AND student.s_name != '貂蝉' AND score.c_id IN (SELECT c_id FROM score, student
    WHERE score.s_id = student.s_id AND student.s_name = '貂蝉') GROUP BY s_name;
  11. 查询学过’貂蝉’同学全部课程的其他同学姓名;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT s_name FROM
    (SELECT score.s_id as sid, score.c_id as cid
    FROM score, course, student
    WHERE
    score.c_id = course.c_id AND
    student.s_id = score.s_id AND
    student.s_name != '貂蝉' AND
    score.c_id in (SELECT c_id FROM score, student WHERE student.s_name = '貂蝉' AND student.s_id = score.s_id)
    ) as B
    LEFT JOIN student ON B.sid = student.s_id
    GROUP BY s_name
    HAVING COUNT(s_name) >= (SELECT COUNT(score.c_id) FROM score, student WHERE student.s_name = '貂蝉' AND student.s_id = score.s_id);

– ——————————————————————————————————————————————————————————————
– INSERT INTO student VALUES (1, ‘鲁班’, 12, ‘男’);
– INSERT INTO student VALUES (2, ‘貂蝉’, 20, ‘女’);
– INSERT INTO student VALUES (3, ‘刘备’, 35, ‘男’);
– INSERT INTO student VALUES (4, ‘关羽’, 34, ‘男’);

– INSERT INTO student VALUES (5, ‘张飞’, 33, ‘女’);


– INSERT INTO teacher VALUES (1, ‘大王’);
– INSERT INTO teacher VALUES (2, ‘alex’);
– INSERT INTO teacher VALUES (3, ‘egon’);

– INSERT INTO teacher VALUES (4, ‘peiqi’);

– INSERT INTO course VALUES (1, ‘python’, 1);
– INSERT INTO course VALUES (2, ‘java’, 2);
– INSERT INTO course VALUES (3, ‘linux’, 3);
– INSERT INTO course VALUES (4, ‘go’, 2);

– INSERT INTO score VALUES (1, 1, 1, 79);
– INSERT INTO score VALUES (2, 1, 2, 77);
– INSERT INTO score VALUES (3, 1, 3, 58);
– INSERT INTO score VALUES (4, 2, 2, 66);
– INSERT INTO score VALUES (5, 2, 3, 77);
– INSERT INTO score VALUES (6, 3, 1, 61);
– INSERT INTO score VALUES (7, 3, 2, 64);

– INSERT INTO score VALUES (8, 4, 3, 70);

SQL语法练习(一)的更多相关文章

  1. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  2. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  3. SQL 语法总结

    学了一个月的java,开始有入门的感觉.这段时间接触到了java的JDBC, 发现学习这部分的内容还是要有SQL的基础,于是花费了几天时间学习了一下SQL语法,并将其总结于下. 选择数据 SELECT ...

  4. SQL语法和运算符(一)

    一个数据库通常包含一个或多个表.每个表由一个名字标识,表包含带有数据的记录(行). 一些最重要的SQL命令(SQL对大小写不敏感): 一.SQL语法 select:从数据库中提取数据 update:更 ...

  5. [转]MySQL 最基本的SQL语法/语句

    MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下.   DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...

  6. SQL语法整理

    SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...

  7. ORACLE分页查询SQL语法——最高效的分页

    --1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT  ...

  8. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  9. 有没有好用的开源sql语法分析器? - 匿名用户的回答 - 知乎

    有没有好用的开源sql语法分析器? - 匿名用户的回答 - 知乎 presto,hive,drill,calcite,sparksq

  10. editplus的配置文件来支持sql语法高亮【转】

      editplus默认是没有sql语法高亮的,原因是它的内部没有sql.stx的这样一个语法文件 我们自己在 EditPlus 的安装目录下面新建一个文件名为sql.stx,然后打开editplus ...

随机推荐

  1. restful的简单使用

    根据http的不同方法,访问不同路由的相同控制器下的不同方法可以实现restful的使用 分别对应 路由方式 get put delete post 对应操作 获取 更新 删除 添加 其中如果要在非l ...

  2. [Python]安装和运行flask框架

    随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库.同一个 Python 库的不同版本可能不兼容.虚拟环境可以为每一个项目安装独立的 Python 库,这样 ...

  3. java合并一个文件夹下所有txt文件,输出到另一个txt

    最近写了个单元测试,递归调用方法,把同一个文件夹里所有的txt合并输出到一个txt文件.参考了两个博客,分别是已有的方法,还有个就是检测txt文件所用编码的技术贴.如果不检测txt文件的编码,那么转换 ...

  4. 吴裕雄--天生自然 JAVA开发学习:重写(Override)与重载(Overload)

    class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Anim ...

  5. mysql命令行操作大全

    Mysql安装目录 数据库目录/var/lib/mysql/配置文件/usr/share/mysql(mysql.server命令及配置文件)相关命令/usr/bin(mysqladmin mysql ...

  6. Hibernate实现分页查询

    分页查询就是把数据库中某张表的记录数进行分页查询,在做分页查询时会有一个Page类,下面是一个Page类,我对其做了详细的注解: 1 package com.entity; 2 /** 3 * @au ...

  7. idea 为模块添加Tomcat依赖 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包

    解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包 今天创建SpringMVC项目时 用到HttpServletRequest时, 发现项目中根本没有Servlet这个包, ...

  8. centos mysql无法删除数据库

    系统版本是CentOS Linux release 7.4.1708 (Core) 数据库版本mysql  Ver 14.14 Distrib 5.6.39 在执行drop database ga-s ...

  9. DFS-BFS(深搜广搜)原理及C++代码实现

    深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来. 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点. 广搜简单地说就是一层一层的搜,像水的波纹一样 ...

  10. android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码

    Android精选源码 灵活的ShadowView,可替代CardView使用 基于Tesseract-OCR实现自动扫描识别手机号 Android播放界面仿QQ音乐开源音乐播放器 新闻应用项目采用了 ...