SQLでゼロ埋めスペース埋めして桁数を揃えたい場合にはLPAD関数やRPAD関数を使用することで取得可能となります。DBMSによっては使用出来ないものもあります。
関数\DBMS | MySQL | PostgreSQL | SQL Server | Oracle |
LPAD | ○ | ○ | ✕ | ○ |
RPAD | ○ | ○ | ✕ | ○ |
書式は「LPAD(列名,バイト数,’埋め込み文字’)」、「RPAD(列名,バイト数,’埋め込み文字’)」で指定します。第三引数の埋め込み文字を省略すると半角スペースが埋め込まれます。
サンプルではOracleでの使用例となります。
サンプルテーブル
- 「GOODS」テーブル
LPAD関数の使用例1
- 項目「GOODS_CODE」を10桁でゼロ埋めするSQL(クエリー)
|
SELECT LPAD(g.GOODS_CODE , 10, '0') FROM USER1.GOODS g; |
- 実行結果
LPAD関数の使用例2
- 項目「GOODS_CODE」を10桁で全角「*」埋めするSQL(クエリー)
|
SELECT LPAD(g.NAME , 10, '*') FROM USER1.GOODS g; |
- 実行結果
以下のように埋め込み文字へ全角文字を指定すると1文字=2バイト扱いで埋め込まれます。
RPAD関数の使用例1
- 項目「GOODS_CODE」を10桁でゼロ埋めするSQL(クエリー)
|
SELECT RPAD(g.GOODS_CODE , 10, '0') FROM USER1.GOODS g; |
- 実行結果
RPAD関数の使用例2
- 項目「GOODS_CODE」を10桁で全角「*」埋めするSQL(クエリー)
|
SELECT RPAD(g.NAME , 10, '*') FROM USER1.GOODS g; |
- 実行結果
RPADでも以下のように埋め込み文字へ全角文字を指定すると1文字=2バイト扱いで埋め込まれます。
SQLを見てるとたまにWHERE句内で「(+)」と記載されているのを見かけることがあります。
この「(+)」はOracle独自で記載が可能となる外部結合演算子といって、「g.GOODS_CODE = gt.GOODS_CODE(+)」のように指定するとLEFT OUTER JOINと同じ結果を取得することが出来ます。
サンプルテーブル
- 「GOODS」テーブル
- 「GOODS_TYPE」テーブル
外部結合演算子を利用したクエリー(SQL)例
|
SELECT g.name, gt.type_name FROM USER1.GOODS g, USER1.GOODS_TYPE gt WHERE g.GOODS_CODE = gt.GOODS_CODE(+); |
通常の左外部結合でのクエリー(SQL)例
|
SELECT g.name, gt.type_name FROM USER1.GOODS g LEFT OUTER JOIN USER1.GOODS_TYPE gt ON g.GOODS_CODE = gt.GOODS_CODE; |
実行結果
外部結合演算子、左外部結合どちらも同じ結果となります。
データベース製品のライセンス一覧です。
製品名 | オープンソース/商用 | ライセンス | データ
モデル | 料金 |
DB2 | 商用 | IBM | ORDBMS | 1プロセッサ
・461万7000円
2年目から5年目の保守料
・88万700円/年
1プロセッサで5年間運用した場合のコスト
・813万9800円 |
HiRDB | 商用 | 日立製作所 | RDBMS | 同時接続数ライセンス
・120,000円
1プロセッサ
・1,800,000円 |
MySQL | オープンソース | GPL or 商用 | RDBMS | 1-4 ソケットサーバー 1台/年(税抜)
・Standard Edition:240,000
・Enterprise Edition:600,000
・Cluster Carrier Grade Edition:1,200,000
5+ ソケット・サーバー/年(税抜)
・Standard Edition:480,000
・Enterprise Edition:1,200,000
・Cluster Carrier Grade Edition:2,400,000 |
Oracle Database | 商用 | オラクル | RDBMS | |
PostgreSQL | オープンソース | BSD | ORDBMS | 無料 |
Oracleデータベースのリカバリとリストアの概念が少し理解しずらかったので整理しておこうと思います。
基本的にはパソコンのOSなどにおけるリカバリ(復旧)/リストア(復元)と言葉的な概念は同じですが、実作業は異なるものだと別物と覚えたほうが良さそうです。
リストアとは
- 一般的にパソコンのリストアといえばバックアップデータを用いてOSなどのデータを元の状態に戻す(復元)することを指します。
- Oracleデータベースのリストアとは、バックアップ媒体から元の場所もしくは新しい場所へデータベースを構成する物理ファイルをコピーして復元することを指します。
リカバリとは
- 一般的にパソコンのリカバリといえばパソコンにインストールされているOSを出荷時の状態に戻す(復旧する)作業のことをいいます。
- Oracleデータベースのリカバリとは、REDOログファイル(バックアップ取得~現在までのトランザクションの変更情報が保存されています)を使用してバックアップ後に作成されたデータベースへ変更情報を反映してデータを復旧することを指します。
テーブルのデータを削除する方法として「DELETE」コマンドと「TRUNCATE TABLE」コマンドの2つがあります。
両者を使用する場合、どのような用途で使用するべきか違いについてまとめておきます。
DELETE文
TRUNCATE文
ちょっとした案件でデータベースというとMySQLをとりあえず使っておこうという人はそれなりにいたかと思いますが、いまはその状況が変わってきています。
MySQLのオリジナルコードの作者のひとりがMySQLのコードをフォークして新しいプロジェクトを立ち上げたからです。
MariaDBという新しいデータベースプロジェクトです。MySQLと互換性も高く機能の取り込みも早いとの話です。
GoogleもMySQLからMariaDBに乗り換えたという話が出てきています。
よく使われるLinuxディストリビューションのひとつであるCentOSの標準環境もMySQLからMariaDBに変わりました。バージョン7からです。
CentOSだけではなくFedoraなどもMariaDBを標準に採用しているということだそうです。このことからもわかるとおりにMySQLからMariaDBへの移行が進んでいます。
CentOSさえもMariaDBを標準で採用したことからもわかるとおりに、この流れは止まらないことでしょう。
もしも乗り換える際は当たり前の話ですがきちんと検証してから使っていきたいですね。
現代は顧客の情報や、企業の商品の情報など様々な情報がデーターベースに記録されています。
このデーターベースは、企業活動や社会活動の中で非常に大きな役割を果たしており、それなしでは今の情報化社会を営んでいくにあたり大きな支障をきたすことになります。
それゆえに、そのバックアップを取得し万が一の事態へ備えることは非常に重要なことになります。
データーベースのバックアップ方法は大きくコールドバックアップ(オフラインバックアップ)とオンラインバックアップの二種類に分けられる。
コールドバックアップとは、データーベースを停止(Shutdown)させて取得するバックアップのことであり、オンラインバックアップとはデーターベースを停止させない状態のまま取得するバックアップのことである。
コールドバックアップではデーターベースを停止させるため、その間データーベースへのアクセスが出来なくなるというデメリットはあるが、データーベースを停止させ、その時の状態を取得することで、障害時にはこのバックアップのみ使用し、簡単迅速にリカバリできるというメリットがあります。
これに対してオンラインバックアップではデーターベースを停止させないため、サービスを運用状態でバックアップが取れるが、障害時はバックアップデータに加えてアーカイブログが必要となるなど、リカバリに手間と時間がかかる問題があります。
どちらも一長一短ですが、上手く目的に応じて両方を組み合わせるなど適切な方法を使用していきたいものです。
PostgreSQLのバージョンは「9.1.14」の様に2つのピリオドに区切られた3つの数字で表記されています。
左から2つは、メジャーバージョンを表し、最後の1つはマイナーバージョンを表しています。
例えば、9.1.14なら、メジャーバージョンが9.1、マイナーバージョンが14となります。
メジャーバージョンアップは1年毎、マイナーバージョンアップは、年に3回~5回程度実施されます。
このバージョンをアップすることを維持管理と呼び、2015年1月27日現在で維持管理の対象となっているのは、9.4.0、9.3.5、9.2.9、9.1.14、9.0.18となります。
左端が8の8.4.22以前のものは、ダウンロードができます(available)が、維持管理の対象外(No longer supported)であり、これ以降はバージョンのアップは行われません。
維持管理対象外のバージョンは、「EOL’d releases」とも呼ばれています。EOLは「End-of-life」の略です。
マイナーバージョンアップは、バイナリ変更だけで対応できますが、メジャーバージョンアップでは、データファイルの移行の必要があるので、メジャーアップデート作業はアップデート計画に沿って、慎重に(シュミュレーション・予行演習など)行うことが大切となります。
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。