sqliteの使用を検討している者ですが、sqlite2とsqlite3の機能的な違いは何でしょうか?sqlite自体は全く今まで使用したことはありませんが、MySQL,PostgreSQLなどは使ってまして、手軽に利用できる点に、ある程度の魅力を感じました。
sqite2とsqlite3の違いにつきましては、安定性(不具合状況)や速度、追加された機能などを知りたいと思っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

OSやプログラム言語などの制限は考えず、純粋にSQLite2とSQLite3の違いについて回答します。

安定性や速度についてはわからないので、機能の違いについてのみ限定します。

結論から言うと機能の違いはあります。以前、自分の知っている範囲で回答した質問があるので以下に挙げておきます。
 SQLiteのテーブル名を変更したい -> http://okwave.jp/qa4283629.html
 SQLiteのフィールド追加のやり方 -> http://okwave.jp/qa3227290.html

読んでいただくとわかりますが、どちらもSQLite3では簡単にできますがSQLite2ではちょっと手間がかかります。

その他にもいろいろと機能追加されているようです。Wikipediaでも次のようなことが書かれていました。ただし自分は理解してないので真偽は御自分で検証してください。
 Wikipedia - SQLiteからの引用
  Ver3.3.8 から、全文検索の FTS1モジュールがサポートされた。
  引用元 -> http://ja.wikipedia.org/wiki/SQLite

詳しいことは本家サイトで読むしかないでしょう。
 SQLiteの本家 -> http://www.sqlite.org/
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり比較のわかりやすいドキュメントがあまりないようですね。
公式も途切れ途切れになっているので、若干わかりずらい感じでした。
しかしながら、今後のサポートや機能追加なども考えますと、やはり普通に考えて新しい方が無難だと、今思ってます。(機能はSQLite3の方がオプション的機能の追加があるようですし、運用中のバージョンアップでもないですので)

お礼日時:2008/09/15 00:44

 SQLiteの資料を読むと確認できるはずですが、sqite2とsqlite3では互換性がないことが明記されているので、要件を確認してsqite2かsqlite3を選択して下さい。



 過去の質問を調べるとある程度は理解できると思いますが、私見ですが私は開発時のdbとしては非常に優れたdbと評価していますが、実用的なdbではないと思っています。

> sqite2とsqlite3の違い
安定性(不具合状況)や速度、追加された機能という点で、SQLite2とSQLite3で違いはないと思います。

一部のWebページにSQLiteは遅いとの記述ありますが、オート・コミットがONの状態で測定したために遅いと評価されていて、オート・コミットをOFFにすればMySQLなどの比べても大きな差はないと思います。 逆に1個のファイルで全てを処理する超軽量dbで、ここまでレスポンスを示すのは凄いと思います。

MySQL, PostgreSQLの経験者でPHPでアプリを開発するなら、PDOを利用してdbを操作すると、コネクトの1行だけを変更することでdbを選択できるので、開発はSQLite、実用はMySQLということができます。

この時、MySQLなどの実用版でのdb設計( SQLiteを意識しない )を行ない、スキマーをSQLiteに適用しても殆ど修正はないと思います。

私が理解している違い
1.SQLiteでは外部参照ができない
2.型が文字列だけなので、タイムスタンプ関連の処理はSQLiteと他のdbで個別に記述しないといけない
*トリガーは、記述したことがないので不明ですが機能はあります。
    • good
    • 0
この回答へのお礼

sqliteはMySQLなどの代わりというよりは、ファイル読み書きで間に合うような箇所をファイルからSQLiteに変更できれば、新たな方法として取り入れられるのではと思いまして、検討しています。
sqlite2とsqlite3に表面的な大きな違いはないことはわかりました。
速度や機能面は、その都度調べる必要がありそうですね。
回答ありがとうございました。

お礼日時:2008/09/15 00:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qdate型でのbetweenについて教えてください。

皆様、新年明けましておめでとうございます。

早速ですが、date型でのbetweenについて教えてください。

SQL文
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'

を発行すると、2007-12-31のレコードがあるのに該当しません・・・

試しにSQL文を
SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
としても2007-12-31のレコードは検索されません・・・
SQL文を
SELECT * FROM test WHERE date between date '2007-12-01' and date '2008-01-01'
にすると2007-12-31が該当するのですが、
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'
では2007-12-31のレコードは該当しないものでしょうか??

select * from test where num between 10 and 100
とした場合では、num が 10 ~ 100 のものが問い合わされますよね??
date型になるとこうならないのでしょうか??

よろしくお願いします。

皆様、新年明けましておめでとうございます。

早速ですが、date型でのbetweenについて教えてください。

SQL文
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'

を発行すると、2007-12-31のレコードがあるのに該当しません・・・

試しにSQL文を
SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
としても2007-12-31のレコードは検索されません・・・
SQL文を
SELECT * FROM test WHERE date between date...続きを読む

Aベストアンサー

No.1です。
列の属性をtimestampにして実行してみました。

Welcome to psql 8.2.0, the PostgreSQL interactive terminal.
farm=# create table testtbl6 (hoge timestamp);
CREATE TABLE
farm=# insert into testtbl6 values('2007-12-31');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

●時間だけを多少進めたデータを追加してみました

farm=# insert into testtbl6 values('2007-12-31 01:00:00');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
2007-12-31 01:00:00
(2 rows)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '200
7-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

よって、あなたのDBに登録してあるデータは、2007-12-31と午前0時を少し回っているデータが登録されているため、
検索でヒットしないのではないのでしょうか?

No.1です。
列の属性をtimestampにして実行してみました。

Welcome to psql 8.2.0, the PostgreSQL interactive terminal.
farm=# create table testtbl6 (hoge timestamp);
CREATE TABLE
farm=# insert into testtbl6 values('2007-12-31');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 ...続きを読む

Qxamppでpdoを用いてSQLiteを使う方法

いつもお世話になります。
xamppの環境でphpからSQLite3のファイルを操作したいと思っています。
xamppのSQLiteはSQLite2が標準でSQLite3を扱うためにはpdoを使う必要がある旨のページを見て
php_pdo.dll、php_pdo_sqlite.dllをphp\extフォルダへDLし、php.iniのextension=設定も行いました。

下記のようなスクリプトを書いたのですが、
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in ・・・
というエラーメッセージが出てどうにも原因がわかりません。
どのようにしたらよいのか教えていただけないでしょうか。

<?php
//---PDOでのアクセスStart
$dsn = 'sqlite:mondo_quest3.db';
$pdo = new PDO($dsn);
$sql="select * from ans order by id";
$entries = $pdo->query($sql);
while ($entry = $entries->fetch()) {
// 処理を書く
}
//---PDOでのアクセスEnd
?>

いつもお世話になります。
xamppの環境でphpからSQLite3のファイルを操作したいと思っています。
xamppのSQLiteはSQLite2が標準でSQLite3を扱うためにはpdoを使う必要がある旨のページを見て
php_pdo.dll、php_pdo_sqlite.dllをphp\extフォルダへDLし、php.iniのextension=設定も行いました。

下記のようなスクリプトを書いたのですが、
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in ・・・
というエラーメッセージが出てどうにも原因がわかりません。
どの...続きを読む

Aベストアンサー

>そしたら、fatalErrorは出なくなりました。
>しかし、SQLite3のファイルをまだ読むことはできません。

ものすごく単純なことだが、データベースファイルの場所は正しいんだろうかね? どこにデータベースファイルは配置されているのだろうか。例えば、ファイルの指定を、

$dsn = 'sqlite:/hoge/mondo_quest3.db';

とかいう具合にフルパスで指定してみたらどうだろうか?

Qsqlite_open、SQLite3::open

「sqlite_open」「SQLite3::open」の違いを教えてください。
▽http://www.php.net/manual/ja/function.sqlite-open.php
▽http://www.php.net/manual/ja/sqlite3.open.php

・サーバ移行したら、それまで「sqlite_open」で動作していたのが「SQLite3::open」でないと動作しないようになりました
・何の影響を受けているのでしょうか?
・PHPバージョン?
・SQLiteバージョン?
・それとも単に書き方の問題?

■PHPバージョン
・移行前5.2.5
・移行後5.3.3

■SQLiteバージョン
・多分3と思うけど、どうやって確認?

Aベストアンサー

php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。
データファイルのversion確認というか、sqlite_open 関数で作ったファイルをSQLite3クラスで開こうとすると「形式が違う」といった意味のエラーが出るはずです。新規作成なら、SQLite3クラスでは version 3 のファイルが作られます。
SQLite version 2のデータファイルを version3に直接変換する方法は有りません。古いデータベースファイルからselect文で読みとっては、新しいデータベースファイルにinsertするしかありません。
もし、新環境で、PDOでも sqlite2: のDSNが使えない場合は、旧環境で、データの移行を行っておく必要があります。


人気Q&Aランキング

おすすめ情報