PHP SQLite study notes and FAQ analysis page 1/2_PHP tutorial
Until you learn! Find information before learning
SQLite sql
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
sqlite FAQ
(1) How to create an auto-grow field?
Short answer: Columns declared as INTEGER PRIMARY KEY will grow automatically.
Longer answer: If you declare a column of the table as INTEGER PRIMARY KEY, then whenever you insert a NULL value in that column, NULL is automatically converted to a value greater than the maximum value in the column. An integer of 1, which will be 1 if the list is empty. (If the maximum possible primary key is 9223372036854775807, that one, the key value will be a random unused number.) For example, there is the following list:
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
On this table, the following statement
INSERT INTO t1 VALUES(NULL,123);
is logically equivalent to:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
There is a new API called sqlite3_last_insert_rowid(), which will return the most recently inserted integer value.
Note that this integer will be 1 greater than the maximum value in the column in the table before the insertion. This key value is unique in the current table. But it is possible to overlap with values that have been deleted from the table. To create a unique key value throughout the life cycle of the table, you need to add an AUTOINCREMENT statement to the INTEGER PRIMARY KEY. Then, the new key value will be 1 greater than the maximum value that ever existed in the table. If the largest possible integer value ever exists in the data table, INSERT will fail with an SQLITE_FULL error code.
----------------------------------------- ---------------------------------------
(2)SQLite3 support What data type?
NULL
INTEGER
REAL
TEXT
BLOB
But in fact, sqlite3 also accepts the following data types:
smallint 16-bit integer.
interger 32-bit integer.
decimal(p,s) The exact value of p and the decimal integer of size s. The exact value p refers to the total number of digits (digits), and s refers to the number of digits after the decimal point. If not specified, the system will set p=5; s=0.
float 32-bit real number.
double 64-bit real number.
char(n) n-length string, n cannot exceed 254.
varchar(n) is a string with a variable length and a maximum length of n. n cannot exceed 4000.
graphic(n) is the same as char(n), but its unit is two characters, double-bytes, and n cannot exceed 127. This form is to support fonts with a length of two characters, such as Chinese characters.
vargraphic(n) A two-character string with variable length and a maximum length of n, n cannot exceed 2000.
date contains year, month, and date.
time includes hours, minutes and seconds.
timestamp contains year, month, day, hour, minute, second and thousandth of a second.
See http://www.sqlite.org/datatype3.html.
-------------------------- -------------------------------------------------- ----
(3)SQLite allows inserting strings into an integer field!
This is a feature, not a bug. SQLite does not enforce data type constraints. Any data can be inserted into any column. You can insert a string of any length into an integer column, a floating point number into a Boolean column, or a date value into a character column. The data type specified in CREATE TABLE does not restrict the insertion of any data into the column. Any column can accept strings of any length (except for one case: columns marked INTEGER PRIMARY KEY can only store 64-bit integers. When inserting data other than integers into such columns, an error will occur. .
But SQLite does use the declared column type to indicate the format you expect. So, for example, when you insert a string into an integer column, SQLite will try to convert the string into an integer. If it can be converted, it inserts the integer; otherwise, it inserts the string.This property is sometimes called type or column affinity.
--------------------- -------------------------------------------------- ---------
(4) Why does SQLite not allow the use of 0 and 0.0 as primary keys in two different rows of the same table?
The primary key must be of numeric type. Changing the primary key to TEXT type will not work.
Each row must have a unique primary key. For a numeric column, SQLite considers '0' and '0.0' to be the same because they are equal when compared as integers (see previous question). Therefore, this value is not unique.
----------------------------------------- ---------------------------------------
(5)Multiple Can an application or multiple instances of an application access the same database file simultaneously?
Multiple processes can open the same database at the same time. Multiple processes can perform SELECT operations at the same time, but only one process can make changes to the database at any one time.
SQLite uses read and write locks to control access to the database. (In systems such as Win95/98/ME that do not support read and write locks, a probabilistic simulation is used instead.) But be careful when using it: If the database file is stored on an NFS file system, this lock mechanism may Not working properly. This is because fcntl() file locking is not implemented correctly on many NFS. When multiple processes may access the database at the same time, you should avoid placing database files on NFS. On Windows, Microsoft's documentation says: If you use the FAT file system without running the share.exe daemon, the lock may not work properly. Those who have a lot of experience on Windows told me: For network files, the implementation of file locks has many bugs and is unreliable. If what they say is right, sharing a database between two or more Windows machines may cause undesirable problems.
We realize that no other embedded SQL database engine can handle as much concurrency as SQLite. SQLite allows multiple processes to open a database at the same time and read a database at the same time. When any process wants to write, it must lock the database file during the update process. But that's usually just a few milliseconds. Other processes only need to wait for the writing process to finish its work. Typically, other embedded SQL database engines only allow one process to connect to the database at a time.
However, Client/Server database engines (such as PostgreSQL, MySQL, or Oracle) usually support higher levels of concurrency and allow multiple processes to write to the same database at the same time. This mechanism is possible on a Client/Server structured database because there is always a single server process that controls and coordinates access to the database. If your application requires a lot of concurrency, then you should consider using a Client/Server database. But experience shows that many applications often require much less concurrency than their designers imagined.
When SQLite attempts to access a file that is locked by another process, the default behavior is to return SQLITE_BUSY. This behavior can be adjusted in C code using the sqlite3_busy_handler() or sqlite3_busy_timeout() API functions.
-------------------------------------------------- ----------------------------

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.
