SQL查詢練習1

準備數據:sql

CREATE TABLE `Student`(  
    Sno         INT(11) auto_increment PRIMARY KEY,  
    Sname       VARCHAR(20),  
    Ssex        VARCHAR(20),  
    Sage        INT(3),  
    Sdept       VARCHAR(20));  
  
CREATE TABLE `Course`(  
    Cno         INT(11) auto_increment PRIMARY KEY,  
    Cname       VARCHAR(20),  
    Cpno        INT(11) REFERENCES Course(Cno),  
    Ccredit INT(2));  
  
CREATE TABLE `SC`(  
    Sno     INT(11) REFERENCES Student(Sno),  
    Cno     INT(11) REFERENCES Course(Cno),  
    Grade   FLOAT(3),  
    PRIMARY KEY(Sno,Cno));  
      
INSERT INTO `Student` VALUES(95001,"李勇","男",20,"CS");  
INSERT INTO `Student` VALUES(95003,"王名","男",20,"MA");  
INSERT INTO `Student` VALUES(95002,"劉晨","男",19,"IS");  
INSERT INTO `Student` VALUES(95004,"張立","男",18,"IS");  
INSERT INTO `Student` VALUES(95006,"牛德華","女",20,"IS");  
INSERT INTO `Student` VALUES(95005,"聶小軒","男",28,"CS");  
INSERT INTO `Student` VALUES(95007,"張三三","男",18,"CS");  
INSERT INTO `Student` VALUES(95008,"李思思","女",16,"MA");  
INSERT INTO `Student` VALUES(95009,"張嗚嗚","男",19,"MA");  
  
INSERT INTO `Course` VALUES(1,"數據庫",5,4);  
INSERT INTO `Course` VALUES(2,"數學",null,2);  
INSERT INTO `Course` VALUES(3,"信息系統",1,4);  
INSERT INTO `Course` VALUES(4,"操做系統",6,3);  
INSERT INTO `Course` VALUES(5,"數據結構",7,4);  
INSERT INTO `Course` VALUES(6,"數據處理",null,2);  
INSERT INTO `Course` VALUES(7,"PASCAL語言",6,4);  
INSERT INTO `Course` VALUES(8,"C_C++語言",null,4);  
  
INSERT INTO `SC` VALUES(95001,1,60);  
INSERT INTO `SC` VALUES(95002,1,90);  
INSERT INTO `SC` VALUES(95001,2,80);  
INSERT INTO `SC` VALUES(95002,2,99);  
INSERT INTO `SC` VALUES(95002,3,45);  
INSERT INTO `SC` VALUES(95001,4,40);  
INSERT INTO `SC` VALUES(95002,4,88);  
INSERT INTO `SC` VALUES(95004,4,null);  
INSERT INTO `SC` VALUES(95005,4,45);  
INSERT INTO `SC` VALUES(95002,5,88);  
INSERT INTO `SC` VALUES(95003,5,89);  
INSERT INTO `SC` VALUES(95005,5,54);  
INSERT INTO `SC` VALUES(95001,6,82);  
INSERT INTO `SC` VALUES(95004,6,null);  
INSERT INTO `SC` VALUES(95005,6,99.5);  
INSERT INTO `SC` VALUES(95003,7,99);  
INSERT INTO `SC` VALUES(95004,7,45);  
INSERT INTO `SC` VALUES(95005,7,75);  
  
INSERT INTO `SC` VALUES(95006,1,60);  
INSERT INTO `SC` VALUES(95006,4,90);

練習題數據庫

# 查詢與「劉晨」同一個系學習的學生  
SELECT sno,sname   
FROM student   
WHERE sdept = (SELECT sdept FROM student WHERE sname = "劉晨");  
  
  
SELECT s1.sno,s1.sname   
FROM student s1 JOIN student s2   
    ON  s1.Sdept = s2.Sdept  
WHERE s2.sname="劉晨";  
  
  
SELECT s1.sno,s1.sname   
FROM student s1 ,student s2   
WHERE      
    s1.Sdept = s2.Sdept  
    AND  
    s2.sname="劉晨";  
  
# 查詢選修了課程名爲‘信息系統’的學生學號和姓名  
  
SELECT student.sno,sname   
FROM student, sc, course   
WHERE student.sno = sc.sno   
    AND course.cno = sc.cno  
  AND course.cname = '信息系統';  
  
  
SELECT sno,sname   
FROM student   
WHERE sno IN   
    (SELECT sno FROM sc WHERE cno IN   
            (SELECT cno FROM course WHERE cname='信息系統'));  
  
# 查詢其餘系中比IS系任一學生年齡小的學生名單。  
SELECT sname,sage   
FROM student   
WHERE Sdept <> 'IS'   
    AND Sage < ANY(SELECT sage FROM student WHERE Sdept = 'IS');  
  
SELECT sname,sage   
FROM student   
WHERE Sdept <> 'IS'   
    AND Sage < (SELECT MAX(sage) FROM student WHERE Sdept = 'IS');  
  
# 查詢其餘系中比IS系全部學生年齡都小的學生名單。  
SELECT sname,sage  
FROM student   
WHERE Sdept <> 'IS'  
    AND Sage < ALL(SELECT sage FROM student WHERE Sdept = 'IS');  
  
  
# 組函數比ANY ALL要高效。  
SELECT sname,sage  
FROM student   
WHERE Sdept <> 'IS'  
    AND Sage < (Select MIN(Sage) FROM student WHERE Sdept = 'IS');

---[2013-05-10]---數據結構

相關文章
相關標籤/搜索