SQL

OSQLEDITの使い方

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

SQL 用語集 【SQL入門】

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

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

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

マジックビーンズ【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アンチパターンまとめ】

結論を述べると、外部キー制約はテーブルを健全な状態に保つ役割を果たしている。データベースを利用しているアプリケーションが、参照整合性を保つための完璧なコードを前提としているような状態は避けるべきである。 参考記事 この記事は以下の書籍を参考…

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

SQL

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

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

SQL

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

"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の記法まとめ

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

SQL用語集

SQL

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

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

参考記事 oracleで使用可能な関数一覧 oracleでは以下の関数が使用可能である。 UPPER関数 LOWER関数 INTCAP関数 CONCAT関数 SUBSTR関数 LENGTH関数 INSTR関数 LPAD,RPAD関数 TRIM関数 REPLSCE関数 ROUND関数 TRUNC関数 MOD関数 現在時刻を返す関数 日付の四…