DIAVIS-wiki
hsqldbの使い方 ---- #contents ---- *HSQLDB - 100% Java SQL Database Engine [#n41ccf91] http://hsqldb.sourceforge.net/ hsqldb(旧 hypersonic SQL)とは,100%JavaによるSQLデータベースエンジン.RDB.単一のJARをクラスパスに通すだけで利用できる.HSQLにはGUIによるクライアントアプリケーションも用意されている. HSQLDBはいくつかの異なったモードで実行することができる.Server Modes and In-Process Mode (also called Standalone Mode). 各HSQLDB databaseは,同じディレクトリに置かれた,拡張子が異なる同じ名前を持った,2つから5つの間のファイルで構成される.例えば,testという名前のデータベースは以下のファイから構成される. *テーブルの作成 CREATE [#w66c0f78] **sample [#n8d280f3] CREATE TABLE TAGS ( ID IDENTITY, KEYWORDS VARCHAR, EVENT_ID INTEGER, DATE TIMESTAMP ); *データの追加 [#n0854623] **サンプル [#s9550916] INSERT INTO image (URI) values ('JanTschichold.jpg'); *データの更新 [#td402509] **サンプル [#q208ee30] :画像の追加|INSERT INTO image (URI) values ('JanTschichold.jpg') *削除 [#z867fef2] **サンプル [#c8af8799] :画像名の変更|update image set URI = 'LovelaceAda.jpg' where id=4 :人物の画像IDの変更|update person set image_id = 37 where person_id=86 *テーブルの修正 [#gb65a7c8] **コラムの追加 [#p8772f6c] ALTER TABLE DIARY ADD LINK VARCHAR **コラムの属性修正 [#b862e1e7] ALTER TABLE ITEMS ALTER COLUMN GUID VARCHAR *TIPS [#tec52e14] **検索結果の件数を知りたい [#l5113176] 検索文に以下のようにCOUNT(*)とすると,検索条件によって得られたレコードのカウント結果のみが入ったテーブルが返ってくる. なので,そのテーブルの一行目(rs.next()によって1行目にカーソルを移動)の一つ目のカラムから数値を読み取る. ResultSet rs; rs = mSQL.executeSQL("select COUNT(*) from keyword where keyword='" + keyword + "';"); int keyword_id = -1; try { rs.next(); int nResult = rs.getInt(1); *select [#w79d6c24] **部分検索 [#q00d31e1] select * from person where database=0 and name like '%Hide%' order by name これだと大文字小文字を区別するので'hide'だと「Hideyoshi」が得られませんでした. 大文字小文字を関係なく検索したい. 以下のようにUPPER関数を利用して大文字にして,検索文字列のほうもJAVAで大文字にすれば出来そう. データベース内のデータは「Hideyoshi」だとした場合. select * from person where database=0 and UPPER(name) like '%HIDE%' order by name これはだめ select * from person where database=0 and UPPER(name) like '%Hide%' order by name ** [#t11f9961] :Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff|ex. select * from items where date > '2006-11-25 12:00:00.0' order by date desc *BETWEEN条件 [#je925709] 値が指定した2つの値の間にあるか否かを比較. SELECT * FROM Orders WHERE CustomerID = 'QUICK' AND OrderDate BETWEEN '1996/1/1' AND '1997/12/31' ex. select * from items where date BETWEEN '2006-11-25 12:00:00.0' AND '2006-11-25 15:00:00.0' order by date desc *参考 [#yc591cf8] *参考(外部リンク) [#yc591cf8] :@IT 連載:SQL実践講座(1)|http://www.atmarkit.co.jp/fnetwork/rensai/sql01/sql1.html#4 :Project Amaterasというサイトのwiki内コンテンツ|http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=hsqldb |