SQL 試験問題(2005/01/26)

*正解の個数は問題により異なるので注意すること

1. seiseki表において科目別に得点の最大値を求めるSQL文を選びなさい。 但し、最大値が60点以上のみ表示することにする。

(1) SELECT 科目,MAX(得点) FROM seiseki WHERE MAX(得点)>=60  GROUP BY 科目;
(2) SELECT 科目,MAX(得点) FROM seiseki WHERE 得点>=60  GROUP BY 科目;
(3) SELECT 科目,MAX(得点) FROM seiseki GROUP BY 科目 HAVING 得点 >=60  ;
(4) SELECT 科目,MAX(得点) FROM seiseki GROUP BY 科目 HAVING MAX(得点) >=60  ;

2. seiseki表において科目別に得点の最低点を求めるSQL文を選びなさい。

(1) SELECT 科目,MIN(得点) FROM seiseki GROUP BY 得点;
(2) SELECT 科目,SUM(得点) FROM seiseki;
(3) SELECT 科目,MIN(得点) FROM seiseki GROUP BY 科目;
(4) SELECT 科目,AVG(得点) FROM seiseki;

3. meibo表のname列の値の2文字目が‘川’である行だけを検索するためのWHERE句として正しいものを選びなさい。

(A) WHERE name LIKE '%川_' ;
(B) WHERE name LIKE '_川_' ;
(C) WHERE name LIKE '%川%' ;
(D) WHERE name LIKE '_川%' ;

4. 出版社一覧 と 書籍台帳 を等価結合して、出版社一覧 の 出版社 列と 書籍台帳 の 書名 列 を表示したい。正しいSQL文を選択しなさい。

(1) SELECT shu.出版社,sho.書名 FROM 出版社一覧 shu , 書籍台帳 sho  WHERE sho.出版社コード = shu.出版社コード;
(2) SELECT 出版社,書名 FROM 出版社一覧,書籍台帳;
(3) SELECT 出版社一覧.出版社,書籍台帳.書名 FROM 出版社一覧,書籍台帳 WHERE 書籍台帳.出版社コード = 出版社一覧.出版社コード;
(4)  SELECT shu.出版社,sho.書名 FROM  書籍台帳 shu , 出版社一覧 sho WHERE shu.出版社コード = sho.出版社コード;

5. 次のような検索結果を得るSQL文を選んでください。

riyoushadaichou 表からの検索結果

  NAME
  ---------------
  yamamura
  yamada
  yazawa
  yada

(1) SELECT name FROM riyoushadaichou WHERE name LIKE 'ya%' ;
(2) SELECT name FROM riyoushadaichou WHERE name LIKE '%a';
(3) SELECT name FROM riyoushadaichou WHERE name LIKE 'ya_' ;
(4) SELECT name FROM riyoushadaichou WHERE name = 'ya%' ;

6. seiseki表から得点tokutenのついていない学生を検索する場合、正しいSQL文はどれか選択しなさい。

(1) SELECT name FROM seiseki WHERE tokuten = NULL;
(2) SELECT name FROM seiseki WHERE tokuten IS NULL;
(3) SELECT name FROM seiseki WHERE tokuten IS 'NULL';
(4) SELECT name FROM seiseki WHERE tokuten IS NOT NULL;

7. 適切なSQL文であるものを選んでください。

(1)SELECT name,birthday FROM seisekihyou WHERE gakunen = 1 ORDER BY DESC birthday;
(2)SELECT name,gakunen FROM seisekihyou ORDER BY gakunen ,name WHERE gakunen =1;
(3)SELECT name,seiseki,gakunen FROM seisekihyou WHERE seiseki <= 55 ORDER BY birthday;
(4)SELECT name,seiseki FROM seisekihyou WHERE  gakunen = 1 OR 2;

8. tanaka さんと ootaさんの給与kyuuyoを現在の1.05増しに更新したい。次のどの文が適切ですか?

(1) UPDATE emp SET kyuuyo = kyuuyo * 1.05 WHERE ename = 'tanaka' AND SET kyuuyo = kyuuyo *1.05 WHERE ename ='oota';
(2) UPDATE emp SET kyuuyo = kyuuyo *1.05 WHERE ename IN('tanaka','oota');
(3) 一文で実行することはできない

9. 特定の列を選択して重複がないように表示するSQL文を選択しなさい。

(1) SELECT DISTINCT 系 FROM 学生;
(2) DISTINCT SELECT 系 , 学年 FROM 学生;
(3) SELECT 系 , DISTINCT 学年 FROM 学生;
(4) SELECT 系 , 学年 FROM DISTINCT(学生);

10. 次のSELECT文で正しいものを2つ選びなさい。

(A) SELECT name FROM meibo WHERE job = 'SALESMAN';
(B) SELECT name FROM meibo WHERE job = GAKUSEI ;
(C) SELECT name FROM meibo WHERE birthday  >=  '1957-04-01';
(D) SELECT name FROM meibo WHERE birthday  >=  1980-03-21;
birthday列の値は日付、job列の値は文字列であるとします。

10. seiseki表から得点がNULL値でない行数を求めるSQL文を選びなさい。

(1) SELECT SUM(得点) FROM seiseki;
(2) SELECT COUNT(*) FROM seiseki;
(3) SELECT AVG(得点) FROM seiseki;
(4) SELECT COUNT(得点) FROM seiseki;

11. 全学生のseiseki表から科目名と得点を選択し、最初に科目名でソートしてから得点で降順にソートしたい。正しいSQL文はどれか選択しなさ い。

(1) SELECT 科目名,得点 FROM seiseki ORDER BY 科目名 ,得点 DESC;
(2) SELECT 科目名,得点 FROM seiseki ORDER BY 科目名 DESC,得点 ASC;
(3) SELECT 科目名,得点 FROM seiseki ORDER BY 科目名 ,得点;
(4) SELECT 科目名,得点 FROM seiseki ORDER BY 得点 DESC,科目名 ASC;