sqylog 50道练习题

CREATE TABLE student /*第一个表*/

(

sno INT,

sname VARCHAR(5),

ssex VARCHAR(4),

sbirthday DATE,

class VARCHAR(5)

)

INSERT INTO student VALUES (108,'曾华','男','1977-9-1',95033);

INSERT INTO student VALUES (105,'匡明','男','1975-10-2',95031);

INSERT INTO student VALUES (107,'王丽','女','1976-1-23',95033);

INSERT INTO student VALUES (101,'李军','男','1976-2-20',95033);

INSERT INTO student VALUES (109,'王芳','女','1975-2-10',95031);

INSERT INTO student VALUES (103,'陆君','男','1974-6-3',95031);

SELECT * FROM student


CREATE TABLE course/*第二个表*/
(
cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(5) NOT NULL
)
INSERT INTO course VALUES ('3-105','计算机导论','825');

INSERT INTO course VALUES ('3-245','操作系统','804');

INSERT INTO course VALUES ('6-166','数字电路','856');

INSERT INTO course VALUES ('9-888','高等数学','831');

SELECT * FROM course


CREATE TABLE score /*第三个表*/

(

sno INT,

cno VARCHAR(10),

degree INT

)
INSERT INTO score VALUES ('103','3-245',86);

INSERT INTO score VALUES ('105','3-245',75);

INSERT INTO score VALUES ('109','3-245',68);

INSERT INTO score VALUES ('103','3-105',92);

INSERT INTO score VALUES ('105','3-105',88);

INSERT INTO score VALUES ('109','3-105',76);

INSERT INTO score VALUES ('101','3-105',64);

INSERT INTO score VALUES ('107','3-105',91);

INSERT INTO score VALUES ('108','3-105',78);

INSERT INTO score VALUES ('101','6-166',85);

INSERT INTO score VALUES ('107','6-166',79);

INSERT INTO score VALUES ('108','6-166',81);


SELECT * FROM score

CREATE TABLE teacher/*第四个表*/

(

tno INT,

tname VARCHAR(10),

tsex VARCHAR(5),

tbirthday DATE,

Prof VARCHAR(5),

depart VARCHAR(10)

)

INSERT INTO teacher VALUES (804,'李成','男','1958-12-2','副教授','计算机系');

INSERT INTO teacher VALUES (856,'张旭','男','1969-3-12','讲师','电子工程系');

INSERT INTO teacher VALUES (825,'王萍','女','1972-5-5','助教','计算机系');

INSERT INTO teacher VALUES (831,'刘冰','女','1977-8-14','助教','电子工程系');

SELECT * FROM score

SELECT * FROM course

SELECT * FROM student

SELECT * FROM teacher


/*1、查询Student表中的所有记录的Sname、Ssex和Class列。*/
SELECT sname,ssex,class FROM student;


/*2、 查询教师所有的单位即不重复的Depart列。*/
SELECT * FROM teacher;
SELECT DISTINCT depart FROM teacher;


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


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


/*5、 查询Score表中成绩为85,86或88的记录。*/
SELECT * FROM score WHERE degree IN(85,86,88);


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


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


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


/*9、查询“95031”班的学生人数。*/
SELECT * FROM student WHERE class='95031';
SELECT COUNT(*) AS '95031班的人数' FROM student WHERE class="95031";


/*10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)*/
SELECT sno,cno,MAX(degree) FROM score /*最高分的学生号课程号*/
GROUP BY sno,cno;/*排序*/


/*11、查询每门课的平均成绩*/
SELECT cno,AVG(degree) AS 平均分 FROM score GROUP BY cno;


/*12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。*/
SELECT cno,AVG(degree) FROM score GROUP BY cno HAVING COUNT(sno)>5 AND cno LIKE '3%';


/*13、查询分数大于70,小于90的Sno列。*/
SELECT sno FROM score WHERE degree>70 AND degree<90;


/*14、查询所有学生的Sname、Cno和Degree列。*/
SELECT sname,cno,degree FROM score

JOIN student ON student.sno=score.sno;


/*15、查询所有学生的Sno、Cname和Degree列。*/
SELECT * FROM course;

SELECT * FROM score;

SELECT sno,cname,degree FROM score

JOIN course ON course.cno=score.sno;


/*16、查询所有学生的Sname、Cname和Degree列。*/
SELECT cname,sname,degree FROM score

JOIN course ON course.cno=score.cno

JOIN student ON student.sno=score.sno;


/*17、 查询“95033”班学生的平均分。*/
SELECT * FROM course;

SELECT * FROM student;

SELECT * FROM score;

SELECT AVG(degree) AS '95033平均分'FROM score WHERE sno IN(SELECT sno FROM student WHERE class="95033");

/*18、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。*/
/*20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。*/
SELECT * FROM student WHERE sno =

/*21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录*/
SELECT * FROM score WHERE degree > (SELECT degree FROM score WHERE sno='109' AND cno='3-105');


/*22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。*/
SELECT * FROM student WHERE YEAR(Sbirthday) LIKE (SELECT YEAR(sbirthday) FROM student WHERE sno='108')AND sno=108;


/*查询“张旭“教师任课的学生成绩(姓名)。*/
SELECT * FROM score WHERE cno IN(SELECT cno FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tname='张旭'));


/*查询考计算机导论的学生成绩*/
SELECT * FROM student WHERE sno IN(SELECT sno FROM score WHERE cno IN(SELECT cno FROM course WHERE cname='计算机导论'));


/*查询李诚老师教的课程名称*/
SELECT * FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tname='李成');


/*教高等数学的老师是哪个系的*/
SELECT * FROM teacher WHERE tno IN(SELECT tno FROM course WHERE cname='高等数学');


/*24、查询选修某课程的同学人数多于5人的教师姓名。*/
SELECT * FROM teacher WHERE tno IN(SELECT tno FROM course WHERE cno IN(SELECT cno FROM score GROUP BY cno HAVING COUNT(sno>5)));


/*25、查询95033班和95031班全体学生的记录。*/
SELECT * FROM student WHERE class IN('95033','95031');


/*26、 查询存在有85分以上成绩的课程Cno.*/
SELECT * FROM score WHERE degree>85;


/*27、查询出“计算机系“教师所教课程的成绩表。*/
SELECT * FROM course WHERE tno IN (SELECT tno FROM teacher WHERE depart='计算机系');


/*29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学 的Cno、Sno和Degree,并按Degree从高到低次序排序。*/
SELECT * FROM score WHERE cno = '3-105' AND degree>(SELECT MAX(degree) FROM score WHERE cno = '3-245')ORDER BY degree DESC;


/*30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的 Cno、Sno和Degree.*/
SELECT cno,sno,degree FROM score WHERE cno='3-105' AND degree>(SELECT MAX(degree) FROM score WHERE cno='3-245')


/*31、 查询所有教师和同学的name、sex和birthday.*/
SELECT tname,tsex,tbirthday FROM teacher UNION SELECT sname,ssex,sbirthday FROM student;


/*32、查询所有“女”教师和“女”同学的name、sex和birthday.*/
SELECT tname,tsex,tbirthday FROM teacher WHERE tsex='女' UNION SELECT sname,ssex,sbirthday FROM student WHERE ssex='女';


/*33、 查询成绩比该课程平均成绩低的同学的成绩表。*/
SELECT * FROM score WHERE degree<(SELECT AVG(degree) FROM score)


/*34、 查询所有任课教师的Tname和Depart.*/
SELECT tname,depart FROM teacher


/*35、查询所有未讲课的教师的Tname和Depart. */
SELECT * FROM teacher WHERE tno NOT IN(SELECT tno FROM course);


/*36、查询至少有2名男生的班号。*/
SELECT class FROM student GROUP BY class HAVING COUNT(class)>=2


/*37、查询Student表中不姓“王”的同学记录。*/
SELECT * FROM student WHERE sname NOT LIKE'王%'


/*38、查询Student表中每个学生的姓名和年龄。*/
SELECT sname,DATEDIFF(MONTH,'2018.07-12',CURRENT_TIMESTAMP)/12 AS '年龄' FROM student


/*39、查询Student表中最大和最小的Sbirthday日期值。*/
SELECT MAX(sbirthday) AS 最大值,MIN(sbirthday) AS 最小值 FROM student


/*40、以班号和年龄从大到小的顺序查询Student表中的全部记录。*/
SELECT * FROM student GROUP BY class ASC,DATEDIFF(YEAR,sbirthday ,'2014-11-9') ASC


/*41、查询“男”教师及其所上的课程。*/
SELECT cname FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tsex='男')


/*42、查询最高分同学的Sno、Cno和Degree列。*/
SELECT *FROM score WHERE degree IN(SELECT MAX(degree) FROM score )


/*43、查询和“李军”同性别的所有同学的Sname.*/
SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军')


/*44、查询和“李军”同性别并同班的同学Sname.*/
SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军') AND class=(SELECT class FROM student WHERE sname='李军');


/*45、查询所有选修“计算机导论”课程的“男”同学的成绩表。*/
SELECT * FROM student WHERE sno IN(SELECT sno FROM score WHERE cno IN(SELECT cno FROM course WHERE cname='计算机导论'))

其中有几个不对的。

猜你喜欢

转载自www.cnblogs.com/a709898670/p/9303163.html