thumbnail 一問一答の一歩

問題1

表名や列名を別名に変更するのに使われる記号

ASが正解です

As(アズ)は「~として」という意味を持つ英語の前置詞の一つです。
ISも似たスペルと意味を持ちますが、こちらはSQLにおいてはNULLであるかどうかの条件判断のみに使用されます。
また、=>は矢印を無理やり作ったようなイメージで、プログラム言語によっては変数の値の代入に使用されますが、SQLにおいては使用されてないです。

問題2

重複する値を除外するSQL制約はどれか

DISTINCTが正解です

DISTINCT(ディスティンクト)は「はっきり異なる、区別出来る」という意味持つ英単語です。
識別出来る番号のみを表示するようにする命令文であるため、識別できなくなる重複する値は除外します。
他の選択肢であるUNION ALLは二つ異常のデータベースを重複を除外せずに合わせることです。

問題3

任意の文字列が含まれていることを条件に指定する式の指定

likeを使用が正解です

like(ライク)は「好き」という動詞での意味が有名ですが、ここでは「~に似た」という前置詞での意味で使用されています。
具体的にはデ-タの値の中に該当文字列が含まれているものを検索の対象とします。 isはイコ-ルと同じ意味の完全一致を検索するものであり、NULLの場合かどうかを検索条件とする条件式で使われますです。

問題4

SQLにおける0文字以上の任意の文字列を示すものはどれか

が正解です

%はよく特殊文字に使われることが多く、SQLにおいてはワイルドカ-ドという何が入ってもいいものして扱われます。
ワイルドカ-ドの書き方を知っておくと、部分一致や前方一致の検索もできるようになるので、デ-タ検索の効率をあげることができます。
_は任意の1文字を表すものであり、マス目を表すもののうち、機械で一番入力しやすいものと考えるとイメージしやすいです。
*はコマンドプロンプトではワイルドカードとして使われますが、SQLでは利用されません。

問題5

SQLにおけるNULLであるかを示す判定式

Is Nullが正解です

SQLのようなデータベースを扱うにおいて、NULLは特殊な値で、例外的な動きを行います。
NULLはその特殊な挙動を行うことから、見た目は空白文字や0と似ていても、基本的に別物として扱われ、完成したプログラムのテストなんかでも、必ずといっていいほど実行されます。
NULLが入っている変数はIS NullかIS Not Nullで判定を行う必要があり。=やで値の判定を行おうとしても、必ずFALSEを返します。
ちなみにサイト作成者は(変数)がNULLの際も含めてTRUEになるような条件を記載するSQL文を記載する際に
(変数)1
のコードで条件を満たしていると勘違いをして、コードの作成のミスをやらかしたことがあります。
NULLとNULLでないものを合わせて条件判断するときにはNVL関数などでNULLの場合に一時的に別な値(0や空白文字など)に変換した上で判定式を記載することが多いです。

問題6

GROUP BY で絞り込みを行う関数

HAVING (検索条件)が正解です

Have(ハブ)は「持っている」という意味を示します。
そのため、検索条件を含んでいるものを検索することができます。
他の選択肢のWHERE (検索条件)はSELCTやUPDATE文には使用されますが、GROUP BYに使用することは出来ないので誤りです。
ISはSQLではNULLであるかどうかを判定に用いられますが、こちらもGROUP BYには使われないので誤りです。

問題7

表の中から特定の行を取出す関数

SELECTが正解です

SELECT(セレクト)は「選択する」という意味を表す英単語です。
デ-タベ-スにおいてはSELECTは表の中から探したい表デ-タを含む行だけをピックアッブする便利な機能です。
基本情報技術者試験では、Selection文を用いて、どの表から、どんなデ-タを抽出するのかということは午後問題では頻出であるので、勉強の後半に差し掛かる頃には抑えられるようにしましょう。
なお、INSERTはデータの新規作成を行う機能です。また、Projectionは指定された行(横長)ではなく列(縦長)の取り出しを行います。

問題8

データベースに行を追加する関数

INSERTが正解です

INSERTは「入れる」という意味を持つ英単語です。
デ-タベ-スにおいても意味はそのままで、表の中に新規で表を作成します。
INSERTもSQL操作ではSELECTやUPDATEと並んでよく使用されるのでそんなのがあるんだなぁ程度に知ってはおくと、会社に入った時に役にはたちます。
ちなみにAlter Tableはデータベースの横の行ではなく縦の列を追加する関数、UPDATEはデータベースの値を更新する際に使用する関数です。

問題9

テーブル内の指定した条件に当てはまる一部の行を削除することができるSQL関数はどれか

DELETEが正解です

DELETEとTRANCATEとDROPの違いは全て削除に関するものであるためややこしいですが。ざっくりしたイメージのみをあげると

  • DELETE:表の一部の値のみを削除
  • TRANCATE:表全部の値のみを削除
  • DROP:表そのものを削除

と理解するとイメージしやすいです。
DROPとTRANCATE(トランケート)は情報処理技術者試験には出てこないので必ずしも覚える必要はないですが、データベースを扱う職場では割と出てくる言葉であるので知っておくと、職場の会話にはついていきやすくなります。
また、運用上、Delete分とUPDATE分は事故が起こりやすい部分なので、実行する前にバックアップをよく取られます。

問題10

表の列を作成や変更をするための関数

ALTER TABLEが正解です

Alter(オ-ルタ-)は「変更する」という意味を示す英単語であり、Tableはデ-タベ-スにおいて、表を意味しています。
AlterTable自体は基本情報技術者試験でそんなに出る印象はないのですが、(応用情報では普通に出る)会社で旧型のものから新型のものに改造するプロジェクトで「カラムが定義されていません」とのエラ-メッセージが表示されているときに時々使う印象があるので出題しています。


ALTER TABLE [テ-ブル名] ADD [列名 ] デ-タ型

問題11

SELECT文の基本形でSELECTの後に続くものはどれか

(列名) FROM (表名) WHERE (対象行の条件)が正解です

SQLを使わない限りSELECT文の基本形を書くことは一見なさそうですが、表計算ソフトのうち、GoogleスプレッドシートであればQUERY関数の中にSELECT文を書くことができるので、使用して書いてみるとイメージが掴みやすくなります。(似たソフトのEecelやCalcではできないのでご注意ください)
なお、INSERT INTO VALUES(列名)はINSERT文の基本形
UPDATE ( SET 列名=値 WHERE 更新対象行の条件)はUPDATEの基本形です。

問題12

INSERT文の基本形でINSERTの後ろに続くものはどれか

INTO (表名) VALUES(列名)が正解です

Insert文が使われる機会はSELECT文に比べると少ないですが、私は表(テーブル)の中身をまるっと他の表(テーブル)にコピーしたいときなんかにたまに使用することがあります。
コードの使用例は以下の通りです。


--コピー先のテーブルのデータを全て削除する
truncate table (コピー先のテーブル名)
/
--コピー元のテーブルの全ての値をコピー先のテーブルに新規作成する
insert into (コピー先のテーブル名)
select * from (コピー元のテーブル名)
/
--上記の処理の実行を確定して問題ないとSQLに伝える。
commit

このコード内のinsert文の中にはSELECT文が入っていて分かりにくい構造になってはいますが、VALUES(列名)の部分の代わりにSELECT文を用いて全列指定することで、コピー元の全列を含む行を全てコピー先に新規作成しています。
また、他の選択肢は他の命令文の基本の型の一部であり、
SELECT (列名) FROM (表名) WHERE (対象行の条件)がSELECT文の基本形
UPDATE ( SET 列名=値 WHERE 更新対象行の条件)がUPDATE文の基本形です。

問題13

UPDATE文の基本形

( SET 列名=値 WHERE 対象行の条件)が正解です

基本情報技術者試験ではSELECT分さえ知っておけば十分です。しかし、規模の大きいデータベースを扱うような状況になると、UPDATEを用いたデータをいっぺんに更新することで効率よくデ-タを変更することが出来るので、合わせて押さえておくと後々便利です。
例としてNULLが入っているデ-タを0に変更するSQL文を挙げると以下の通りです。


UPDATE [テーブル名] SET [列名]=0 WHERE [列名] IS NULL

また、他の選択肢はSELECT文、INSERT文の基本形です。