SQLのCOUNT(*)とCOUNT(列名)では結果が異なる

NULLを含むとき、COUNT(*)とCOUNT(列名)では結果が異なります。 Col1 10 (NULL) 50 (NULL) 40 このようなTBL1テーブルを例にします。 COUNT(*)はNULL …

Continue reading ‘SQLのCOUNT(*)とCOUNT(列名)では結果が異なる’ »

SQLiteで複数の行を1行のINSERT文でまとめて追加する

SQLite(バージョン 3.7.11以降)では、次のようにして複数のデータを1行のINSERT文でまとめてINSERT文で追加することができます。 insert into t1 (f1, f2, f3) values …

Continue reading ‘SQLiteで複数の行を1行のINSERT文でまとめて追加する’ »

FirebirdのINSERT文で追加されたIDを取得するには

Firebird 2.0以降では、INSERT文にRETURNING句を加えることで、追加されたIDを取得できます。 INSERT INTO t1 (id, …) VALUES (next value for gen …

Continue reading ‘FirebirdのINSERT文で追加されたIDを取得するには’ »

Firebirdのテーブルやフィールドにコメントをつける

FirebirdのCOMMENT文を使用すると、テーブルやフィールドにコメントをつけることができます。 COMMENT文の構文はこちら 使用例 create table USERS ( ID integer primar …

Continue reading ‘Firebirdのテーブルやフィールドにコメントをつける’ »

FirebirdでCheck制約に正規表現を使用する

Firebird 2.5ではCheck制約に「SIMILAR TO」で正規表現を使用することができます。 正規表現に使用できるメタ文字 [ ] ( ) | ^ – + * % _ ? { 例 create table t …

Continue reading ‘FirebirdでCheck制約に正規表現を使用する’ »

Firebirdのunion演算子の結果に対してorder byで並び替える

Firebird 2.5で、union演算子の結果に対してorder byで並び替えるために、次のようなSQLを書いたらエラーになった。 select C1, C2, C3 from T1 union all selec …

Continue reading ‘Firebirdのunion演算子の結果に対してorder byで並び替える’ »

FirebirdでCURRENT_TIMESTAMPを使ってTIMESTAMP型の列のデフォルト値に現在の日時に指定する

CURRENT_TIMESTAMPは現在の日時をTIMESTAMP型で返します。 select CURRENT_TIMESTAMP from rdb$database テーブルを定義する時に列のデフォルト値としてCURR …

Continue reading ‘FirebirdでCURRENT_TIMESTAMPを使ってTIMESTAMP型の列のデフォルト値に現在の日時に指定する’ »

FirebirdでSEQUENCEを使う。

SEQUENCEは数値を数えるオブジェクトです。 新しい数値を取得したり、現在の数値を取得することができます。 (AccessのオートナンバーやMySQLのauto incrementのようなこともできます。) データを …

Continue reading ‘FirebirdでSEQUENCEを使う。’ »

Firebirdの”UPDATE OR INSERT”を使用する

“UPDATE OR INSERT”は、MATCHING句の列の値と一致するレコードがあればUPDATE、なければINSERTします。 ■Primary Keyがある場合 Primary Keyが …

Continue reading ‘Firebirdの”UPDATE OR INSERT”を使用する’ »