MySQL练习

There is recorded some MySQL pratices.

数据库和数据准备

  • 数据库建立
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     CREATE TABLE STUDENT
    (
    SNO VARCHAR(3) NOT NULL,
    SNAME VARCHAR(4) NOT NULL,
    SSEX VARCHAR(2) NOT NULL,
    SBIRTHDAY DATETIME,
    CLASS VARCHAR(5)
    );

    CREATE TABLE COURSE
    (
    CNO VARCHAR(5) NOT NULL,
    CNAME VARCHAR(10) NOT NULL,
    TNO VARCHAR(10) NOT NULL
    );

    CREATE TABLE SCORE
    (
    SNO VARCHAR(3) NOT NULL,
    CNO VARCHAR(5) NOT NULL,
    DEGREE NUMERIC(10, 1) NOT NULL
    );

    CREATE TABLE TEACHER
    (
    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
    );
  • 数据填充
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,'1977-09-01',95033);
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,'1975-10-02',95031);
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,'1976-01-23',95033);
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,'1976-02-20',95033);
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,'1975-02-10',95031);
    INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,'1974-06-03',95031);

    INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825);
    INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);
    INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856);
    INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100);

    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'6-106',79);
    INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);

    INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');
    INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');
    INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,'王萍','女','1972-05-05','助教','计算机系');
    INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');
  • 数据填充完成
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    mysql> SELECT * FROM STUDENT;
    +-----+--------+------+---------------------+-------+
    | SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
    +-----+--------+------+---------------------+-------+
    | 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 |
    | 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
    | 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
    | 101 | 李军 | 男 | 1976-02-20 00:00:00 | 95033 |
    | 109 | 王芳 | 女 | 1975-02-10 00:00:00 | 95031 |
    | 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
    +-----+--------+------+---------------------+-------+
    6 rows in set (0.00 sec)

    mysql> SELECT * FROM COURSE;
    +-------+-----------------+-----+
    | CNO | CNAME | TNO |
    +-------+-----------------+-----+
    | 3-105 | 计算机导论 | 825 |
    | 3-245 | 操作系统 | 804 |
    | 6-166 | 数据电路 | 856 |
    | 9-888 | 高等数学 | 100 |
    +-------+-----------------+-----+
    4 rows in set (0.00 sec)

    mysql> SELECT * FROM SCORE;
    +-----+-------+--------+
    | SNO | CNO | DEGREE |
    +-----+-------+--------+
    | 103 | 3-245 | 86.0 |
    | 105 | 3-245 | 75.0 |
    | 109 | 3-245 | 68.0 |
    | 103 | 3-105 | 92.0 |
    | 105 | 3-105 | 88.0 |
    | 109 | 3-105 | 76.0 |
    | 101 | 3-105 | 64.0 |
    | 107 | 3-105 | 91.0 |
    | 108 | 3-105 | 78.0 |
    | 101 | 6-166 | 85.0 |
    | 107 | 6-106 | 79.0 |
    | 108 | 6-166 | 81.0 |
    +-----+-------+--------+
    12 rows in set (0.00 sec)

    mysql> SELECT * FROM TEACHER;
    +-----+--------+------+---------------------+-----------+-----------------+
    | TNO | TNAME | TSEX | TBIRTHDAY | PROF | DEPART |
    +-----+--------+------+---------------------+-----------+-----------------+
    | 804 | 李诚 | 男 | 1958-12-02 00:00:00 | 副教授 | 计算机系 |
    | 856 | 张旭 | 男 | 1969-03-12 00:00:00 | 讲师 | 电子工程系 |
    | 825 | 王萍 | 女 | 1972-05-05 00:00:00 | 助教 | 计算机系 |
    | 831 | 刘冰 | 女 | 1977-08-14 00:00:00 | 助教 | 电子工程系 |
    +-----+--------+------+---------------------+-----------+-----------------+
    4 rows in set (0.00 sec)

题目

查询STUDENT表中的所有记录的SNAME、SSEX和CLASS列

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT SNAME, SSEX, CLASS FROM STUDENT;
+--------+------+-------+
| SNAME | SSEX | CLASS |
+--------+------+-------+
| 曾华 | 男 | 95033 |
| 匡明 | 男 | 95031 |
| 王丽 | 女 | 95033 |
| 李军 | 男 | 95033 |
| 王芳 | 女 | 95031 |
| 陆君 | 男 | 95031 |
+--------+------+-------+
6 rows in set (0.00 sec)

查询教师所有的单位即不重复的DEPART列

1
2
3
4
5
6
7
8
mysql> SELECT DEPART FROM TEACHER GROUP BY DEPART;
+-----------------+
| DEPART |
+-----------------+
| 电子工程系 |
| 计算机系 |
+-----------------+
2 rows in set (0.00 sec)

查询STUDENT表的所有记录

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM STUDENT;
+-----+--------+------+---------------------+-------+
| SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
+-----+--------+------+---------------------+-------+
| 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 |
| 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
| 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
| 101 | 李军 | 男 | 1976-02-20 00:00:00 | 95033 |
| 109 | 王芳 | 女 | 1975-02-10 00:00:00 | 95031 |
| 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
6 rows in set (0.00 sec)

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

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM SCORE WHERE DEGREE BETWEEN 60 AND 80;
+-----+-------+--------+
| SNO | CNO | DEGREE |
+-----+-------+--------+
| 105 | 3-245 | 75.0 |
| 109 | 3-245 | 68.0 |
| 109 | 3-105 | 76.0 |
| 101 | 3-105 | 64.0 |
| 108 | 3-105 | 78.0 |
| 107 | 6-106 | 79.0 |
+-----+-------+--------+
6 rows in set (0.00 sec)

查询SCORE表中成绩为85,86或88的记录

1
2
3
4
5
6
7
8
mysql> SELECT * FROM SCORE WHERE DEGREE IN(85, 86, 88);
+-----+-------+--------+
| SNO | CNO | DEGREE |
+-----+-------+--------+
| 103 | 3-245 | 86.0 |
| 105 | 3-105 | 88.0 |
| 101 | 6-166 | 85.0 |
+-----+-------+--------+

查询STUDENT表中“95031”班或性别为“女”的同学记录

1
2
3
4
5
6
7
8
9
10
mysql> SELECT * FROM STUDENT WHERE CLASS='95031' OR SSEX='女';
+-----+--------+------+---------------------+-------+
| SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
+-----+--------+------+---------------------+-------+
| 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
| 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
| 109 | 王芳 | 女 | 1975-02-10 00:00:00 | 95031 |
| 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
4 rows in set (0.00 sec)

以CLASS降序查询STUDENT表的所有记录

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM STUDENT ORDER BY CLASS DESC;
+-----+--------+------+---------------------+-------+
| SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
+-----+--------+------+---------------------+-------+
| 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 |
| 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
| 101 | 李军 | 男 | 1976-02-20 00:00:00 | 95033 |
| 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
| 109 | 王芳 | 女 | 1975-02-10 00:00:00 | 95031 |
| 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
6 rows in set (0.00 sec)

以CNO升序、DEGREE降序查询SCORE表的所有记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> SELECT * FROM SCORE ORDER BY CNO, DEGREE DESC;
+-----+-------+--------+
| SNO | CNO | DEGREE |
+-----+-------+--------+
| 103 | 3-105 | 92.0 |
| 107 | 3-105 | 91.0 |
| 105 | 3-105 | 88.0 |
| 108 | 3-105 | 78.0 |
| 109 | 3-105 | 76.0 |
| 101 | 3-105 | 64.0 |
| 103 | 3-245 | 86.0 |
| 105 | 3-245 | 75.0 |
| 109 | 3-245 | 68.0 |
| 107 | 6-106 | 79.0 |
| 101 | 6-166 | 85.0 |
| 108 | 6-166 | 81.0 |
+-----+-------+--------+
12 rows in set (0.00 sec)

查询“95031”班的学生人数

1
2
3
4
5
6
7
mysql> SELECT COUNT(*) FROM STUDENT WHERE CLASS='95031';
+----------+
| COUNT(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)

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

1
2
3
4
5
6
7
mysql> SELECT SNO, CNO FROM SCORE WHERE DEGREE IN (SELECT MAX(DEGREE) FROM SCORE);
+-----+-------+
| SNO | CNO |
+-----+-------+
| 103 | 3-105 |
+-----+-------+
1 row in set (0.00 sec)

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

1
2
3
4
5
6
7
mysql> SELECT AVG(DEGREE) FROM SCORE WHERE CNO='3-105';
+-------------+
| AVG(DEGREE) |
+-------------+
| 81.50000 |
+-------------+
1 row in set (0.00 sec)

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

1
2
3
4
5
6
7
8
mysql> SELECT AVG(DEGREE) FROM SCORE GROUP BY CNO HAVING COUNT(CNO)>1 AND CNO LIKE '3%';
+-------------+
| AVG(DEGREE) |
+-------------+
| 81.50000 |
| 76.33333 |
+-------------+
2 rows in set (0.00 sec)

查询最低分大于70,最高分小于90的SNO列

1
2
3
4
5
6
7
8
mysql> SELECT SNO FROM SCORE GROUP BY SNO HAVING MIN(DEGREE)>70 AND MAX(DEGREE)<90;
+-----+
| SNO |
+-----+
| 105 |
| 108 |
+-----+
2 rows in set (0.00 sec)

查询所有学生的SNAME、CNO和DEGREE列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mysql> SELECT A.SNAME, B.CNO, B.DEGREE FROM STUDENT A, SCORE B WHERE A.SNO=B.SNO;
+--------+-------+--------+
| SNAME | CNO | DEGREE |
+--------+-------+--------+
| 陆君 | 3-245 | 86.0 |
| 匡明 | 3-245 | 75.0 |
| 王芳 | 3-245 | 68.0 |
| 陆君 | 3-105 | 92.0 |
| 匡明 | 3-105 | 88.0 |
| 王芳 | 3-105 | 76.0 |
| 李军 | 3-105 | 64.0 |
| 王丽 | 3-105 | 91.0 |
| 曾华 | 3-105 | 78.0 |
| 李军 | 6-166 | 85.0 |
| 王丽 | 6-106 | 79.0 |
| 曾华 | 6-166 | 81.0 |
+--------+-------+--------+
12 rows in set (0.00 sec)
# 解法二使用内连接
mysql> SELECT STUDENT.SNAME, SCORE.CNO, SCORE.DEGREE FROM STUDENT INNER JOIN SCORE ON STUDENT.SNO=SCORE.SNO;
+--------+-------+--------+
| SNAME | CNO | DEGREE |
+--------+-------+--------+
| 陆君 | 3-245 | 86.0 |
| 匡明 | 3-245 | 75.0 |
| 王芳 | 3-245 | 68.0 |
| 陆君 | 3-105 | 92.0 |
| 匡明 | 3-105 | 88.0 |
| 王芳 | 3-105 | 76.0 |
| 李军 | 3-105 | 64.0 |
| 王丽 | 3-105 | 91.0 |
| 曾华 | 3-105 | 78.0 |
| 李军 | 6-166 | 85.0 |
| 王丽 | 6-106 | 79.0 |
| 曾华 | 6-166 | 81.0 |
+--------+-------+--------+
12 rows in set (0.00 sec)

查询所有学生的SNO、CNAME和DEGREE列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> SELECT A.SNO, B.CNAME, A.DEGREE FROM SCORE A, COURSE B WHERE A.CNO=B.CNO;
+-----+-----------------+--------+
| SNO | CNAME | DEGREE |
+-----+-----------------+--------+
| 103 | 操作系统 | 86.0 |
| 105 | 操作系统 | 75.0 |
| 109 | 操作系统 | 68.0 |
| 103 | 计算机导论 | 92.0 |
| 105 | 计算机导论 | 88.0 |
| 109 | 计算机导论 | 76.0 |
| 101 | 计算机导论 | 64.0 |
| 107 | 计算机导论 | 91.0 |
| 108 | 计算机导论 | 78.0 |
| 101 | 数据电路 | 85.0 |
| 108 | 数据电路 | 81.0 |
+-----+-----------------+--------+
11 rows in set (0.01 sec)

# 解法二使用内连接
mysql> SELECT A.SNO, C.CNAME, B.DEGREE FROM STUDENT A INNER JOIN SCORE B INNER JOIN COURSE C ON A.SNO=B.SNO AND B.CNO=C.CNO;
+-----+-----------------+--------+
| SNO | CNAME | DEGREE |
+-----+-----------------+--------+
| 108 | 计算机导论 | 78.0 |
| 108 | 数据电路 | 81.0 |
| 105 | 操作系统 | 75.0 |
| 105 | 计算机导论 | 88.0 |
| 107 | 计算机导论 | 91.0 |
| 101 | 计算机导论 | 64.0 |
| 101 | 数据电路 | 85.0 |
| 109 | 操作系统 | 68.0 |
| 109 | 计算机导论 | 76.0 |
| 103 | 操作系统 | 86.0 |
| 103 | 计算机导论 | 92.0 |
+-----+-----------------+--------+
11 rows in set (0.00 sec)

查询所有学生的SNAME、CNAME和DEGREE列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> SELECT A.SNAME, B.CNAME, C.DEGREE FROM STUDENT A, COURSE B, SCORE C WHERE A.SNO=C.SNO AND B.CNO=C.CNO;
+--------+-----------------+--------+
| SNAME | CNAME | DEGREE |
+--------+-----------------+--------+
| 曾华 | 计算机导论 | 78.0 |
| 曾华 | 数据电路 | 81.0 |
| 匡明 | 操作系统 | 75.0 |
| 匡明 | 计算机导论 | 88.0 |
| 王丽 | 计算机导论 | 91.0 |
| 李军 | 计算机导论 | 64.0 |
| 李军 | 数据电路 | 85.0 |
| 王芳 | 操作系统 | 68.0 |
| 王芳 | 计算机导论 | 76.0 |
| 陆君 | 操作系统 | 86.0 |
| 陆君 | 计算机导论 | 92.0 |
+--------+-----------------+--------+
11 rows in set (0.00 sec)

# 解法二内连接
mysql> SELECT STUDENT.SNAME, COURSE.CNAME, SCORE.DEGREE FROM STUDENT INNER JOIN SCORE INNER JOIN COURSE ON STUDENT.SNO=SCORE.SNO AND SCORE.CNO=COURSE.CNO;
+--------+-----------------+--------+
| SNAME | CNAME | DEGREE |
+--------+-----------------+--------+
| 曾华 | 计算机导论 | 78.0 |
| 曾华 | 数据电路 | 81.0 |
| 匡明 | 操作系统 | 75.0 |
| 匡明 | 计算机导论 | 88.0 |
| 王丽 | 计算机导论 | 91.0 |
| 李军 | 计算机导论 | 64.0 |
| 李军 | 数据电路 | 85.0 |
| 王芳 | 操作系统 | 68.0 |
| 王芳 | 计算机导论 | 76.0 |
| 陆君 | 操作系统 | 86.0 |
| 陆君 | 计算机导论 | 92.0 |
+--------+-----------------+--------+
11 rows in set (0.00 sec)

查询“95033”班所选课程的平均分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> SELECT AVG(DEGREE) FROM SCORE INNER JOIN STUDENT S ON S.CLASS='95033';
+-------------+
| AVG(DEGREE) |
+-------------+
| 80.25000 |
+-------------+
1 row in set (0.00 sec)

# 解法二
mysql> mysql> SELECT AVG(DEGREE) FRO WHERE SNO IN(SELECT SNO FROM STUDENT WHERE CLASS='95033');
+-------------+
| AVG(DEGREE) |
+-------------+
| 79.66667 |
+-------------+
1 row in set (0.00 sec)

假设使用如下命令建立了一个grade表

1
2
3
4
5
6
CREATE TABLE grade(low int,upp int,rank char(1));
INSERT INTO grade VALUES(90,100,'A');
INSERT INTO grade VALUES(80,89,'B');
INSERT INTO grade VALUES(70,79,'C');
INSERT INTO grade VALUES(60,69,'D');
INSERT INTO grade VALUES(0,59,'E');
  • 查询所有同学的SNO、CNO和rank列

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    mysql> SELECT A.SNO, A.CNO, B.rank FROM SCORE A, grade B WHERE A.DEGREE BETWEEN low and upp;
    +-----+-------+------+
    | SNO | CNO | rank |
    +-----+-------+------+
    | 103 | 3-245 | B |
    | 105 | 3-245 | C |
    | 109 | 3-245 | D |
    | 103 | 3-105 | A |
    | 105 | 3-105 | B |
    | 109 | 3-105 | C |
    | 101 | 3-105 | D |
    | 107 | 3-105 | A |
    | 108 | 3-105 | C |
    | 101 | 6-166 | B |
    | 107 | 6-106 | C |
    | 108 | 6-166 | B |
    +-----+-------+------+
    12 rows in set (0.00 sec)
  • 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql> SELECT * FROM STUDENT WHERE SNO IN (SELECT SNO FROM SCORE WHERE CNO='3-105' AND DEGREE>(SELECT DEGREE FROM SCORE WHERE SNO='109' AND CNO='3-105'));
    +-----+--------+------+---------------------+-------+
    | SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
    +-----+--------+------+---------------------+-------+
    | 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
    | 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
    | 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
    | 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 |
    +-----+--------+------+---------------------+-------+
    4 rows in set (0.00 sec)
  • 查询”95033”班和”95031”班全体学生的记录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    mysql> SELECT * FROM STUDENT WHERE CLASS IN('95033', '95031');
    +-----+--------+------+---------------------+-------+
    | SNO | SNAME | SSEX | SBIRTHDAY | CLASS |
    +-----+--------+------+---------------------+-------+
    | 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 |
    | 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 |
    | 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 |
    | 101 | 李军 | 男 | 1976-02-20 00:00:00 | 95033 |
    | 109 | 王芳 | 女 | 1975-02-10 00:00:00 | 95031 |
    | 103 | 陆君 | 男 | 1974-06-03 00:00:00 | 95031 |
    +-----+--------+------+---------------------+-------+
    6 rows in set (0.00 sec)
  • 查询存在有85分以上成绩的课程CNO

    1
    2
    3
    4
    5
    6
    7
    8
    mysql> SELECT CNO FROM SCORE GROUP BY CNO HAVING CNO IN (SELECT CNO FROM SCORE WHERE DEGREE>85);
    +-------+
    | CNO |
    +-------+
    | 3-105 |
    | 3-245 |
    +-------+
    2 rows in set (0.00 sec)
  • 查询出“计算机系“教师所教课程的成绩表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    mysql> SELECT * FROM SCORE WHERE CNO IN(SELECT CNO FROM COURSE WHERE TNO IN(SELECT TNO FROM TEACHER WHERE DEPART='计算机系'));
    +-----+-------+--------+
    | SNO | CNO | DEGREE |
    +-----+-------+--------+
    | 103 | 3-245 | 86.0 |
    | 105 | 3-245 | 75.0 |
    | 109 | 3-245 | 68.0 |
    | 103 | 3-105 | 92.0 |
    | 105 | 3-105 | 88.0 |
    | 109 | 3-105 | 76.0 |
    | 101 | 3-105 | 64.0 |
    | 107 | 3-105 | 91.0 |
    | 108 | 3-105 | 78.0 |
    +-----+-------+--------+
    9 rows in set (0.00 sec)
    # 解法二
    mysql> SELECT * FROM SCORE WHERE CNO IN(SELECT C.CNO FROM TEACHER T, COURSE C WHERE T.DEPART='计算机系' AND T.TNO=C.TNO);
    +-----+-------+--------+
    | SNO | CNO | DEGREE |
    +-----+-------+--------+
    | 103 | 3-245 | 86.0 |
    | 105 | 3-245 | 75.0 |
    | 109 | 3-245 | 68.0 |
    | 103 | 3-105 | 92.0 |
    | 105 | 3-105 | 88.0 |
    | 109 | 3-105 | 76.0 |
    | 101 | 3-105 | 64.0 |
    | 107 | 3-105 | 91.0 |
    | 108 | 3-105 | 78.0 |
    +-----+-------+--------+
    9 rows in set (0.00 sec)

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×