子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

SQL

【SQL】【SQL Server】テンポラリーテーブルとは

SQL Serverにおけるテンポラリーテーブルについて学んだのでメモ。SQL Serverにおけるテンポラリーテーブルには「ローカル一時テーブル」と「グローバル一時テーブル」の2つがあるらしい。ローカル一時テーブル テーブル名の先頭に「#」を付与。 作成したユ…

【SQL】【SQL Server】結合して抽出しているテーブルの元データを分かりやすく取る方法2

以前次のような記事を書いた。 stsa.hatenablog.comこの内容でもまあ、目的は達成しているのだけどいかんせんダサい。 何がダサいかって、テーブルごとに範囲を選択して切り取らないといけないので手間だ。そのため、別の方法を考えてみた。 考えた結果、キ…

【SQL】【SQL Server】インデックス設計についてまとめてみた

データベースでSQLを扱う際に不可欠なインデックス設計についてまとめてみました。 個人的にSQL Serverを使うことが多いので、割とSQL Server寄りの話になっています。 インデックスとは ・インデックス(索引)は、データベースの性能を向上させる方法の一…

【SQL】【SQL Server】結合して抽出しているテーブルの元データを分かりやすく取る方法

結合して抽出しているテーブルの元データを分かりやすく取る方法についてです。ちょっとこれだけだと分かりにくいので補足説明。例えばテーブルwork1、work2があって結合してデータを抽出している。 その際に、抽出できるwork1とwork2の元データをそれぞれ取…

【SQL】【SQLServer】IDENTITYの挙動について

今日もSQL Serverネタです。連番を自動で埋めてくれる列IDENTITYの挙動についてです。このIDENTITYはROLLBACKすると連番ではなくなるらしい。おっと思ったのでメモ。例えば1~10までINSERTしたけど、なんかの理由でROLLBACKしてしまうと、 次埋めるときは11か…

【SQL】【SQL Server】いろんな型にNULLと空文字を入れてみた結果まとめ

データベースにはいろんな型があります。 ちゃんと意図した値が入ってくるなら問題はないのだけど、意図しない値が入ることもある。 そしてNULLとか空文字が入った時どうなるのか分からないものがあったので、この際一覧にしてみた。 今回はいろんな型にNULL…

【SQL】【SQL Server】SELECTステートメントにサブクエリ(副問合せ)を書く

SELECTステートメントにサブクエリを書く。 今までサブクエリはFROM句やWHERE句には使ってたけど、SELECTにも書けることを知ったのでメモ。 ていうかどういう動きになるのかよくわからなかったので検証。DBは今回はSQL Serverです。早速SQLですが今回は下記…

【SQL】【SQL Server】紐付かないテーブル同士で片方がデータがなくても抽出する方法

紐付かないテーブル同士で片方がデータがなくても抽出する方法についてです。 どんなタイミングでそういうことをしたくなるのか、なかなかタイミングはないとは思うけどちょっと詰まったのでメモ。例えば、work1というテーブルがあってこちらは0〜複数レコー…

【SQL】【SQL Server】交差結合について

SQLで交差結合についてわかっていなかったのでメモ。 今回はDBはSQL Server。よく、下のようなFROM句に複数のテーブル名があってSELECTすることがある。 SELECT * FROM work1,work2; で、work1にはデータがあってwork2にはデータがない時にSELECTした時に何…

【SQL】SQLを使ってデータパターンの一覧を作ってみる

SQLを使ってデータパターンの一覧を作ってみたのでメモ。 今回は対象はSQL Serverです。方法としては直積(CROSS JOIN)で作成します。まずは、テーブル作成 CREATE TABLE Table1 ([id] int, [ddata] varchar(1)) ; CREATE TABLE Table2 ([id2] int, [ddata2] …

【MySQL】【SQL】10進数を8進数にするSQL

本日はMySQLで10進数を8進数にするSQL文についてです。 (こんなんいつ使うんだ。) OCT関数を使用すると、10進数を8進数にした文字列を取得することができます。では早速、SQLと実行結果です。SQL select oct(7),oct(8),oct(9)実行結果 以上、10進数を8進数に…

【MySQL】【SQL】紀元0年1月1日からの日数を得るSQL

本日はMySQLで紀元0年1月1日からの日数を得るSQL文についてです。TO_DAYS関数を使用すると、紀元0年1月1日からの日数を取得することができます。では早速、SQLと実行結果です。 日付は本日の日付で、2020年6月3日を指定します。SQL select to_days('2020-06-…

【MySQL】【SQL】10進数の数値を2進数に変換するSQL

本日は10進数の数値を2進数に変換するSQLについてです。今回はサンプルとして、MySQLでやってみたいと思います。SQLで数値を2進数に変換するには、BIN関数というものを使用します。 (この関数はMySQLしかないため、今回の内容はMySQLでのみ使える内容になっ…

【Oracle】【SQL】ASCIIコードを文字に変換するSQL

以前こちらの記事で、文字をASCIIコードに変換するSQLについて書いていました。 stsa.hatenablog.com本日はその逆で、ASCIIコードを文字に変換するSQLについてです。今回もサンプルとして、Oracleでやってみたいと思います。SQLでASCIIコードを文字に変換す…

【Oracle】【SQL】文字をASCIIコードに変換するSQL

本日は文字をASCIIコードに変換するSQLについてです。今回はサンプルとして、Oracleでやってみたいと思います。SQLで文字をASCIIコードに変換するには、ASCII関数というものを使用します。では早速、SQLと実行結果の例です。SQL SELECT ASCII('A'),ASCII('#'…

【Oracle】【SQL】絶対値を出力するSQL

本日は絶対値を出力するSQL文についてです。今回はサンプルとして、Oracleでやってみたいと思います。SQLで絶対値を求めるのには、ABS関数というものを使用します。では早速、SQLと実行結果です。SQL SELECT ABS(-99) FROM DUAL;実行結果 「-99」の実行結果…

Web上で様々なDBのSQLやプログラミング言語を実行できるサイト

Web上で様々なDBのSQLやプログラミング言語を実行できるサイトがあったのでメモ。 rextester.comすごいとしか言いようがない。。。

PL/SQLの基本まとめ

最近業務ではOracle DBを使用することがあります。 Oracleには、PL/SQLというものがあると知ったのでそれについて自分なりにまとめてみました。 今回の内容は私が勉強したPL/SQLについての基本のまとめです。 PL/SQLとは PL/SQL(Procedure Language/Structur…

【Oracle】【SQL】ROW_NUMBER関数で行番号取得する例(partition byを使用)

OracleのROW_NUMBER関数で行番号取得する例(partition byを使用)についてです。 partition byを使うシーンとしては、何かのデータ毎に順位付けをしたい場合に使います。例に使うテーブルとデータは以下を使用します。 CREATE TABLE Table1 ("id" int, "dvalu…

【Oracle】【SQL】ROW_NUMBER関数で行番号取得する例

OracleのROW_NUMBER関数で行番号取得する例についてです。例に使うテーブルとデータは以下を使用します。 CREATE TABLE Table1 ("id" int, "dvalue" int, "ddata" varchar2(1)) ; INSERT ALL INTO Table1 ("id", "dvalue", "ddata") VALUES (1, 200, 'A') IN…

【Oracle】デバッグしないで実行したSQLの履歴を確認する方法

Oracleで実行したSQLの履歴を確認する方法についてです。大規模なアプリケーションの裏側で動的にSQLを作成するようなことは多々あると思います。 そんなときわざわざデバッグしてどんなSQLが実行されているのか見るのはとても手間だと思います。 そんなとき…

複数行を1行にまとめるSQL

複数行を1行にまとめるSQLについてです。 対象DBはOracleです。複数行を1行にまとめるにはLISTAGG関数というものを使用します。参考までにテスト的なテーブルとデータ。 create table testd ( id char(3) , keydata char(10), ddata char(10) ); INSERT INTO…

SQLで縦横変換の例

今日はSQLで縦横変換についての内容です。 対象のDBはOracleです。テーブルで列の値によって取得結果を新しい列として作り出したい時があります。 そういう時に使えるSQLの例になっています。もともと縦に持っていたデータを横(新しい列)にするので縦横変換…

SQLをブラウザ上で実行結果を確認できるサイト

SQLをブラウザ上で実行結果を確認できるサイトがないかと探していたらSQL Fiddleというサイトがありました。sqlfiddle.com何より素晴らしいのはいろいろなRDBMSに対応している点。以下のRDBMSに対応しています。 MySQL 5.6 Oracle 11g R2 PostgresSQL 9.6 Po…