ホームページ バックエンド開発 PHPチュートリアル PHP SQLite 学習ノートと FAQ 分析ページ 1/2_PHP チュートリアル

PHP SQLite 学習ノートと FAQ 分析ページ 1/2_PHP チュートリアル

Jul 21, 2016 pm 03:51 PM
php sql sqlite そして 分析する 勉強 勉強 学ぶ よくある問題 見つけようとする ノート 材料

学ぶ前に情報を見つけてください
SQLite SQL
データベースを接続
トランザクションを開始
コメント
トランザクションをコミット
コピー
インデックスを作成
テーブルを作成
トリガーを作成
ビューを作成
削除
データベースのデタッチ
インデックスの削除
テーブルのドロップ
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT 句
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE


の qlite FAQ
(1) 自動成長フィールドを作成するには?

短い答え: INTEGER PRIMARY KEY として宣言された列は自動的に拡張されます。

より長い答え: テーブルの列を INTEGER PRIMARY KEY として宣言した場合、その列に NULL 値を挿入するたびに、NULL は列の最大値より 1 大きい整数に自動的に変換されます。テーブルが空の場合は 1 になります。 (最大の主キーが 9223372036854775807 の場合、キー値はランダムな未使用の数値になります。) たとえば、次のリストがあります:

CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
) ;

in このテーブルでは、次のステートメント

INSERT INTO t1 VALUES(NULL,123);

は論理的に次と同等です:

INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);

はい sqlite3_last_insert_rowid() と呼ばれる新しい API は、最後に挿入された整数値を返します。

この整数は、挿入前にテーブル内のその列の最大値より 1 大きいことに注意してください。このキー値は現在のテーブル内で一意です。ただし、テーブルから削除された値と重複する可能性があります。テーブルのライフサイクル全体を通じて一意のキー値を作成するには、AUTOINCREMENT ステートメントを INTEGER PRIMARY KEY に追加する必要があります。その後、新しいキー値は、テーブル内にこれまでに存在した最大値より 1 大きくなります。可能な最大の整数値がデータ テーブルに存在する場合、INSERT は SQLITE_FULL エラー コードで失敗します。


---------------------------------------------- --- ----------------------------------

(2)SQLite3 はどのようなデータ型をサポートしていますか?

NULL
INTEGER
REAL
TEXT
BLOB
しかし実際には、sqlite3 は次のデータ型も受け入れます:
smallint 16 ビット整数。
interger 32 ビット整数。
decmal(p,s) p の正確な値とサイズ s の 10 進整数。正確な値 p は合計桁数 (桁数) を指し、s は小数点以下の桁数を指します。指定しない場合、システムは p=5 を設定します。
float 32 ビット実数。
double 64 ビット実数。
char(n) n 長さの文字列。n は 254 を超えることはできません。
varchar(n) 可変長の文字列で、最大長は n です。n は 4000 を超えることはできません。
graphic(n) は char(n) と同じですが、その単位は全角 2 文字であり、n は 127 を超えることはできません。この形式は、漢字など、2 文字の長さのフォントをサポートするためのものです。
vargraphic(n) 可変長の 2 文字の文字列。n の最大長は 2000 を超えることはできません。
日付には年、月、日が含まれます。
時間には、時間、分、秒が含まれます。
タイムスタンプには、年、月、日、時、分、秒、1000分の1秒が含まれます。

http://www.sqlite.org/datatype3.htmlを参照してください。
-------------------------------- --------------------------------------

(3) SQLite では、整数フィールドに文字列を挿入できます。

これは機能であり、バグではありません。 SQLite はデータ型の制約を強制しません。任意のデータを任意の列に挿入できます。任意の長さの文字列を整数列に挿入したり、浮動小数点数をブール列に挿入したり、日付値を文字列に挿入したりできます。 CREATE TABLE で指定されたデータ型は、列へのデータの挿入を制限しません。どの列でも任意の長さの文字列を受け入れることができます (ただし、INTEGER PRIMARY KEY とマークされた列には 64 ビット整数のみを格納できるという 1 つのケースを除きます。そのような列に整数以外のデータを挿入すると、エラーが発生します。

しかし、SQLite はしたがって、たとえば、整数列に文字列を挿入すると、SQLite はその文字列を整数に変換しようとします。それ以外の場合は、文字列が挿入されます。このプロパティは、タイプまたは列のアフィニティと呼ばれることもあります


-------------------------- ----------- -------------------------------------- ---

(4) SQLite はなぜ同じテーブルの 2 つの異なる行で主キーとして 0 と 0.0 を使用することはできませんか?

主キーは数値型である必要があります。主キーを TEXT 型に変更しても機能しません。

各行には一意の主キーが必要です。数値列の場合、整数として比較すると等しいため、SQLite は '0' と '0.0' を同じものとみなします (前の質問を参照)。したがって、この値は一意ではありません。


---------------------------------------------- --- ----------------------------------

(5) 複数のアプリケーション、または 1 つのアプリケーションの複数のインスタンス同じデータベースファイルに同時にアクセスできますか?

複数のプロセスが同時に同じデータベースを開くことができます。複数のプロセスが同時に SELECT 操作を実行できますが、データベースに変更を加えられるプロセスは一度に 1 つだけです。

SQLite は読み取りおよび書き込みロックを使用してデータベースへのアクセスを制御します。 (読み取りおよび書き込みロックをサポートしていない Win95/98/ME などのシステムでは、代わりに確率的シミュレーションが使用されます。) ただし、使用するときは注意してください。データベース ファイルが NFS ファイル システムに保存されている場合、このロック メカニズムは、正常に動作できません。これは、fcntl() ファイル ロックが多くの NFS で正しく実装されていないためです。複数のプロセスが同時にデータベースにアクセスする可能性がある場合は、データベース ファイルを NFS に配置しないようにする必要があります。 Windows では、Microsoft のドキュメントに次のように記載されています。 share.exe デーモンを実行せずに FAT ファイル システムを使用すると、ロックが正しく機能しない可能性があります。 Windows の経験が豊富な人々は、次のように言いました。ネットワーク ファイルの場合、ファイル ロックの実装には多くのバグがあり、信頼性が低いです。彼らの言うことが正しければ、2 台以上の Windows マシン間でデータベースを共有すると、望ましくない問題が発生する可能性があります。

SQLite ほど同時実行性を処理できる埋め込み SQL データベース エンジンは他にないことを認識しています。 SQLite を使用すると、複数のプロセスが同時にデータベースを開き、同時にデータベースを読み取ることができます。プロセスが書き込みを行う場合、更新プロセス中にデータベース ファイルをロックする必要があります。しかし、それは通常、わずか数ミリ秒です。他のプロセスは、書き込みプロセスが作業を完了するのを待つだけで済みます。通常、他の組み込み SQL データベース エンジンでは、一度に 1 つのプロセスのみがデータベースに接続できます。

ただし、クライアント/サーバー データベース エンジン (PostgreSQL、MySQL、Oracle など) は通常、より高いレベルの同時実行性をサポートし、複数のプロセスが同じデータベースに同時に書き込むことができます。このメカニズムは、データベースへのアクセスを制御および調整する単一のサーバー プロセスが常に存在するため、クライアント/サーバー構造のデータベースで可能です。アプリケーションで多くの同時実行性が必要な場合は、クライアント/サーバー データベースの使用を検討する必要があります。しかし、経験によれば、多くのアプリケーションでは、設計者が想像していたよりもはるかに少ない同時実行性が必要になることがよくあります。

SQLite が別のプロセスによってロックされたファイルにアクセスしようとすると、デフォルトの動作は SQLITE_BUSY を返します。この動作は、sqlite3_busy_handler() または sqlite3_busy_timeout() API 関数を使用して C コードで調整できます。
------------------------------------------------- ------------------------

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319179.html技術記事 SQLite sql を学ぶ前に情報を見つけてください ATTACHDATABASE BEGITRANSACTION comment COMMITTRANSACTION COPY CREATEINDEX CREATETABLE CREATETRIGGER CREATEVIEW DELETE DETACHDATABASE DR...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

DeepSeek使用のためのFAQの概要 DeepSeek使用のためのFAQの概要 Feb 19, 2025 pm 03:45 PM

Deepseekai ToolユーザーガイドとFAQ Deepseekは、強力なAIインテリジェントツールです。 FAQ:異なるアクセス方法の違い:Webバージョン、アプリバージョン、API呼び出しの間に機能に違いはありません。アプリは、Webバージョンのラッパーにすぎません。ローカル展開は蒸留モデルを使用します。これは、DeepSeek-R1のフルバージョンよりもわずかに劣っていますが、32ビットモデルには理論的には90%のフルバージョン機能があります。居酒屋とは何ですか? Sillytavernは、APIまたはOllamaを介してAIモデルを呼び出す必要があるフロントエンドインターフェイスです。壊れた制限とは何ですか

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

See all articles