スポンサーリンク

【応用情報】午後試験データベース分野の頻出SQLまとめ。

1.Programing
スポンサーリンク

今回の記事は応用情報午後試験のデータベース分野で出題されるSQLをまとめてみました。応用情報午後試験でデータベース分野を受験しようとしている方は是非参考にしてみてください。

スポンサーリンク

頻出SQL文まとめ

SQL文に関しては午前・午後両方で問われます。午前試験では基本的にはSQLを実行した後の結果やSQLの機能や関数の意味などが問われることが多いです。ただ、かなり回数は少ないですが、SQLを空欄に当てはめるなども出題されていた(過去15年分しか確認していませんが。。)ので是非押さえておきましょう。

下記の流れで紹介していきます。

  • SQL関連用語
  • 頻出SQL文

SQL関連用語

ストアドプロシージャ(Stored Procedure)

一連の処理手順をプログラムとしてまとめて実行できる処理モジュールをDBMS上に用意したもの。

VARCHAR・CHAR

CHAR(10)は常に10バイトでそれ以下のバイトの場合はバイト数がその数に減る。そのバイト数は固定。VARCHARは可変長。補足:日本語は2バイト。

直積

直積はデータ操作で、2つの関係(表)に含まれる要素のすべての組合せから成る表のことです。

べき等

複数回同一操作をしても、一回しか実行しなくても結果が同じになる(selectなど)

レプリケーション

一つのノードへのレコード挿入を他のノードでも実行する

頻出SQL文

基本SQL

最低限CRUDは抑えときましょう。

create table テーブル名 (id int, name varchar(10)); -- テーブル作成
insert into テーブル名 ... -- データ追加
select * from テーブル名 ... -- データ検索
update テーブル名 set = ... -- データ更新
delete テーブル名 where ... -- データ削除

... where id = 1 -- where句 条件で結果を絞る
... order by id -- order by句 条件でソート

GROUP BY句

ほぼ確実に出題されている気がします。SQLノータッチの方は答えづらいので、少しでも勉強している方はかなり簡単に回答できます。基本的にgroupごとに結果をまとめて取得するものです。

クラス  点数
a      10
a      20
b      30
a      30
b      30

select クラス,avg(点数) from 上のテーブル group by クラス
------
a 20
b 30
------

ちなみにgroup byしたデータを絞る場合はwhereでなく、「having」を使う。これも良く出る。

クラス  点数
a      10
a      20
b      30
a      30
b      30

select クラス,avg(点数) from 上のテーブル group by クラス having クラス = a
------
a 20
------

最後に、group byを実行するとselect分で出力できる項目にはgroup by でグルーピングした項目と計算系(sumやavg、countなど)のみです。このルールで午前午後かなりの問題が解けます。

クラス  点数  先生
a      10   aaaさん
a      20   aaaさん
b      30   bbbさん
a      30   aaaさん
b      30   bbbさん

select クラス,avg(点数),先生 from 上のテーブル group by クラス,先生
------
a 20 aaaさん
b 30 bbbさん
------

上記のように先生を結果に出力したい場合は、group by句にそのカラムも追加する必要があります。

group by長くなりましたがかなり重要。

計算系SQL

先ほどのgroup by句でも説明に使いましたがこちらもほぼ頻出です。

select count(*) from ... -- データの個数
select max(項目) from ... -- 点数などの項目の一番上のデータを取得
select sum(*) from ... -- 点数などの項目合計を取得
select avg(*) from ... -- 点数などの項目の平均点を取得

in句

こちらもほぼ頻出。条件の中にデータが含まれているかの条件句です。

select count(*) from テーブル where 点数 in (0,1,2,3) -- 0,1,2,3の中に含まれている点数のデータが抽出される

exists句

こちらもほぼ頻出。条件の中にデータが存在しているかの条件句です。

select count(*) from テーブル where exists 点数 < 30 -- 30以下の点数のデータ抽出される

副問い合わせ(サブクエリ)

こちらも必ず出ます。かっこで囲ってSELECT文の結果を使います。みた方が早いです。

-- 通蔵のselect文
select id, name from テーブル where id in (0,1,2) ;
-- サブクエリを含むselect文(上記とやっていることは同じだがin句の中身をselect文で取得している)
select id, name from テーブル where id in (select id from テーブル where id < 3); 

-- 通常のinsert文
insert into テーブル (id, name) values (1, 'aaa');
-- サブクエリを使用したinsert
insert into テーブル (id, name) values (select id, name from 取得元テーブル where id < 100);

join句

こちらも必ず出題されます。テーブルを結合します。結合条件が違うという差があります。

  • inner join:内部結合
  • left join:外部結合

ここまでがかなり良く問われる頻出SQLです。

頻出ではないがよく聞かれるSQL

カラム定義

create文が出ることまあまああり、この辺りのカラム定義で制約をつけるSQLは知っておく方が良いです。主キー、一意制約、外部キー、not Null、デフォルト値セット、参照、自動採番をカラムに設定するCREATE文です。

CREATE TABLE SAMPLETABLE
(
  no int auto_increment
  id int PRIMARY KEY,
  name varchar(50) UNIQUE NOT NULL,
  tel varchar(12) default '000-0000-0000'
  FOREIGN KEY(refNo) REFERENCES anotherTable(refNo)
);

between句

こちらもほぼ頻出。条件の間にデータが存在しているかの条件句です。

select count(*) from テーブル where between 点数 40 and 50 -- 40点以上50点以下の点数のデータ

GRANT

稀に聞かれます。GRANT文は、特定のユーザに表などのデータベースオブジェクトに対する権限を付与するSQL文です。

GRANT {権限3,権限2} ON テーブル TO ユーザ;
GRANT SELECT, UPDATE ON table1 TO user1;

REVOKEで権限削除。使用方法はGRANTの部分を置き換えるのみです。

念の為押さえておくべきSQL

CREATE ASSERTION

こちらは午前の用語で出ていたような気がします。CREATE ASSERTION文は、スキーマ内の複数のテーブルに対して制約を適用するSQL文です。テーブルAの合計がテーブルB・Cの合計になるという制約をつけるSQL。

CREATE ASSERTION totalCount
CHECK (SELECT COUNT(*) FROM TableA) = (SELECT COUNT(*) FROM TableB) + (SELECT COUNT(*) FROM TableB);

CASCADE

こちらは午前の用語で出ていたような気がします。参照データの同時削除を行う。

オン.com参照してます。

ALTER TABLE

出ているのをみたことはないですが、念の為。カラムの追加・更新・削除などで使用。

-- 単一カラム追加
ALTER TABLE sample ADD COLUMN addCol VARCHAR(8);
-- 複数の場合
ALTER TABLE sample ADD (addCol1 VARCHAR(8),addCol2 VARCHAR(8));

-- カラムの定義変更(複数は上記と同じ要領)
ALTER TABLE sample MODIFY COLUMN addCol VARCHAR(8);

-- カラム削除(複数は上記と同じ要領)
ALTER TABLE sample DROP COLUMN address;

以上で今回の記事は終了です。他にも応用情報関連の記事を記載しているので是非参考にしてみてください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

1.Programing
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました