MySQL基础习题锻炼(二)

来源:互联网 发布:印度fdi数据 编辑:程序博客网 时间:2024/05/23 12:09

以下是表的基本信息,请自行创建。

这里采取进阶的方式学习,每个问题都是步步深入,请在理解的基础上一步步往下做,如果觉得困难,可以先去做一下基础的练习,这里一并附上链接。

http://blog.csdn.net/qaz13177_58_/article/details/5575711/

https://wenku.baidu.com/view/9545bb62cc17552706220824.html


创建student:

CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS VARCHAR(5));

向student表插入记录的INSERT语句如下:

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);

 

创建course:

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

向course表插入记录的INSERT语句如下:

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) ;

向score表插入记录的INSERT语句如下:
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);

向teacher表插入记录的INSERT语句如下:
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','助教','电子工程系');



学习知识点:

SELECT DISTINCT 列名 FROM 表名;(查询表中所选类的不同的值

SELECT 表名FROM 列名WHERE 表名 IN (值1,值2,...);(选取多个值

SELECT 列名FROM 表名WHERE 列名BETWEEN 值1AND 值2;(选取介于两个值之间的数据范围


题目:

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

2.1、查询成绩介于6080的记录;

2.2、从高到低查询成绩介于6080的记录;

2.3、从高到底查询成绩介于60-80的同学的名字及对应科目;

3、查询所有学生的SnoCnameDegree列;

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

5、查询和“李军”同性别并同班的同学;

(往下是答案)



答案:

1、SELECT * FROM score WHERE degree IN (85,86,88);

2.1、SELECT * FROM SCORE WHERE DEGREE BETWEEN 60 AND 80;

2.2、SELECT * FROM SCORE WHERE DEGREE BETWEEN 60 AND 80 ORDER BY DEGREE DESC;

2.3、SELECT sname,cname,degree FROM course,score,student 

WHERE score.sno = student.sno AND score.cno = course.cno AND DEGREE BETWEEN 60 AND 80 ORDER BY DEGREE DESC;

3、SELECT sname, score.cno, degree FROM course, score, student

WHERE score.sno = student.Sno AND score.cno = course.cno;

4、SELECT sname,score.CNO,avg(score.DEGREE) FROM student,score,course

WHERE student.SNO=SCORE.sno AND CLASS='95033' GROUP BY score.CNO;

5、SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军') AND class=(SELECT class FROM student WHERE sname='李军');






原创粉丝点击