1、有3 個表,表結構如下: Student 學生表(學號,姓名,性別,年齡,組織部門) Course 課程表(編號,課程名稱) Sc 選課表(學號,課程編號,成績)。 1)寫一個SQL 語句,查詢選修了’電腦原理’的學生學號和姓名。 2)寫一個SQL 語句,查詢’王小明’同學選修了的課程名字。 ...
1、有3 個表,表結構如下:
Student 學生表(學號,姓名,性別,年齡,組織部門)
Course 課程表(編號,課程名稱)
Sc 選課表(學號,課程編號,成績)。
1)寫一個SQL 語句,查詢選修了’電腦原理’的學生學號和姓名。
select student.sno, student.sname from student left join sc on student.sno=sc.sno left join course on sc.cno=course.cno where course.cname='電腦原理';
2)寫一個SQL 語句,查詢’王小明’同學選修了的課程名字。
select cname from Course where cno in ( select cno from sc where sno = (select sno from Student where sname='王小明'));
3)寫一個SQL 語句,查詢選修了5 門課程的學生學號和姓名
select stu.sno, stu.sname from student stu
where (select count(*) from sc where sno=stu.sno) = 5;
2、有三張表,學生表S,課程C,學生課程表SC,學生可以選修多門課程,一門課程可以被多個學生選修,通過SC 表關聯。
1)寫出建表語句;
select stu.sno, stu.sname from student stu
where (select count(*) from sc where sno=stu.sno) = 5;
2)寫出SQL 語句,查詢選修了所有選修課程的學生;
select stu.id, stu.name from s stu
where (select count(*) from sc where sid=stu.id) = (select count(*) from c);
3)寫出SQL 語句,查詢選修了至少5 門以上的課程的學生。
select stu.id, stu.name from s stu
where (select count(*) from sc where sid=stu.id)>=5;
3、資料庫表(Test)結構如下:
ID |
NAME |
AGE |
MANAGER(所屬主管人ID) |
106 |
A |
30 |
104 |
109 |
B |
19 |
104 |
104 |
C |
20 |
111 |
107 |
D |
35 |
109 |
112 |
E |
25 |
120 |
119 |
F |
45 |
null |
要求:列出所有年齡比所屬主管年齡大的人的ID 和名字?
答:SQL 語句如下:
select employee.name from test employee where employee.age > (select manager.age from test manager where manager.id=employee.manager);
4、有如下兩張表:
表city:表state:
CityNo |
CityName |
StateNo |
BJ |
北京 |
Null |
SH |
上海 |
Null |
GZ |
廣州 |
GD |
DL |
大連 |
LN |
欲得到如下結果:
CityNo City Name State No State Name
BJ 北京 (Null)(Null)
DL 大連 LN 遼寧
GZ 廣州 GD 廣東
SH 上海 (Null) (Null)
寫出相應的SQL 語句。
答:SQL 語句為:
SELECT C.CITYNO, C.CITYNAME, C.STATENO, S.STATENAME FROM CITY C, STATE S WHERE C.STATENO=S.STATENO ORDER BY(C.CITYNO);