MySQL练习

Posted wlyhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL练习相关的知识,希望对你有一定的参考价值。

建表语句

CREATE TABLE students
(sno VARCHAR(3) NOT NULL,
sname VARCHAR(4) NOT NULL,
ssex VARCHAR(2) NOT NULL,
sbirthday DATETIME,
class VARCHAR(5))
CREATE TABLE courses
(cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(10) NOT NULL)
CREATE TABLE scores
(sno VARCHAR(3) NOT NULL,
cno VARCHAR(5) NOT NULL,
degree NUMERIC(10, 1) NOT NULL)
CREATE TABLE teachers
(tno VARCHAR(3) NOT NULL,
tname VARCHAR(4) NOT NULL, tsex VARCHAR(2) NOT NULL,
tbirthday DATETIME NOT NULL, prof VARCHAR(6),
depart VARCHAR(10) NOT NULL)

 

插入数据

INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,曾华 , ,1977-09-01,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,匡明 , ,1975-10-02,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,王丽 , ,1976-01-23,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,李军 , ,1976-02-20,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,王芳 , ,1975-02-10,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,陆君 , ,1974-06-03,95031);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (3-105 ,计算机导论,825);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (3-245 ,操作系统 ,804);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (6-166 ,数据电路 ,856);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES (9-888 ,高等数学 ,100);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,3-245,86);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,3-245,75);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,3-245,68);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,3-105,92);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,3-105,88);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,3-105,76);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,3-105,64);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,3-105,91);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,3-105,78);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,6-166,85);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,6-106,79);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,6-166,81);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,李诚,,1958-12-02,副教授,计算机系);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,张旭,,1969-03-12,讲师,电子工程系);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,王萍,,1972-05-05,助教,计算机系);
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,刘冰,,1977-08-14,助教,电子工程系);
commit;

题目

1、 查询Student表中的所有记录的Sname、Ssex和Class列。

2、 查询教师所有的单位即不重复的Depart列。

3、 查询Student表的所有记录。

4、 查询Score表中成绩在60到80之间的所有记录。

5、 查询Score表中成绩为85,86或88的记录。

6、 查询Student表中“95031”班或性别为“女”的同学记录。

7、 以Class降序查询Student表的所有记录。

8、 以Cno升序、Degree降序查询Score表的所有记录。

9、 查询“95031”班的学生人数。

10、查询Score表中的最高分的学生学号和课程号。

11、查询‘3-105’号课程的平均分。

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

13、查询最低分大于70,最高分小于90的Sno列。

14、查询所有学生的Sname、Cno和Degree列。

15、查询所有学生的Sno、Cname和Degree列。

 

个人练习答案

-- 1、 查询Student表中的所有记录的Sname、Ssex和Class列。
SELECT
    Sname,
    Ssex,
    Class
FROM
    students;

-- 2、 查询教师所有的单位即不重复的Depart列。
SELECT DISTINCT
    Depart
FROM
    teachers;

-- 3、 查询Student表的所有记录。
SELECT
    *
FROM
    students;

-- 4、 查询Score表中成绩在60到80之间的所有记录。
SELECT
    *
FROM
    scores
WHERE
    degree BETWEEN 60
AND 80;

-- 5、 查询Score表中成绩为85,86或88的记录。
SELECT
    *
FROM
    scores
WHERE
    degree = 85
OR degree = 86
OR degree = 88;

SELECT
    *
FROM
    scores
WHERE
    degree IN (85, 86, 88);

-- 6、 查询Student表中“95031”班或性别为“女”的同学记录。
SELECT
    *
FROM
    students
WHERE
    class = "95031"
OR ssex = "女";

-- 7、 以Class降序查询Student表的所有记录。
SELECT
    *
FROM
    students
ORDER BY
    class DESC;

-- 8、 以Cno升序、Degree降序查询Score表的所有记录。
SELECT
    *
FROM
    scores
ORDER BY
    cno ASC,
    degree DESC;

-- 9、 查询“95031”班的学生人数。
SELECT
    count(*) AS total
FROM
    students
WHERE
    class = 95031;

-- 10、查询Score表中的最高分的学生学号和课程号。
SELECT
    *
FROM
    scores
ORDER BY
    degree DESC
LIMIT 1;

-- 11、查询‘3-105’号课程的平均分。
SELECT
    AVG(degree)
FROM
    scores
WHERE
    cno = 3-105;

-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
SELECT
    Cno,
    AVG(Degree)
FROM
    Scores
WHERE
    Cno LIKE 3%
GROUP BY
    Cno
HAVING
    COUNT(Sno) >= 5;

-- 13、查询最低分大于70,最高分小于90的Sno列。
SELECT
    *
FROM
    scores
GROUP BY
    sno
HAVING
    MAX(degree) < 90
AND MIN(degree) > 70;

-- 14、查询所有学生的Sname、Cno和Degree列。
SELECT
    Sname,
    cno,
    Degree
FROM
    students
JOIN scores ON students.SNO = scores.SNO;

-- 15、查询所有学生的Sno、Cname和Degree列。
SELECT
    Sno,
    Cname,
    degree
FROM
    scores
JOIN courses ON (Scores.Cno = Courses.Cno);

 

以上是关于MySQL练习的主要内容,如果未能解决你的问题,请参考以下文章

csharp Epicor标准练习片段

golang 去练习片段

部分代码片段

linux中怎么查看mysql数据库版本

ktor HTTP API 练习

从mysql的片段中加载ListView