zoukankan      html  css  js  c++  java
  • 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='计算机导论'))

    其中有几个不对的。

  • 相关阅读:
    Oracle exp/imp导出导入工具的使用
    导入导出数据语句小结
    改变一生的五句话
    给年轻工程师的十大忠告
    项目经理三步曲(项目经理成长版)
    写作、写程序的快乐和痛苦
    《Excel与VBA程序设计(mini版)》
    《3S新闻周刊》第三期发布: 解密Google Earth
    《Excel与VBA程序设计》进度(2006.3.8)
    Arc2Earth正式发布
  • 原文地址:https://www.cnblogs.com/a709898670/p/9303163.html
Copyright © 2011-2022 走看看