Getting Started with SQLite
SQLite is a lightweight, serverless database engine perfect for applications and development. Learn how to manage your database with ease using tools like the AI2SQL Desktop App.
Creating a Database
.open mydatabase.db
CREATE TABLE users (
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
email TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_username ON users(username)
Basic Operations
INSERT INTO users (username, email) VALUES
('john_doe', 'john@example.com'),
('jane_smith', 'jane@example.com');
SELECT * FROM users WHERE username LIKE 'john%';
UPDATE users
SET email = 'new.john@example.com'
WHERE username = 'john_doe'
SQLite Browser Features
1. Database Structure
.schema users
.tables
PRAGMA table_info(users)
2. Data Browsing
SELECT * FROM users
LIMIT 100;
.mode csv
.output users_export.csv
SELECT * FROM users;
.output
3. Query Execution
BEGIN TRANSACTION;
CREATE TABLE temp_users AS
SELECT * FROM users WHERE created_at < DATE('now', '-1 year');
DELETE FROM users WHERE created_at < DATE('now', '-1 year');
COMMIT
Advanced Features
1. Virtual Tables
CREATE VIRTUAL TABLE articles_fts USING fts5(
title,
content,
tags
);
SELECT * FROM articles_fts
WHERE articles_fts MATCH 'sqlite database'
2. Aggregate Functions
CREATE TABLE sales (
date TEXT,
amount DECIMAL
);
SELECT
strftime('%Y-%m', date) as month,
COUNT(*) as transactions,
SUM(amount) as total_sales,
AVG(amount) as avg_sale,
MIN(amount) as min_sale,
MAX(amount) as max_sale
FROM sales
GROUP BY month
ORDER BY month DESC
3. Window Functions
SELECT
date,
amount,
SUM(amount) OVER (
ORDER BY date
) as running_total,
RANK() OVER (
ORDER BY amount DESC
) as amount_rank
FROM
Database Management
1. Backup and Restore
.backup 'backup.db'
.restore 'backup.db'
2. Maintenance
3. Performance Optimization
PRAGMA journal_mode = WAL;
PRAGMA cache_size = -2000;
SELECT * FROM sqlite_master WHERE type = 'index'
Common Use Cases
1. Application Data Storage
CREATE TABLE app_settings (
key TEXT PRIMARY KEY,
value TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO app_settings (key, value)
VALUES
('theme', 'dark'),
('language', 'en'),
('notifications', 'enabled')
ON CONFLICT(key) DO UPDATE SET
value = excluded.value,
updated_at = CURRENT_TIMESTAMP
2. Data Analysis
WITH RECURSIVE dates(date) AS (
SELECT DATE('now', '-30 days')
UNION ALL
SELECT DATE(date, '+1 day')
FROM dates
WHERE date < DATE('now')
)
SELECT
dates.date,
COUNT(sales.id) as sales_count,
COALESCE(SUM(sales.amount), 0) as daily_total
FROM dates
LEFT JOIN sales ON DATE(sales.date) = dates.date
GROUP BY dates.date
ORDER BY
FAQs
Q: Is SQLite good for production use?
A: Yes, for appropriate use cases like embedded applications and smaller websites.
Q: How do I handle concurrent access?
A: SQLite handles concurrent reads well but use appropriate locking for writes.
Need help? Contact our support team: support@ai2sql.io
Explore our AI2SQL Desktop App for managing SQLite databases efficiently.