技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

SQL

動的SQLとは?

SQL

「動的SQL」とは、入力値に従ってプログラムにより柔軟にSQL文を生成することを指します。条件が外から与えられる場合に便利です。 例えば、以下のようなユーザーマスターテーブルがあるとします。 create table user_master(user_id CHAR(4) NOT NULL,user_…

SQL:where 1 = 1の使い所

SQL

SQL文の条件指定で"where 1 = 1"を指定した場合、この条件は必ず真になり、全てのカラムが条件を満たすようになります。これはSQLインジェクションで用いられることで有名ですが、プログラムでSQL文を生成する時に"where 1 = 1"を利用すると便利なことがあり…

テーブル結合のキーはテーブル間で同一の値を用いること

SQL

当たり前のことなのですが、テーブル結合の際には、結合に必要なキーはテーブル間で同一の値を用いて、結び付けができるようにする必要があります。プログラムでキーとなる値を順次生成する場合、テーブルへのinsertの際にテーブル毎に別々の値を生成してし…

テーブル結合でキー指定が不足すると意図せず直積結合になってしまう

SQL

タイトルの通りです。SQLでテーブル結合する際にありがちなミスの一つだと思うので、情報展開します。 ---------------------- 例えば、以下のようなテーブルがあるとします。 ・社員マスタテーブルcreate table employee_master(company_id CHAR(3) NOT NUL…

Select文の結果を好きな順番に並び替える

SQL

既存データを使用してテストをする場合、特定の項目(社員番号や電話番号等、ソートキーになり得る項目)の順番にテストすることは少ないので、特定の項目でorder byするだけではテーブルのレコードをテスト順通りに並び替えられないことが多いです。 そこで…

外部結合で結合条件をWHERE句に記述してしまうと片方のテーブルにしかないレコードが抽出されない

SQL

タイトルの通りですが、実務でちょっとうっかりしていたのでメモです。 ---------------------- 例えば、・ユーザがログインした日時を管理するテーブルと、ユーザ名の履歴テーブルがある・ユーザがログインした時、ユーザ名が存在しない場合がある・ユーザ…

情報処理技術者試験対策「select文の結果の結合等(集合演算子)」

今回は、select文の結果を結合する文法の紹介です。結果を結合するためには、集合演算子のUNION(重複排除したい場合はUNION ALL)を用います。実務では複数のselect文の結果を1回のSQL文発行で取得したいことが結構あるので、知っておくと便利です。情報処理…

情報処理技術者試験対策「SQL(副問合せ・相関副問合せ)」

今回は副問合せと相関副問合せの紹介です。副問合せは試験だけでなく実務でも頻出です。相関副問合せについては、副問合せでも同じ検索結果を出すことが可能なので実務では忘れがちかもしれませんが、試験には出題されますし、性能面を考慮すると相関副問合…

情報処理技術者試験対策「SQL(重複排除と集計)」

今回は重複排除(distinct句)と集計(group by)の紹介です。どちらも挙動が似ているのでまとめて紹介します。実務で使うだけでなく、どちらも試験頻出です。 【機能説明】・重複排除 select文の結果について、重複を排除することができる。 ・集計 指定したカ…

deleteの前にselectをしてミスを防ぐ

作業ミスを防ぐためのちょっとしたテクニックです。参考書にはあまり載っていない暗黙知的なテクニックで、運が良ければ先輩から教えてもらえるのですが、逆に言うと運が悪いと教えてもらえないかもしれないので、文章に起こします。 特にオートコミット(co…

情報処理技術者試験対策「SQL(取得結果に対する条件判定)」

SELECT文で取得した結果に対して、CASE式を使用することで条件判定が可能です。条件判定を行うことで、SQL文の出力結果を変えることができます。プログラムのIF文の判定をSQL文の中で行っているようなイメージであり、プログラムを作るまでもない作業で使用…

情報処理技術者試験対策「SQL(取得結果に対する演算子の利用)」

SELECT文で取得した結果に対して、演算子を使うことで文字列結合や計算が可能です。これを使うことで、プログラムで実装していたロジックをSQL文に組み込むことが可能になりますし、副問い合わせで使用すれば「抽出→抽出結果をプログラムで加工→加工した結果…

情報処理技術者試験対策「SQL(テーブル結合)」

今回はSQL文のテーブル結合について、例を出して簡単にまとめます。 情報処理技術者試験で出題されるのもありますが、内部結合と左外部結合は実務でも頻出です。プログラムを作る時に必要になるだけでなく、テストデータを確認する時に使用することもありま…

情報処理技術者試験対策「SQL(制約関連の細かい文法)」

今回の記事では、実務ではなかなか見ることがないが情報処理技術者試験では出る可能性がある制約関連の文法を紹介したいと思います。 実務で良く見る制約としては、一意でなければならずNULL値も許可しない主キー制約(PRIMARY KEY制約)、値が一意でなければ…

情報処理技術者試験対策「SQL(外部キー)」

目次 https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM -------------------------------今回は、SQLの外部キー(参照制約)について書きます。外部キーはPG・SEなら知っておくべき基礎的な文法だと思うのですが、実務だと使わない現場ではとことん使わな…