• 麻瓜之我要学sql,啦啦啦啦


    四张表

    学生表:编号,姓名,性别,班级,生日

    CREATE TABLE IF NOT EXISTS student(
    sno TINYINT UNSIGNED NOT NULL,
    sname VARCHAR(20) NOT NULL,
    ssex ENUM('male','female') DEFAULT 'male',
    sbirthday DATE NOT NULL,
    class VARCHAR(20) NOT NULL,
    PRIMARY KEY(sno)
    )

    课程表:课程编号,课程名称,教授课程的老师编号

    CREATE TABLE IF NOT EXISTS course(
       cno TINYINT UNSIGNED NOT NULL,
       cname VARCHAR(20) NOT NULL,
       tno TINYINT UNSIGNED NOT NULL,
      PRIMARY KEY(cno)      
    )

    分数表:学生编号,课程编号,分数

    CREATE TABLE IF NOT EXISTS score(
        sno TINYINT UNSIGNED NOT NULL,
        cno TINYINT UNSIGNED NOT NULL,
       degree DECIMAL(4, 1)     
    );

    老师表:老师编号,姓名,老师性别,生日,职称,部门

    CREATE TABLE IF NOT EXISTS teacher(
       tno TINYINT UNSIGNED NOT NULL,
       tname VARCHAR(20) NOT NULL,
       tsex ENUM('male','female') DEFAULT 'male',
       tbirthday DATE,
       tprof  VARCHAR(10) NOT NULL,
       tdepart VARCHAR(20) NOT NULL,
       PRIMARY KEY(tno)          
    );

     

     开始撸题:

    • 查询student表中的所有记录的sname,ssex,class

    SELECT sname,ssex,class FROM student;

    查询教师所在的所有单位(既不重复的单位)

    SELECT tdepart is FROM teacher;(全部单位)

    SELECT DISTINCT tdepart FROM teacher;(不同的单位)

    查询student表的所有记录

    SELECT * FROM student

    查询score表中成绩在60-80之间的所有记录

    SELECT * FROM score WHERE degree BETWEEN 60 AND 80

    查询score表中成绩为30,66,10的记录

    SELECT * FROM score WHERE score.degree = 30 OR score.degree = 66 OR score.degree = 10  

    SELECT * FROM score WHERE degree IN (30,66,10)

    查询student表中'class5'班或性别为'female'的同学记录。

     SELECT * FROM student WHERE class = 'class5' OR ssex = 'female'

    以class降序查询student表中的数据

    SELECT * FROM student ORDER BY class DESC

    cno升序,degree降序查询score表中的记录

    SELECT * FROM score ORDER BY cno ASC,degree DESC

    查询“class5”班的学生人数

    SELECT COUNT(*) FROM student WHERE class = 'class5'

    查询score表中的最高分的学生学号和课程号

    SELECT sno,cno FROM score WHERE degree = (SELECT MAX(degree) FROM score )

    查询每门课的平均成绩,要按照课程进行分组,然后求每门课程的平均成绩。

    SELECT course.cno,course.cname,AVG(degree) AS degree
    FROM course
    LEFT JOIN score ON
    course.cno=score.cno
    GROUP BY score.cno;

    查询score表中至少有5名学生选修的并以3开头的课程的平均分数。

    SELECT AVG(degree) FROM score
    WHERE cno LIKE '3%'
    GROUP BY cno
    HAVING COUNT(*)>=5

    查询分数大于70,小于90sno

    SELECT sno FROM score
    WHERE degree BETWEEN 70 AND 90;

  • 相关阅读:
    HDU ACM 1071 The area 定积分计算
    Effective C++:条款25:考虑写出一个不抛异常的swap函数
    史上最全站点降权原因解析
    shell脚本中的数学运算
    Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)
    索尼 LT26I刷机包 X.I.D 增加官方风格 GF A3.9.4 各方面完美
    Swift基础--使用TableViewController自己定义列表
    勒索软件出新招,小心你的隐私和財产安全!
    Http协议具体解释
    Android Studio解决unspecified on project app resolves to an APK archive which is not supported
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/8082463.html
Copyright © 2020-2023  润新知