SQL

10xプログラマー養成所

筆者 みねぎしれい 和光市在住の26歳エンジニアです。 インフラが得意です。 職歴 Cardio Flow Design(2年:アルバイト) 心臓の血流解析を行う企業。2年ほどデスクトップアプリ(C#)の改修、テストを行う ニトリホールディングス(3年:情報システム改革…

SQLの暗黙的な型変換

暗黙的な型変換 暗黙的な型変換とは、SQL側の忖度である。 通常プログラミングにおいて二つ以上のデータの比較、代入等が発生した場合、その二つが異なるデータ型であればエラーとなってしまう。 例) select max(to_date("2021-01-14") , 10) from dual > …

すぐ分かる!where句の複数条件追加方法【SQL基礎】

すぐ分かる!SQL where句の複数条件指定。 andを用いてより厳しい条件をつける andを重ねていくことでselectの実行結果は絞られていきます。 例えば次のクエリであれば、「誕生日が1998年1月14日以降の人」 という条件ですが、 select e.salary, e.name from…

Javaからplsqlを呼び出す【PLSQL入門】

Javaからplsqlを呼び出す方法 Cと同様に、Oracleはデータベースに接続するためのさまざまなアプローチを提供します。 そもそもSQLとJavaは高愛称です。 なぜなら、PLSQLもJavaも通常Oracle社が作り出したものだからです。 より一般的でJava中心のアプローチ…

SQL 入門

このサイトはSQLを初めて触る人のための入門サイトです。 内容は多岐にわたります。 SQLの用語集や通常のSQL文でのWHERE句の使用方法からCREATE句を使用したテーブル作成を取り扱い。Oracleで使用可能な標準関数。データベース設計のアンチパターンなど入門…

マジックビーンズ【SQLアンチパターン】

MVCのM(モデル)を単純化する ソフトウェア開発の80%は知的作業であり、そのほとんどが創造的な作業です。 この知的作業を支援してくれるのが、デザインパターンなどの規約です。 Singleton、Facade、Factoryなどのパターン名を使うことで、チームのメンバー…

リーダブルパスワード【SQLアンチパターン】

SQLでパスワードを平文で格納してはいけない データベース設計における重大なセキュリティリスクのうちの一つに、SQLでパスワードを平文で格納するというものがあります。 これは重大なセキュリティ欠陥であり、権限のない人に特権的なアクセスを与えるセキ…

スパゲッティ・クエリ【SQLアンチパターンまとめ】

全ての結果を一つのクエリで出そうとしてはいけない 電話で幹部と話している上司が、いきなりあなたの机に来てこう言いました。 「SQLを使って次の4つの値を調べて欲しい。開発者一人当たりの平均バグ修正数、修正したバグの中で顧客から報告された数、バグ…

プアマンズ・サーチエンジン【SQLアンチパターン】

副題 問題にぶつかると「正規表現を使えばいい」という人がいる。 そして問題を二つ抱えることになる。 事例:検索エンジンの必要性 webサイトで記事の数が膨大になるにつれて、検索機能の必要性が明らかになる。 分類して設置しておくことも一つの解決策だが…

ランダムセレクションとは【SQL アンチパターン】

ケース(ランダムセレクション) あなたはweb広告を表示するアプリケーションの担当者だ。 広告は適当なテーブルからランダムに選ばれる仕組みだ。 ある日webサイトが日に日に重くなるインシデントが起票され、その原因があなたが担当するアプリケーションにあ…

アンビギュアスグループ【SQLアンチパターン】

概要(良いクエリ) ある程度SQLを学んだプログラマーは、クエリでGroup Byと集約関数(MIN,MAX,SUM,COUNTなど)を巧みに用いて集計することを覚える。 少量のコードで複雑なレポートを作成できる強力な機能である。 例えば「product_idごとにレポート日付の最大…

ショットガン・インデックス【SQLアンチパターン】

インデックスについて インデックスとは、データの値と格納場所を結びつけるデータベースオブジェクト。 正しく使うとデータベースの検索の高速化が可能になる。 作成例 create table staff( id int , name varchar(10), description varchar(400), PRIMARY …

ファントムファイル【SQLアンチパターンまとめ】

データベースで画像を保存するべき理由と方法 この記事では外部リソースに画像を保存する方法ではなく、データベースに画像を保存する方法のメリットとやり方を紹介する。 まず簡単に結論を述べると、データベースは外部リソースを管理することはできない。 …

マルチカラムアトリビュート【SQLアンチパターンまとめ】

マルチカラムアトリビュート 複数列属性を持つようなアンチデザインパターンのこと。 SQLテーブルに対して列に対して年度や携帯電話番号など、これから増える可能性のあるものをカラムとして設定すると厄介な事象が発生します; 複数の値を持つ属性を格納す…

ポリモーフィック【SQLアンチパターンまとめ】

ポリモーフィックなテーブルを作成したい。 あなたはバグレポートを管理するシステムを作成しようとしています。 そしてこのバグレポート管理システムに新たなる要件が届きました。 その要件とは「バグについてのコメントを書き込めるような機能が欲しい」と…

エンティティ・アトリビュート・バリュー【SQLアンチパターンまとめ】

この記事は? SQLアンチパターンの備忘録です。 特に今回は5章の「エンティティ アトリビュート バリュー」 と呼ばれる手法の悪い点と改善策をまとめました。 エンティティ アトリビュート バリュー とは あなたはバグレポートを管理するシステムを作成しよ…

外部キー制約【SQLアンチパターンまとめ】

外部キー制約とは何か? 外部キー制約とは、SQLのテーブルに課す制約の一種。 外部キー制約を設定したカラムは、設定時に指定した親テーブルの特定のカラムにデータが存在するかどうかを、CRUDが発生するたびにチェックしてくれる 制約を設定する際には 対象…

IDリクワイアド【SQLアンチパターンまとめ】

SQLアンチパターンの備忘録です。 主キーは適切に選ばなければえらい目にあう 例)ジョンはwebアプリケーションを管理するエンジニアだ。 このwebアプリケーションは記事をタグ付けして管理することがウリであり、記事の内容が格納されているAriticleテーブ…

SQL 用語集 【SQL入門】

Oracle Bronze SQLで出てくる基礎的な用語を集めました。 SQL用語集 リレーショナルデータベース データベース 行(ROW) 列(COLUMN) フィールド NULL値 主キー 外部キー 射影 選択 結合 SQL文の分類 DML(Data Manipulation Language: データ操作言語) DMLの…

SQLで使用可能な関数一覧【SQL入門】

oracleで使用可能な関数一覧 UPPER関数 LOWER関数 INTCAP関数 CONCAT関数 SUBSTR関数 LENGTH関数 INSTR関数 LPAD,RPAD関数 TRIM関数 REPLSCE関数 ROUND関数 TRUNC関数 MOD関数 現在時刻を返す関数 日付の四則演算 日付-日付 日付 + 日付 MONTHS_BETWEEN関数 …

SQLの文法まとめ

SELECT文 SELECTによる射影 全ての列のとりだし SELECTによる選択 表構造の表示 SELECTでの算術使用 列別名の使用 文字列の結合 代替引用符(q)演算子 重複行の削除 複数列の重複行の削除 WHERE句 文字列や日付の比較 比較演算子 WHERE句での列別名は使用がで…

OSQLEDITの使い方

OSQLEDITとは? OSQLEDITの開き方 ユーザーアカウントを記録する SQLの実行のやり方 (OSQLEDITでの) 別の実行方法 新しいエディタを開く 別のエディタで開いているファイルを開く データベースを探す SQLを作成する。 INSERT DELETEの作成 さらに効率的なDELE…

フィア・オブ・ジ・アンノウン【SQLアンチパターンまとめ】

NULLに対する誤解の例 NULLは「何も無い」を表す これだと 「1 + NULL」が「NULL」になる説明ができません。 1に対して「何も無い」を足すとそのまま1になりそうですが、SQLではNULLにいかなる演算を行ってもNULLしか返しません。 NULLは「適応不能」を表す …

"1=1"がSQLで使われる理由

SQL

1=1を追加している訳 他の方のプログラムを呼んでいくと次のようなプログラムに出会うことがあります。 select e.salary, e.name from employee e where 1=1 --????? and e.birth > '1998-01-14' and e.location = '東京' このコードのメリットはandの条件を…

SQL用語集

SQL

参考記事 SQL用語集 SQLとは SQL文の分類 DML Data Manipulation Language DDL (Data Define Language:データ定義言語 DCL (Data Cons Language:データ制御言語)」 「トランザクション制御」 SQL用語集 リレーショナルデータベース データベース 行(ROW) 列(…