fc2ブログ
 
  ★新作アプリへのリンク→   SQLコマンドリファレンス
プロフィール

ひく16

Author:ひく16
1.SQLとDBの勉強
2.自然観察
3.プログラミング
4.ぼやき

最近のトラックバック
ブログ内検索
ブロとも申請フォーム
QRコード
QRコード

07月18日(木)

SQLのお勉強~SQLite3(2) SQLiteの型はすごく変

SQLite3 (2)
SQLite3の型はすごく変


①テーブルのカラムに型を指定しなくてよい

OracleやMySQLなど他のDBと違って、
SQLite3は、テーブルのカラムに型指定しなくても大丈夫です。
さらに同じカラムに色々な型で格納できます。

↓カラムに型を指定しなくてもエラーになりません。
  BLOB型(NONE型)となります。
   BLOB型だと、同じカラムに色々な型を格納できます。

sqlite3_12.png

INSERT文などで、実際にDBに格納される際、
SQLite3側が、NULL、INTEGER、REAL、TEXT、BLOBいずれかの型に判別して、格納します。



②カラムに型を指定することもできます ※2

 ですが、数値型のカラムに文字列を格納しようとしても型エラーにはなりません。
 文字列型に自動変換されます ※1。

sqlite3_13.png

個人的には型エラーにしてくれた方が、分かりやすいのですが、SQLite3はそういうものなのです。

こうした仕様を知っておかないと、
「なんで型エラーにならないの?」
と混乱してしまいます。

私は混乱しました。


==========

※1
INTEGERやREALなど数値系の型のカラムに文字列を格納しようとすると、TEXT型で格納されます。
↓詳細は、SQLite3公式HPで解説があります。
SQLite3本家

※2
・CREATE文で指定した型に「INT」という文字列が含まれていると、INTEGER型になります。
・同様に「CHAR」、「CLOB」または「TEXT」という文字列が含まれていると、TEXT型になります。
・「REAL」、「FLOA」または「DOUB」という文字列が含まれていると、REAL型になります。
・型を指定しない場合、または「BLOB」という文字列が含まれている場合、BLOB型(NONE型)になります。
・上記のいずれにも該当しない場合、NUMERIC型になります。





(参考)
↓アンドロイドアプリ「SQLコマンドリファレンス」です。
SQLコマンドリファレンス

スポンサーサイト



 

Trackback

URL :
この記事にトラックバックする(FC2ブログユーザー)

 

Comment