Karatasi ya Maelezo ya MySQL
Rejeleo linalotafutika na linaloweza kuchapishwa la MySQL — hoja, joins, fahirisi, vitendakazi, aina za data na amri za usimamizi. Bila malipo.
Querying
10SELECT * FROM users;
SELECT id, name FROM users;
SELECT DISTINCT city FROM users;
WHERE age > 18 AND active = 1
WHERE name LIKE 'A%'
WHERE id IN (1, 2, 3)
WHERE age BETWEEN 18 AND 30
ORDER BY created_at DESC
LIMIT 10 OFFSET 20
WHERE email IS NULL
Joins
8INNER JOIN orders ON orders.user_id = users.id
LEFT JOIN orders ON ...
RIGHT JOIN orders ON ...
CROSS JOIN colors
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
USING (user_id)
UNION / UNION ALL
SELECT u.*, o.total FROM users u JOIN orders o
Aggregation
9COUNT(*)
SUM(amount)
AVG(price)
MIN(price), MAX(price)
GROUP BY country
HAVING COUNT(*) > 5
GROUP_CONCAT(name)
COUNT(DISTINCT city)
ROW_NUMBER() OVER (ORDER BY id)
Modifying data
8INSERT INTO users (name) VALUES ('Sam');
INSERT INTO users (name) VALUES ('A'),('B');
UPDATE users SET active = 1 WHERE id = 5;
DELETE FROM users WHERE id = 5;
TRUNCATE TABLE logs;
INSERT ... ON DUPLICATE KEY UPDATE
REPLACE INTO users ...
INSERT IGNORE INTO ...
Schema / DDL
9CREATE TABLE users (id INT PRIMARY KEY);
AUTO_INCREMENT
ALTER TABLE users ADD COLUMN age INT;
ALTER TABLE users DROP COLUMN age;
ALTER TABLE users MODIFY name VARCHAR(100);
DROP TABLE IF EXISTS users;
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
CREATE TABLE t2 LIKE t1;
Indexes & keys
8PRIMARY KEY (id)
UNIQUE (email)
CREATE INDEX idx_name ON users (name);
CREATE INDEX idx_ab ON t (a, b);
DROP INDEX idx_name ON users;
FULLTEXT (body)
EXPLAIN SELECT ...;
SHOW INDEX FROM users;
Data types
9INT, BIGINT, TINYINT
DECIMAL(10, 2)
VARCHAR(255)
TEXT, LONGTEXT
DATE, DATETIME, TIMESTAMP
BOOLEAN (TINYINT(1))
JSON
ENUM('a', 'b')
UNSIGNED
Type sizes & limits
20TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
DECIMAL(M, D)
FLOAT / DOUBLE
CHAR(M)
VARCHAR(M)
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BLOB types
JSON
ENUM / SET
DATE
DATETIME
TIMESTAMP
TIME / YEAR
Functions
9NOW(), CURDATE()
DATE_FORMAT(d, '%Y-%m-%d')
DATEDIFF(a, b)
CONCAT(a, ' ', b)
COALESCE(a, b, 'n/a')
IFNULL(x, 0)
CASE WHEN x > 0 THEN '+' ELSE '-' END
CAST(x AS CHAR)
ROUND(x, 2)
Transactions & admin
9START TRANSACTION;
COMMIT;
ROLLBACK;
SAVEPOINT sp1;
SHOW TABLES;
DESCRIBE users;
SHOW PROCESSLIST;
GRANT ALL ON db.* TO 'u'@'%';
mysqldump -u root db > db.sql
Hakuna kipengele kinacholingana na “:q”.
Kuhusu Karatasi ya Maelezo ya MySQL
Karatasi hii ya kumbukumbu ya MySQL hukusanya SQL unayoandika kwa uhalisia kwenye rejea moja inayoweza kutafutwa: querying, joins, aggregation, kubadilisha data, schema na taarifa za DDL, indexes na keys, aina za data pamoja na ukubwa na mipaka yake, functions zilizojengwa ndani, na transactions na amri za usimamizi.
Ni muhimu kama ukumbusho wa sintaksia — umbo hasa la LEFT JOIN, UPSERT au ALTER TABLE — na pia kama sehemu ya kutafuta maelezo ambayo hakuna anayeyakariri, kama vipimo vya integer, mipaka ya VARCHAR na aina gani ya index inafaa query fulani.
Kama kila karatasi ya kumbukumbu kwenye kundi hili la zana ni bure na inafanya kazi upande wa mteja: chuja mistari papo hapo kwa kisanduku cha utafutaji, rukaruka kati ya sehemu kwa orodha ya yaliyomo inayoning'inia, nakili taarifa (statement) yoyote kwa bofyo moja na chapisha ukurasa kwa rejea mezani kwako.
Jinsi ya kutumia Karatasi ya Maelezo ya MySQL
- Fungua karatasi na kagua sehemu, kutoka Querying na Joins kupitia Schema / DDL hadi Transactions & admin.
- Tafuta neno-msingi kama JOIN, INDEX au GROUP BY kuchuja snippets zote papo hapo.
- Ruka kwenye Data types au Type sizes & limits unapohitaji maelezo ya uhifadhi badala ya sintaksia.
- Bofya statement au ikoni yake ya kunakili kunakili SQL kwenye clipboard yako.
- Tumia Print kwa nakala ya karatasi ya rejea kamili ya MySQL.