四、數據庫及SQL部分--《面試題集》

四、數據庫及SQL部分:(共4題:基礎3道,中等難度1道)

106、有3個表(15分鐘):【基礎】

Student 學生表 (學號,姓名,性別,年齡,組織部門)

Course 課程表 (編號,課程名稱)

Sc 選課表 (學號,課程編號,成績)

表結構如下:

 

1)寫一個SQL語句,查詢選修了’計算機原理’的學生學號和姓名(3分鐘)

2)寫一個SQL語句,查詢’周星馳’同學選修了的課程名字(3分鐘)

3)寫一個SQL語句,查詢選修了5門課程的學生學號和姓名(9分鐘)

答:1)SQL語句如下:

    select stu.sno, stu.sname from Student stu

    where (select count(*) from sc where sno=stu.sno and cno =

             (select cno from Course where cname='計算機原理')) != 0;

    2SQL語句如下

    select cname from Course

    where cno in ( select cno from sc where sno =

                  (select sno from Student where sname='周星馳'));

    3SQL語句如下

    select stu.sno, stu.sname from student stu

    where (select count(*) from sc where sno=stu.sno) = 5;

107、有三張表,學生表S,課程C,學生課程表SC,學生可以選修多門課程,一門課程可以被多個學生選修,通過SC表關聯。【基礎】

1)寫出建表語句;

2)寫出SQL語句,查詢選修了所有選修課程的學生;

3)寫出SQL語句,查詢選修了至少5門以上的課程的學生。

答:1)建表語句如下(mysql數據庫):

    create table s(id integer primary key, name varchar(20));

    create table c(id integer primary key, name varchar(20));

    create table sc(

        sid integer references s(id),

        cid integer references c(id),

        primary key(sid,cid)

     );

    2SQL語句如下

    select stu.id, stu.name from s stu

        where (select count(*) from sc where sid=stu.id)

            = (select count(*) from c);

    3SQL語句如下

    select stu.id, stu.name from s stu

        where (select count(*) from sc where sid=stu.id)>=5;

108、數據庫表(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);

109、有如下兩張表:【中等難度】

city                               state

CityNo

CityName

StateNo

BJ

北京

Null

SH

上海

Null

GZ

廣州

GD

DL

大連

LN

State No

State Name

GD

廣東

LN

遼寧

SD

山東

NMG

內蒙古

 

 

 

 

 

 

欲得到如下結果

City No  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); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章