SQL

【SQL】 WITH句 ~ 共通テーブル式 ~

SQL

■ はじめに WITH についてメモ。 目次 【1】WITH 句 【2】使用可能なDB 【3】使用上の注意 【4】構文 【5】サンプル 例1:親子関係に使用 例2:最新データによる年間売上の増減 【1】WITH 句 * 共通テーブル式 (CTE, Common Table Expression) と呼…

【SQL】【ストアド】繰り返し処理 ~ WHILE文 / BREAK文 / CONTINUE文 ~

SQL

■ WHILE文 サンプル DECLARE @counter int; SET @counter = 0; WHILE (@counter < 100) BEGIN /* 繰り返したい処理 */ SET @counter = @counter + 1; END ■ BREAK文 サンプル DECLARE @counter int; SET @counter = 0; WHILE (@counter < 100) BEGIN /* 繰り…

【SQL】テーブルの結合 ~ 外部結合・LEFT/RIGHT/FULL JOIN ~

SQL

■ はじめに https://dk521123.hatenablog.com/entry/2010/02/05/131206 の続き。 今回は、外部結合について、扱う。 目次 【0】外部結合 の種類 【1】左外部結合(LEFT OUTER JOIN) 【2】右外部結合(RIGHT OUTER JOIN) 【3】完全外部結合(FULL OUTER…

【SQL】SQL文が実行されるまでの工程

■ はじめに * DBパフォーマンスを行うためには、 まず、どのような工程でSQL文が実行されるかを知ることが重要となってくる 目次 【1】SQL文が実行されるまでの工程 1)SQL文の解析処理(PARSE) 2)SQL文の書き換え 3)実行プランの作成 【3】クエリ・…

【SQL】テーブル結合 ~ 交差結合・CROSS JOIN ~

SQL

■ CROSS JOIN * 関係ないテーブル同士の結合 => 関連する列を明記せずにテーブルを結合可能 * Cartesian product = デカルト積、直積 => クロス結合、交差結合 ■ 構文 SELECT * FROM 【テーブル名1】 CROSS JOIN 【テーブル名2】 関連記事 テーブルの結合 …

【SQL】期間が重なるデータを取得するには

SQL

■ はじめに 例えば、ユーザが、From-Toで期間を選択して その期間内のデータをSQLで取得する方法について考える 目次 【1】期間が重なるデータを取得するには 1)図解 2)SQL構文 3)マトリックス(期待値) 【2】サンプル 1)SQL文 【1】期間が重なる…

【SQL】SQL View (ビュー)

SQL

■ はじめに SQL の View に関して、メモ。 目次 【1】View (ビュー)とは? 【2】メリット・デメリット 【3】構文 1)作成 2)削除 【4】サンプル 例1:その年の最新実行されたデータを取得するビュー(PostgreSQL) 【1】View (ビュー)とは? * 実テ…

【SQL】SQLのコメント文あれこれ

SQL

■ はじめに SQLのコメント文について扱う 目次 【1】コメント文 1)「--」 2)「/* */」 【2】テーブルに関するコメント文 1)テーブルのコメントを付ける 2)項目のコメントを付ける 【3】サンプル 【1】コメント文 1)「--」 * 一行コメント 2…

【SQL】データ削除 ~ DELETE文 / TRUNCATE TABLE文 ~

SQL

■ DELETE文 * DELETE文からWHERE句を省略すると、対象のテーブルからすべての行が削除されます => DELETE FROM テーブル名 構文 DELETE FROM テーブル名 WHERE 検索条件 例 DELETE FROM person WHERE id = 1; ※テストデータは、以下「■ 補足:テストデータ」…

【SQL】【SQL Server】【Oracle】DB Nullと空文字について

SQL

DB Nullと空文字 * SQL Server:nullと空文字は、別物として扱う * Oracle:nullと空文字は、nullとして扱う * 他のDBについては、「SELECT 1 WHERE '' = ''」「SELECT 1 WHERE '' IS NULL」を試してみるといい 比較の仕方 SQL Server * IS NULLを使用する …

【SQL】データ修正 ~ UPDATE文 ~

SQL

データ修正 * UPDATE文を使用する 構文 UPDATE [テーブル名] SET [変更対象項目] = [変更する値]; サンプル 例1 UPDATE tblName SET name = 'Mike' WHERE id = 001; 例2 /* データ修正 */ UPDATE HealthCheck SET Status = '元気' WHERE Status = '病気'; FR…

【SQL】ストアドプロシージャ / ファンクション

SQL

【1】ストアドに関して * SQLなどの手続き(Procedure) を あらかじめサーバ側で設定しておき(Store) クライアント側から呼び出すことで、 少ないコマンドで一連の手続きを実行できるもの 【2】利点 1)モジュール性の向上 * 部品としてまとめて使用できる…

【SQL】IN句 と BETWEEN句

SQL

■ IN句 / NOT IN句 * 「値1 か 値2 か ・・・・ のどれかに合う」データを返す * 指定した条件が、対象項目に入ってるかどうかを判定できる * 例えば、「全国の都道府県から、関東を抜き出して」ってことができる * 「IN」は「OR」と同じ意味であるが、構文…

【SQL】パフォーマンスの良いSQLを記述 ~ 全般編 ~

■ はじめに パフォーマンスの良いSQLを記述する方法を記す。 目次 【1】全般 1)クエリの書き方を統一する 2)ワイルドカード「*」を使用しない 3)表に別名を付ける 4)DISTINCTの使用は、極力避ける 【2】インデックス 【3】相関サブクエリ / 自己…

【SQL】SQL ~ CASE文 ~

SQL

■ はじめに SQL の CASE文について扱う。 目次 【1】CASE文 【2】種類 1)単純CASE式(simple case) 2)検索CASE式(searched case) 【3】使用上の注意 【4】DBNullの判定 【1】CASE文 * 非依存(SQL-92で標準) 【2】種類 1)単純CASE式(simple c…

【SQL】GROUP BY句

SQL

■ はじめに SQL の GROUP BY句について取り上げる 目次 【1】GROUP BY 【2】構文 【3】サンプル 例1:コードごとに合計金額を算出する 例2:年月ごとのスケジュール数を表示 【4】使用上の注意 【1】GROUP BY * データを集結する * 複数でもグルーピ…

【SQL】HAVING句

SQL

■ はじめに SQL の HAVING句 について扱う 目次 【1】HAVING句 【2】サンプル 【3】使用上の注意 1)パフォーマンスについて 2)WHERE/GROUP BY/HAVINGの処理順に注意 【1】HAVING句 * WHERE句では 集計関数を用いることができないため、代わりに HAVI…

【SQL】データ追加 ~ INSERT文 / SELECT INSERT文 ~

SQL

■ 準備 使用するテーブル(PostgreSQLの場合) person CREATE TABLE person ( id character(8) NOT NULL, name character varying(100), sex character(1), updatedate timestamp without time zone, CONSTRAINT person_pkey PRIMARY KEY (id) ) worker CREA…

【SQL】一時的なテーブル

SQL

一時的なテーブルの作成 例 CREATE GLOBAL TEMPORARY TABLE tempTable( tempId NVARCHAR2(8) , tempName NVARCHAR2(20) );

【SQL】EXISTS / NOT EXISTS文 ~ 存在有無を確認 ~

SQL

■ はじめに SQLで存在有無を確認するなどに利用できる EXISTS / NOT EXISTS文について扱う。 目次 【1】EXISTS 【2】NOT EXISTS 【1】EXISTS * 存在することを条件に入れる サンプル SELECT * FROM table1 WHERE EXISTS ( SELECT * FROM table2 WHERE tab…

【SQL】CREATE TABLE / DROP TABLE ~ テーブル作成・削除 ~

SQL

■ はじめに SQL文の CREATE TABLE / DROP TABLE ■ テーブルを作成 構文 CREATE TABLE 【テーブル名】 ( 【カラム名1】 【データ定義1】 NOT NULL, 【カラム名2】 【データ定義2】 ) ■ テーブルを削除 構文 DROP TABLE 【テーブル名】; ■ テーブル定義の参照 …

【SQL】テーブルの結合 ~完全結合・Union / Union All ~

SQL

■ はじめに SQLの UNION / UNION ALL について、学ぶ。 目次 【1】 UNION 【2】 UNION ALL 【3】 Union と Union All の違い 【4】 使用上の注意 【1】 UNION * 1つの条件+別の条件を繋げる時(和集合の実現)に役立つ ※ 和集合とは... => 2つの集合A,B…

【SQL】ORDER BY句

SQL

■ はじめに SQL の ORDER BY句 について、メモ。 目次 【1】ORDER BY句 【2】構文 1)並び順の指定 【3】使用上の注意 【1】ORDER BY句 * 取り出した結果を並べ替える * ORDER BY句がないと、出力順は保障されないので注意。 【2】構文 SELECT 【フィ…

【SQL】エイリアス

SQL

■ はじめに SQLのエイリアス(Alias)について扱う 目次 【1】エイリアス 【2】エイリアス を指定する 【3】サンプル 【4】補足:パフォーマンスについて 【1】エイリアス テーブル名 および フィールド名 を別名にする 【2】エイリアス を指定する SELE…

【SQL】テーブルの結合 ~ 内部結合・INNER JOIN ~

SQL

■ はじめに 内部結合 (INNER JOIN) に関するメモ。 目次 【1】構文 ・USING について 【2】サンプル 【1】構文 SELECT * FROM 表名1 INNER JOIN 表名2 ON 表名1.フィールド名 = 表名2.フィールド名 WHERE 抽出条件 意味 「表名1」に、「表名2」を結合する…

【SQL】DISTINCT文 ~重複を統合する~

SQL

DISTINCT * 重複を統合(重複した行を1つにまとめる) 構文 SELECT DISTINCT フィールド名 FROM テーブル名