• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sqlite3でrowid以外にid必要ですか?)

sqlite3でidは必要か?

このQ&Aのポイント
  • sqlite3を使用している際に、rowid以外にidを必要とするか悩んでいます。rowidは自動的に付加されますが、抽出する際には使用できません。教えてください。
  • idやnoといったプライマリーキーは必要でしょうか?nameが一意なので、条件設定できるとはいえ、スマートではありません。
  • sqlite3ではAUTO INCREMENTができないため、値を一つずつ入れていかなければなりませんか?mysqlのように自動的に番号を付加してくれないため、疑問です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>noという列を追加し、AUTOINCREMENTで定義しました。 >INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 CREATE TABLE文と、INSERT文の記述を提示できませんか? INSERT INTO 表名 VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 あるいは、 INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない VALUES(値1,値2,・・・) いった記述にしていますかね?

Scotty_99
質問者

お礼

回答ありがとうございました。 おかげさまでできました。 PRIMARY KEYと設定したら今度は自動的に連番が振られました。 さっきは振られなかったのに? >INSERT INTO 表名 >VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 >あるいは、 >INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない >VALUES(値1,値2,・・・ という書き方も重視していきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

SQLiteにもMySQLに似たAUTOINCREMENTがあるので、それを使えばいい話しでは? SQLiteではMySQLの構文に比べて制限があるようで、 列名 INTEGER PRIMARY KEY AUTOINCREMENT というように、マニュアル記載通りに、データ型やキーワードを指定しないと、うまく動作しなかったように記憶しています。 http://www.sqlite.org/lang_createtable.html

Scotty_99
質問者

補足

回答ありがとうございました。 noという列を追加し、AUTOINCREMENTで定義しました。 INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 どうしてかご存知でしたらまたご教授お願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • sqlite3 group byがわかりません!!

    テーブル番号を入力すると、各テーブルごとの商品 数量 小計が表示されるようにしたいのですが、各テーブルの合計が表示できません。ご教授お願い致します! <?php $ban = $_POST['ban']; $kazu = $_POST['kazu']; $tno = $_POST['no']; //テーブル番号 $pdo = new PDO('sqlite:db/syouhin.db'); $st = $pdo->query("SELECT * FROM list WHERE tno='" . $_POST["no"] . "' "); while ($row = $st->fetch()) { $tno = htmlspecialchars($row['no']); $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kazu = htmlspecialchars($row['kazu']); $kei = htmlspecialchars($row['kei']); echo "<td>$id</td><td>$name</td><td>$kin</td><td>$kazu</td><td>$kei</td><tr>"; } $st = $pdo->query('SELECT sum(kei) as kei FROM list group by tno');//←tno( テーブル番号カラム名 if ($row = $st->fetch()) { $tno = htmlspecialchars($row['tno']); $gokei = number_format($row['kei']); echo '¥'."$gokei"; }

    • ベストアンサー
    • PHP
  • SQLite(3.2.2)でauto_increment

    今、SQLiteを利用してつまづいています。 バージョンは3.2.2です。(Linux) MySQL、PostgreSQLの知識はあります。 プライマリーキー(id)にシリアルを作成しようと思い、http://cl.pocari.org/2006-02-12-1.html を参考にしながらテーブルを作りました。 CREATE TABLE bbs ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, name VARCHAR(255) NOT NULL, message TEXT NOT NULL, last_update TIMESTAMP NOT NULL ); このbbsテーブルに対し、 INSERT INTO bbs (name,message,last_update) VALUES ('name','message','2008-04-03 12:11:00'); というクエリを発行すると 「SQL error: bbs.id may not be NULL」 とういエラーが返ってきます。 確かに、bbsテーブルのidカラムは「NOT NULL」制約があるのでエラーが正しいとは思うのですが、参考URLのauto_incrementの作成方法には、auto_incrementにしたいカラムをPRIMARY KEYでやればできる、のような事が書いてあったので、よく分かりません。 バージョンの問題なのか、クエリに誤りがあるのか分かる方おられましたら解答お願いします。 また、auto_incrementなカラムの作成方法も一緒に教えていただけたら幸いです。 宜しくお願いします。

  • sqlite3 検索、一行づつ増やして表示

    sqlite3接続で商品番号と数量を入力して検索表示させ小計を実行するphpで一行表示はOKなのですが、続けて検索させ一行ごと増やしていきたいのですがうまくできません!ご教授お願い致します。 <?php $kazu = $_POST['kazu']; $pdo = new PDO('sqlite:db/syouhin.db'); $st = $pdo->query("SELECT * FROM oder WHERE id='" . $_POST["ban"] . "' "); while ($row = $st->fetch()) { $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kei = number_format("$kin"*"$kazu"); echo "<tr><td>$id</td><td>$name</td><td>$kazu</td><td>$kin</td><td>$kei</td><tr>"; } sqlite_close; ?>

    • 締切済み
    • PHP
  • INDEXと検索

    INDEXが着いていないカラムをSELECTで検索しても他のカラムにプライマリーキーがあれば、検索は高速になるのでしょか? テーブル ID、NAME IDにプライマリーキーが付いていて、NAMEのカラムのみを検索するときにも高速になるのでしょうか?

    • ベストアンサー
    • MySQL
  • sqliteへのデータ追加

    sql文で質問です。接続は1-29の表示を確認済み。 掲示板を作る練習をしているのですが、とりあえずpostなどのユーザーから受け取り値をdbに保存・表示する前に、自分で保存(カラムは左から順にid,name,sexになっていてidの1~29は埋まっている状態です。)・表示してみようと思いtest.dbのhumanテーブルに「データの追加」と表記している部分をテーブルに書き込み表示したいのですが、エラーは表示されないもののid30番にデータの追加ができておらず困っています。 データを追加する方法を教えてください。 <?php // 変数の初期化 $db = null; $sql = null; $res = null; $row = null; $db = new SQLite3("test.db"); // データの追加 $sql = 'INSERT INTO human( id, name, sex, ) VALUES ( 30, "吉川", "男", )'; // データの取得 $sql = 'SELECT * FROM human WHERE id BETWEEN 1 AND 50;'; $res = $db->query($sql); while( $row = $res->fetchArray() ) { echo '<ul>'.'<li>'. $row[0] . $row[1] .$row[2].'<li>'.'<ul>';} ?>

  • sqlite3の動作が?xamppでは問題なく

    sqlite3の動作が?xamppでは問題なく作動しますが、ロリポップサーバーではFatal errorがでます。ご教授お願い致します。 <?php $db = new SQLite3('fukurou.db'); try { $db = new SQLite3('fukurou.db'); } catch (Exception $e) { print 'DBへの接続でエラーが発生しました。<br>'; print $e->getTraceAsString(); } $results = $db->query('SELECT * FROM syouhin'); while ($row = $results->fetchArray()) { print $row['no']; print $row['name']; print $row['kakaku']; print '<br>'; } $db = new SQLite3('fukurou.db'); $db->close();

  • 自動的にchekboxを

    mysqlからデータを表示して自動的にチェックボックスを 生成し、チェックしてsubmitしたらそれを表示したいのですが、checkboxのvalue値を自動生成できず悩んでいます。ご伝授お願いしたいます。 while ($row = mysql_fetch_assoc($result)) { print($row['name_no']); print($row['name']); print($row['price']); print('<input type="checkbox" name="no[]" value= row['name_no'])'); } print(' <input type="submit"></form>'); $idno=join($_POST["no"]); print($idno);

    • 締切済み
    • PHP
  • sqlite3の.mode設定した状態を保存したい

    sqlite3を使って学習しています。 コマンドプロンプトの設定について教えて下さい。 sqlite> select * from goods; 1|デジタルカメラ|35000 2|ノートPC|72000 3|プリンター|27500 sqlite> では、カラム名などの情報が表示されず見ずらいです。 なので起動するたびに下記のようにしています。 sqlite> .header on sqlite> .mode column sqlite> select * from customer; id name old address ---------- ---------- ---------- ---------- 1 aaa 52 bbb 2 谷 26 名古屋 2 近藤 32 東京 4 山下 18 大阪 5 長谷川 26 大阪 2 萩野 22 東京 1 aaa 52 bbb 4 廣瀬 12 山口 sqlite> 常にこの設定のままにしておきたいです。 いろいろ調べてみたのですが解決しませんでした。 設定を保存しておく方法はないのでしょうか。

    • ベストアンサー
    • MySQL
  • プライマリーキー

    プログラムど素人です プライマリーキーはつけといたほうがいいでしょうか? プライマリーキーがないとプライマリーキー以外のカラムをselectするとき遅くなるのでしょうか? プライマリーキーのカラム名はid以外でもいいですか? 質問2 phpmyadminからindexを他のカラムにつけた場合はそのカラムにindexつけた後に追加された行も自動的にindexがついていますか? よろしくお願いします

    • ベストアンサー
    • MySQL
  • C# Linq To XML について

    C#をつかって、XMLファイルを読み出し、値を検索しようとしていますが、ほしい情報をとることができません。もしわかる方がいましたら、ご回答よろしくおねがいします。 XMLは下記の形式で、このtableが4つ続いてあります。 <table> <row> <column name="Tests">Tests Textvalues</column> </row> <row> <column name="A">Id</column> <column name="B">Description</column> <column name="C">Value</column> </row> <row> <column name="A">1</column> <column name="B">no</column> <column name="C">34 25 E0</column> </row> <row> <column name="A">2</column> <column name="B">yes</column> <column name="C">34 25 E1</column> </row> </table> <table>.....つづく 下記のようなコードを書きました。 XElement xelement = XElement.Load(ファイルパス); IEnumerable<XElement> tables = xelement.Elements(); foreach (XElement table in tables) { var name = from nm in table.Elements("row") where (string)nm.Element("colmun").Attribute("B")== "no"              select nm; foreach (var a in name) { Console.WriteLine(a); } } 残念ながら、このコードでは、nameの中身がからっぽです。 目的は、Bの値からCの値を検索することです。 以上、よろしくお願いします。