(in SQL)
CREATE TABLE table (column type, ...);
(in sqlite3 shell)
.mode csv .import FILE TABLE
SELECT columns FROM table;
AVG COUNT DISTINCT LOWER MAX MIN UPPER
...
WHERE LIKE ORDER BY LIMIT GROUP BY ...
INSERT INTO table (column, ...) VALUES(value, ...);
UPDATE table SET column = value WHERE condition;
DELETE FROM table WHERE condition;
INTEGER REAL NUMERIC TEXT BLOB
NOT NULL UNIQUE
PRIMARY KEY FOREIGN KEY
JOIN ...
CREATE INDEX name ON table (column, ...);
id = 'CmUv48DLvxd' rows = db.execute("SELECT likes FROM posts WHERE id = ?", id) likes = rows[0][3] db.execute("UPDATE posts SET likes = ? WHERE id = ?", likes + 1, id)
BEGIN TRANSACTION COMMIT ROLLBACK
id = 'CmUv48DLvxd' db.execute("BEGIN TRANSACTION") rows = db.execute("SELECT likes FROM posts WHERE id = ?", id) likes = rows[0][3] db.execute("UPDATE posts SET likes = ? WHERE id = ?", likes + 1, id) db.execute("COMMIT")
rows = db.execute( "SELECT * FROM users WHERE username = ? AND password = ?", (username, password) ) if rows: ...
rows = db.execute( f"SELECT * FROM users WHERE username='{username}' AND password='{password}'" ) if rows: ...
rows = db.execute( "SELECT * FROM users WHERE username='leomessi'--' AND password='{password}" ) if rows: ...
Why not put genre column in table shows?
INTEGER: more efficient, less space
Numeric: General numeric type, more flexible
Blob: binary large object