database
短い記事です。PostgreSQLのバージョンは、9.4.5です。create as select ...でテーブルを作ったら、bigserialにすべきidがbigintのままになっていて、アプリがコケていたというお粗末な話。 後からbigserialにできるのかどうか知らなかったので、とりあえずa…
主キー(プライマリキー)を自動生成する方法について、おさらいしてみました。
そういえば、以前のエントリで11gではmapDateToTimestampというプロパティがデフォルトtrueで、DATE型の列がTimestampで取得できるという話がありました。 これは実際に11gで確認できました。すなわち、DATE型の列において、getObjectでjava.sql.Timestampが…
かなり以前から考えてはいたものの、なんやかんやでつまづいてお蔵入りしていたのを、先日また思い出して、ちょっとやってみたらJDBC接続とSQLエンジンは思いのほか簡単にプロトタイプができたのでメモっておきます。こんな風に SELECT * FROM FS WHERE ROOT…
前回(2011-02-28)から随分間が開いてしまいました。 停電の影響で再起動は済んでいたものの、忙しかったり他の問題があったりで手付かずに。ふと下書きを見ると、この記事の書きかけがあったので、やっと思い出したのでした。 インスタンス起動(続き) まず前…
OracleXEは止めて、未だに使ったことすらないDB2を試した方がいいんじゃないかと思ったので、ちょっと調べてみました。 こちらもExpress版があり、さらにbetaながらもMacOSXバージョンがあります。 v9.5.2 (db2exc_952beta_MAC_x86_64.tar.gz) インストール…
行についての情報を扱う擬似列についてのメモです。 ROWID ROWNUMとROW_NUMBER() 擬似列と*を併用するには Oracleに限ったことではありませんが、DBMSにはメタデータ的な情報を列として扱うための仕掛けがあります。これを「擬似列」といいます。 例えば、"R…
SQL*Loaderでデータをロードする際に、これまではCSV形式などをそのままロードする使い方だけでやっていました。加工が必要な場合は、Perlなどで加工した後でロードしていました。でも、これだと無駄な1過程があるので、加工しながら直接ロードできるのでは…
パソコンを複数台使っていると、Webの履歴が分散してしまいます。ブックマークとかしておけば良さそうですが、見たときはあまり重要じゃないと思って後でやっぱり...みたいなことが、今までほんの偶にありました。 それならブラウザを介さずに履歴を見るため…
全ダンプだけ。 # PostgreSQL 8.3 /opt/local/lib/postgresql83/bin/pg_dumpall -U postgres > postgre.dmp # MySQL 5.1 /opt/local/bin/mysqldump5 --user=root --password=XXXXXX --all-databases > mysql.dmp
10gからは、代替引用符が使えるようになったようです。Perl使いの人には判りやすいですね。外側の ' が必要なのがちょっと違いますけどね。 q'#argius' note#' q'{argius' note}'Perl使いでない人のために補足。カッコ文字4種類 () {} [] <> の場合は対とな…
今まで使ったことの無かった、つまり用の無かった関数です。 Oracle 10g以降は正規表現が標準で使えるようになったので、また別のアプローチもあるかと思いますが、今回は9iでの話。 SQL*PLUSや通常のビューアでは、改行文字やタブ文字を見分けることができ…
http://sourceforge.net/projects/firebird/files/ の firebird-MacOS-X_darwin/2.1.2-Release/FirebirdSS-2.1.2-18118-i686.pkg.zip(SuperServer,i686版) をダウンロード。ZIPを解凍したpkgをfinderで開いてデフォルトインストール。isqlという管理ツール…
普段はSQL*Plusを使わないので必要なかったんですけど、Pro*Cのソースに書かれたSQLをそのまま実行する必要があったので、バインド変数の指定の仕方を調べました。 SQL> var LIMIT NUMBER; SQL> execute :LIMIT := 3; PL/SQL procedure succeessfully comple…
条件に合致するレコードの先頭5行だけ表示させたい場合、 # MySQL,PostgreSQLなど SELECT * FROM TABLE1 LIMIT 5 # Oracle SELECT * FROM TABLE1 WHERE ROWNUM <= 5のようにします。 では、JavaDB(Apache Derby)の場合はどう書くのでしょうか。
OracleのDATE型は時刻情報を保持しますが、ResultSet.getObject()で取得すると、(たぶん9i,10gでは)java.sql.Dateにマッピングされ、時刻が切り捨てられてしまいます。ResultSet.getTimestamp()なら日時を取得できますので、これを使えるのであればあっさ…
StewでSQLiteに接続するのは、実はまだやったことがありませんでした。 今回、Trac関連でDBを直接覗くために試しました。※この実験は、Stewのプラグイン的な接続設定で動作するかどうかを試したものです。普通にCLASSPATHに通せば問題なく動作すると思います…
Oracle/SQL*Plus - おしごとおぼえがき Wiki* NUMBER型で桁が大きいと、指数表記になります(デフォルトでは>10桁)。 SQL> SELECT 1234567890 FROM DUAL; 1234567890 ---------- 1234567890 SQL> SELECT 12345678901 FROM DUAL; 12345678901 ----------- 1.23…
UNIONで結合した結果が思ったとおりにならないので、良く良く考えてみたら、UNIONだと重複した結果が残らない、というのをすっかり忘れていました。 以前はちゃんと UNION ALL で実装していたのに。なので、コーディングミスではないんです。 UNION の場合 S…
OracleはTIMESTAMP型があるのに、伝統的にDATE型を使うので、タイムスタンプ的な列を出力するときにちょっと面倒。 通常はGUIのデータベースビューアを使いますが、場合によってはSQL*PLUSを使う必要があります。列名を指定すれば、 SELECT TO_CHAR(SYSDATE,…
使えなくても問題なかったんですが、何度やっても「SQLコマンドが正常に終了していません」とか怒られるので、何でかなーと思ったら、まだサポートされてなかったんですね。 -- JOINが使える SELECT A.NAME, B.CODENAME FROM A OUTER JOIN B ON A.ID = B.ID …
数種類の集計を効率的にできないかな、と調べてみたら、あっさり見つかってしまいました。おまけに、DBMS固有のでも無く、最新の仕様よりも前からサポートされていたりするものもあるようです。SQLってたまに使うと便利ですね。 これから紹介するのは、それ…
配列の配列を、SQLを使って操作できるようにしたものを作ってみました。簡易なので、制限は山ほどありますが、一部は以下のようなものです。 SQLと言っても、限られたものしか使えない SELECT,UPDATE,INSERT,DELETE,WHEREと不完全な CREATE TABLE 内部値は全…
色々あって、Oracleのパフォーマンスに関すること、特に実行計画(EXPLAIN PLAN)やオプティマイザについて調べてみました。といっても初歩的なものですが、それでも基本的なアルゴリズムが分からない方には難しいかも知れません。 これまで私はデータベースの…
今まで別の問題だと勘違いして放置していたんですが.....まず、Java開発者向けドキュメントの"JDBC入門"の「SQL と Java の型のマッピング」という章で、以下のようなサンプルコードが書かれています。(最後の行だけ私が追加しました。) Timestamp t = new T…
Oracle JDBC Drivers README javacの"-g"オプションをつけたかどうかの違いだそうです。他のよく分からないドライバについても書いてあります。
ResultSetからテーブル名を取得したいのですが、このメソッドが使えない(値が空になる)ので困りました。JDBC2.0では既にサポートされてるんですけどね。 手近で触れるRDBMSだとこんな感じです。(名称は厳密なものではありません。)使えるもの Apache Derby 1…
JDBCのテストを行うのに、ネットワークを介したRDBMSを使いたくなかったので、試してみました。 何も考えずにインストール バージョンは10.2.2.0。下記のサイトを参考にしました。 404 Error - Not Found ダウンロードして適当なディレクトリに配置し、クラ…
OracleのテーブルにあるLOB(ラージオブジェクト)のサイズを調べたいので、簡単なプログラムを書こうと思ったが、そういうのって関数とか普通用意されてるよね? と気づき、調べてみた。 DBMS_LOB.GETLENGTH() 例:SELECT DBMS_LOB.GETLENGTH(LOB_COLUMN) FRO…
9/27のコメントで予告しましたが、調べてみたので報告します。JDBC限定です。 実行環境は、WindowsXP Professional SP2 + JDK 1.4.2_11 + Eclipse 3.0.1で、最初はOracleだけ調べようと思ったのですが、PostgreSQLとMySQLでも調べてみることにしました(下記…