準備數據: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]---數據結構