搜尋
首頁後端開發php教程SQLite資料庫安裝 php SQLite學習筆記與常見問題分析第1/2頁

直到學會! 學前找資料
SQLite的sql
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGOPfPP未來>CU5>DRT5> 🎜 >INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
簡短回答:宣告為 INTEGER PRIMARY KEY 的欄位將會自動成長。
長一點的答案: 如果你聲明表的一列為 INTEGER PRIMARY KEY,那麼, 每當你在該列上插入​​一NULL值時, NULL自動被轉換為一個比該列中最大值大1的一個整數,如果表是空的, 將會是1。 (如果是最大可能的主鍵 9223372036854775807,那個,將鍵值將是隨機未使用的數字。) 如,有下列表:
CREATE TABLE tEY(
🎜>);
在該表上,下列語句
INSERT INTO t1 VALUES(NULL,123);
邏輯上等價於:
INSERT INTOt1 VALUE ) FROM t1)+1,123);
有一個新的API叫做 sqlite3_last_insert_rowid(), 它將傳回最近插入的整數值。
注意該整數會比表中該列上的插入之前的最大值大1。該鍵值在目前的表中是唯一的。但有可能與已從表中刪除的值重疊。要建立在整個表的生命週期中唯一的鍵值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT聲明。那麼,新的鍵值將會比該表中曾能存在過的最大值大1。如果最大可能的整數值在資料表中曾經存在過,INSERT將會失敗, 並回傳SQLITE_FULL錯誤碼。
----------------------------------------------- ---------------------------------
(2)SQLite3支援何種資料類型?
NULL
INTEGER
REAL
TEXT
BLOB
但實際上,sqlite3也接受以下的資料型別:
smallint  16 位元的整數。
interger  32 位元的整數。
decimal(p,s)  p 精確值和 s 大小的十進位整數,精確值p是指全部有幾位數(digits)大小值    ,s是指小數點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float   32位元的實數。
double   64位元的實數。
char(n)   n 長度的字串,n不能超過 254。
varchar(n)  長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)  和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。   這個形態是為了支援兩個字元長度的字體,例如中文字。
vargraphic(n)  可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date   包含了 年份、月份、日期。
time   包含了 小時、分鐘、秒。
timestamp  包含了 年、月、日、時、分、秒、千分之一秒。
參見 http://www.sqlite.org/datatype3.html.
----------------------------- -------------------------------------------------- -
(3)SQLite允許在一個integer型欄位中插入字串!
這是一個特性,而不是一個bug。 SQLite不強制資料類型約束。任何資料都可以插入任何列。你可以向一個整數列中插入任意長度的字串,向布林型列中插入浮點數,或向字元型列插入日期型值。 在 CREATE TABLE 中所指定的資料類型不會限制在該欄位中插入任何資料。任何欄位都可接受任意長度的字串(只有一種情況除外: 標誌為INTEGER PRIMARY KEY的資料列只能儲存64位元整數,當此列中插入資料除整數以外的資料時,將會產生錯誤。 ,它將插入該整數;否則,將插入字串。 -------------------------------------------------- -----------------
(4)為什麼SQLite不允許在同一個表格不同的兩行上使用0和0.0作主鍵?類型,將主鍵改為TEXT型將無法運作。
每一行必須有一個唯一的主鍵。對於一個數值型列, SQLite認為 '0' 和 '0.0' 是相同的, 因為他們在作為整數比較時是相等的(參見上一問題)。 所以,這樣值就不唯一了。
----------------------------------------------- ---------------------------------
(5)多個應用程式或一個應用程式的多個實例可以同時存取同一個資料庫檔案嗎?
多個進程可同時開啟同一個資料庫。多個進程可以同時進行SELECT 操作,但在任一時刻,只能有一個進程可以對資料庫進行更改。
SQLite 使用讀取、寫入鎖定控制對資料庫的存取。 (在Win95/98/ME等不支援讀取、寫入鎖的系統下,使用一個機率性的模擬來代替。)但使用時要注意:如果資料庫檔案存放於一個NFS檔案系統上,這種鎖定機制可能不能正常工作。 這是因為 fcntl() 檔案鎖定在許多NFS上沒有正確的實作。在可能有多個行程同時存取資料庫的時候,應該避免將資料庫檔案放到NFS上。在Windows上,Microsoft的文檔中說:如果使用 FAT 檔案系統而沒有執行 share.exe 守護程式,那麼鎖定可能是不能正常使用的。那些在Windows上有很多經驗的人告訴我:對於網路文件,文件鎖的實作有很多Bug,是靠不住的。如果他們說的是對的,那麼在兩台或多台Windows機器間共享資料庫可能會引起不期望的問題。
我們意識到,沒有其它嵌入式的 SQL 資料庫引擎能像 SQLite 這樣處理如此多的並發。 SQLite允許多個行程同時開啟一個資料庫,同時讀取一個資料庫。當有任何進程想要寫時,它必須在更新過程中鎖住資料庫檔案。但那通常只是幾毫秒的時間。其它進程只需等待寫入進程幹完活結束。典型地,其它嵌入式的SQL資料庫引擎同時只允許一個程序連接到資料庫。
但是,Client/Server資料庫引擎(如 PostgreSQL, MySQL, 或 Oracle)通常支援更高層級的並發,並且允許多個行程同時寫入同一個資料庫。這種機制在Client/Server結構的資料庫上是可能的,因為總是有一個單一的伺服器程序很好地控制、協調對資料庫的存取。如果你的應用程式需要很多的並發,那麼你應該考慮使用一個Client/Server 結構的資料庫。但經驗表明,許多應用程式需要的並發,往往比其設計者所想像的少得多。
當SQLite試圖存取一個被其它程序鎖住的檔案時,缺省的行為是回傳 SQLITE_BUSY。 可以在C程式碼中使用 sqlite3_busy_handler() 或 sqlite3_busy_timeout() API 函數調整此行為。
----------------------------------------------- ----------------------------

目前1/2頁 12下一頁

以上就介紹了SQLite資料庫安裝 php SQLite學習筆記與常見問題分析第1/2頁,包含了SQLite資料庫安裝方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP中的PDO是什麼?PHP中的PDO是什麼?Apr 28, 2025 pm 04:51 PM

本文討論了PHP數據對象(PDO),這是PHP中數據庫訪問的擴展名。它通過準備好的語句及其對MySQLI的好處,包括數據庫抽象和更好的錯誤處理,強調了PDO在增強安全性方面的作用。

php中的memcache是​​什麼?是否可以在幾個PHP項目之間共享一個memcache的一個實例?php中的memcache是​​什麼?是否可以在幾個PHP項目之間共享一個memcache的一個實例?Apr 28, 2025 pm 04:47 PM

memcache和memcached是通過減少數據庫負載加快Web應用程序的PHP緩存系統。可以在仔細的密鑰管理的項目之間共享一個實例。

使用MySQL和PHP創建新數據庫的步驟是什麼?使用MySQL和PHP創建新數據庫的步驟是什麼?Apr 28, 2025 pm 04:44 PM

文章討論了使用PHP創建和管理MySQL數據庫的步驟,專注於連接,創建,常見錯誤和安全措施。

JavaScript是否與PHP相互作用?JavaScript是否與PHP相互作用?Apr 28, 2025 pm 04:43 PM

本文討論了JavaScript和PHP如何通過HTTP請求間接相互作用,因為它們的環境不同。它涵蓋了將數據從JavaScript發送到PHP的方法

如何從命令行執行PHP腳本?如何從命令行執行PHP腳本?Apr 28, 2025 pm 04:41 PM

本文討論了從命令行執行PHP腳本的,包括步驟,常見選項,故障排除錯誤和安全考慮。

PHP中的梨是什麼?PHP中的梨是什麼?Apr 28, 2025 pm 04:38 PM

梨是可重複使用組件的PHP框架,通過包裝管理,編碼標準和社區支持增強開發。

PHP的用途是什麼?PHP的用途是什麼?Apr 28, 2025 pm 04:37 PM

PHP是一種多功能的腳本語言,主要用於Web開發,創建動態頁面,還可以用於命令行腳本,桌面應用程序和API開發。

PHP的舊名稱是什麼?PHP的舊名稱是什麼?Apr 28, 2025 pm 04:36 PM

文章討論了PHP從1995年的“個人主頁工具”到1998年的“ PHP:超文本預處理器”的演變,這反映了其超越個人網站的擴展使用。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中