现有四张表:
student 学生表:
CREATE TABLE STUDENT (
SNO VARCHAR(3) NOT NULL, //学生编号
SNAME VARCHAR(4) NOT NULL, //学生姓名
SSEX VARCHAR(2) NOT NULL, /性别
SBIRTHDAY DATETIME, //生日
CLASS VARCHAR(5) //班级编号
);
数据:
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (108 ,‘曾华’ ,‘男’ ,‘1977-09-01’,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (105 ,‘匡明’ ,‘男’ ,‘1975-10-02’,95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (107 ,‘王丽’ ,‘女’ ,‘1976-01-23’,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (101 ,‘李军’ ,‘男’ ,‘1976-02-20’,95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (109 ,‘王芳’ ,‘女’ ,‘1975-02-10’,95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASSNUM) VALUES (103 ,‘陆君’ ,‘男’ ,‘1974-06-03’,95031);
course 课程信息表:
CREATE TABLE COURSE (
CNO VARCHAR(5) NOT NULL, //课程编号
CNAME VARCHAR(10) NOT NULL, //课程名称
TNO VARCHAR(10) NOT NULL //授课教师编号
);
数据:
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);
score 成绩表:
CREATE TABLE SCORE (
SNO VARCHAR(3) NOT NULL, //学生编号
CNO VARCHAR(5) NOT NULL, //课程编号
DEGREE NUMERIC(10, 1) NOT NULL //分数
);
数据:
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);
teacher 教师表:
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 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)查询Student表中的所有记录的Sname、Ssex和Class列
select sname,ssex,classnum from student;
分析:多个列之间用逗号隔开
(2)查询教师所有的单位即不重复的Depart列
select distinct depart from teacher;
分析:使用 distinct 关键字去除重复数据
(3)查询Student表的所有记录
select * from student;
分析:使用 * 代表所有数据
(4)查询Score表中成绩在60到80之间的所有记录
select * from score where degree between 60 and 80;
分析:使用 between and 关键字查找区间数据
(5)查询Score表中成绩为85,86或88的记录
select * from score where degree in (85,86,88);
分析:多种情况的区间用 in 关键字
(6) 查询Student表中“95031”班或性别为“女”的同学记录
select * from student where classnum='95031' or ssex='女';
分析:或条件用 or 关键字
(7)以Class降序查询Student表的所有记录
select * from student order by classnum desc;
分析:排序用 order by 关键字 升序:asc 降序:desc
(8)以Cno升序、Degree降序查询Score表的所有记录
select * from score order by cno asc,degree desc;
分析:有两个排序条件时,用逗号隔开,第一个条件排序完的基础上,再按第二个条件排序
(9)查询“95031”班的学生人数
select count(*) from student where classnum='95031';
分析:计数使用函数 count
(10)查询Score表中的最高分的学生学号和课程号
select sno,cno,max(degree) from score
分析:求最大值用聚合函数max()
(11)查询‘3-105’号课程的平均分