Home Backend Development PHP Tutorial SQLite database installation php SQLite study notes and FAQ analysis page 1/2

SQLite database installation php SQLite study notes and FAQ analysis page 1/2

Jul 29, 2016 am 08:38 AM

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 Auto-increment fields?
Short answer: Declare as INTEGER PRIMARY KEY The columns 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 an integer that is 1 greater than the maximum value in the column. If the table is empty, will be 1. (If the maximum possible primary key is 9223372036854775807, then the key value will be a random unused number.) For example, there is the following table:
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
In this table Above, 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 (), it will return the most recently inserted integer value.
Note that this integer will be 1 greater than the maximum value on that 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)What data types does SQLite3 support?
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) A string with 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, 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 to an integer if it can be converted. The integer will be inserted; otherwise, the string will be inserted. 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 on two different rows in the same table?
The primary key must be a numeric type. Change 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 applications or multiple instances of an application can be accessed simultaneously The same database file?
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 Can not work normally. 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 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.
------------------------------------------------- --------------------------

Current page 1/2 12Next page

The above introduces the SQLite database installation php SQLite study notes and FAQ analysis page 1/2, including the content of SQLite database installation. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How does session hijacking work and how can you mitigate it in PHP? How does session hijacking work and how can you mitigate it in PHP? Apr 06, 2025 am 12:02 AM

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

See all articles