31 lines
757 B
MySQL
31 lines
757 B
MySQL
|
|
CREATE TABLE users (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
username VARCHAR(64) NOT NULL UNIQUE,
|
||
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
||
|
|
password CHAR(64) NOT NULL,
|
||
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||
|
|
role VARCHAR(32) NOT NULL DEFAULT 'user',
|
||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
);
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
u.username,
|
||
|
|
u.email,
|
||
|
|
p.title
|
||
|
|
FROM users u
|
||
|
|
JOIN posts p ON p.author_id = u.id
|
||
|
|
WHERE u.is_active = TRUE
|
||
|
|
ORDER BY p.created_at DESC
|
||
|
|
LIMIT 20
|
||
|
|
|
||
|
|
SELECT * FROM;
|
||
|
|
|
||
|
|
CREATE INDEX ON posts(status);
|
||
|
|
|
||
|
|
INSERT INTO users (username, email, password)
|
||
|
|
VALUES ('alice', 'alice@example.com');
|
||
|
|
|
||
|
|
UPDATE posts
|
||
|
|
SET status = 'archived',
|
||
|
|
WHERE published_at < datetime('now', '-1 year');
|