So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

SQLiteでのデータ型 [SQLポケリ]

本日は、SQLiteネタである。

SQLiteには、データ型があってないようなものとなっている。
普通のデータベースシステムには、データ型が存在する。

OracleやSQL Serverには、CHARやVARCHAR、NUMBERやINTEGER、DATEやらDATETIMEなんていう型が存在している。MS Accessにだってある。

CHARとVARCHARは「文字列型」
NUMBER、INTEGERは「整数型」
DATE、DATETIMEは「日付時刻型」

データ型は「列(フィールド)」に対して設定できる。数値型に設定された列には、数値が記録できる。文字列は記録できない。文字列を記録しようと思ったら、文字列型に設定しなければならない。
データ型には許容できる数値の大きさが付き物となっている。
データベースが大容量のストレージを持っていたとしても、無制限にデータを記録できるものではないし、記憶領域の大きさを決めた方が、効率的である。

例えば、以下のようなテーブルをOracleに作成したとする。

CREATE TABLE foo (
 text VARCHAR2(10),
 num NUMBER(8)
);


fooテーブルの、text列には、最大で10バイトの文字列データを記録できる。
num列は、NUMBER型なので、数値を記録可能ではあるが、(8)となっているので、最大8桁の整数値を記録可能となっている。

text列に、数字から構成される文字列を記録することはできる。例えば、以下のようなINSERT命令はOKである。

INSERT INTO foo(text) VALUES('123');


num列に対して、文字列を記録するような命令は、エラーとなり実行できない。

INSERT INTO foo(num) VALUES('text');


これと同じことをSQLiteでやってみると

CREATE TABLE foo (
 text TEXT,
 num NUMERIC
);

INSERT INTO foo(text) VALUES('123');
INSERT INTO foo(num) VALUES('text');


どちらのINSERT命令も成功する。

SELECT * FROM foo
text    num
-----------------------
123
        text


こんな感じでちゃんと記録できる。
便利なんだか、ルーズなんだか。

ちなみに、CREATE TABLEでの列定義でデータ型を省略できる。

CREATE TABLE foo (
 text,
 num
);



[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)



関連記事
SQLポケットリファレンスの歴史
SQLポケットリファレンスの歴史その2
SQLポケットリファレンスが第4版になりました
改訂第4版 SQLポケットリファレンス電子版
「SQLite for Excel」 Excel VBAからSQLiteデータベースを使用する


サイト内を検索

nice!(0)  コメント(0) 
共通テーマ:携帯コンテンツ

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。


AREarthroidPro ARで地球を表示するアプリ

Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本