目录
3、以 cno 升序、degree降序查询 score 表的所有记录
7、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
11、查询所有学生的Sname、Cname和Degree列。
14、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
15、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
21、查询所有教师和同学的name、sex和birthday。
22、查询所有“女”教师和“女”同学的name、sex和birthday。
28、对查询score中选学一门以上课程的同学中分数为非最高分成绩的记录的辨析
前言
mysql数据库综合练习3
一、创建数据库表
首先自己先创建一个数据库,再创建数据库表
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
);
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 (101, '6-166', 85);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (107, '6-106', 79);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (108, '3-105', 78);
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、查询Score表中成绩在60到80之间的所有记录
方法1
-- 1、查询Score表中成绩在60到80之间的所有记录
SELECT
*
FROM score
WHERE DEGREE >= 60 AND DEGREE <= 80
方法2
-- 1、查询Score表中成绩在60到80之间的所有记录
SELECT
*
FROM
score
WHERE
DEGREE BETWEEN 60
AND 80
2、查询 score 表中成绩为85,86或88的记录
-- 2、查询 score 表中成绩为85,86或88的记录
SELECT *
FROM score
WHERE
DEGREE IN ( 85, 86, 88 )
ORDER BY DEGREE desc
3、以 cno 升序、degree降序查询 score 表的所有记录
注意 ORDER BY 子句中的顺序,交换顺序之后是不一样的。首先根据第一个字段排序,如果第一个字段相同,再根据第二个字段排序。
-- 以 cno 升序、degree降序查询 score 表的所有记录
SELECT
*
FROM
score
ORDER BY
CNO ASC,
DEGREE DESC
4、查询“95031”班的学生人数。
MySQL 中 COUNT() 函数的使用。
-- 4、查询“95031”班的学生人数。
SELECT
count( sno ) AS '95031班的人数'
FROM
student
WHERE
class = 95031
5、查询Score表中的最高分的学生学号和课程号
-- 5、查询Score表中的最高分的学生学号和课程号
SELECT
sno AS '学号',
cno AS '课程号' ,
degree AS '成绩'
FROM
score
GROUP BY
degree DESC
LIMIT 1
6、查询‘3-105’号课程的平均分。
MySQL 的