Συνοπτικός οδηγός MySQL
Μια αναζητήσιμη, εκτυπώσιμη αναφορά MySQL — queries, joins, indexes, συναρτήσεις, τύποι δεδομένων και εντολές διαχείρισης. Δωρεάν.
Ερωτήματα
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
Αντιστοίχιση τιμών 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
Join πίνακα με τον εαυτό του
USING (user_id)
Join σε στήλη ιδίου ονόματος
UNION / UNION ALL
Συνδυασμός συνόλων αποτελεσμάτων
SELECT u.*, o.total FROM users u JOIN orders o
Ψευδώνυμα πινάκων για σαφήνεια
Συνάθροιση
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)
Κατάταξη με window function
Τροποποίηση δεδομένων
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
Upsert σε μοναδικό κλειδί
REPLACE INTO users ...
Διαγραφή + εισαγωγή σε σύγκρουση
INSERT IGNORE INTO ...
Παράλειψη γραμμών που θα έδιναν σφάλμα
Σχήμα / 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
Cascade διαγραφές στα παιδιά
CREATE TABLE t2 LIKE t1;
Αντιγραφή δομής πίνακα
Indexes & κλειδιά
8PRIMARY KEY (id)
Μοναδικό αναγνωριστικό γραμμής
UNIQUE (email)
Επιβολή μοναδικών τιμών
CREATE INDEX idx_name ON users (name);
Επιτάχυνση αναζητήσεων σε στήλη
CREATE INDEX idx_ab ON t (a, b);
Σύνθετο (πολλαπλών στηλών) index
DROP INDEX idx_name ON users;
Αφαίρεση index
FULLTEXT (body)
Index αναζήτησης full-text
EXPLAIN SELECT ...;
Εμφάνιση query plan
SHOW INDEX FROM users;
Λίστα indexes πίνακα
Τύποι δεδομένων
9INT, BIGINT, TINYINT
Τύποι integer ανά μέγεθος
DECIMAL(10, 2)
Ακριβείς αριθμοί σταθερής υποδιαστολής
VARCHAR(255)
String μεταβλητού μήκους
TEXT, LONGTEXT
Μεγάλα blobs κειμένου
DATE, DATETIME, TIMESTAMP
Τύποι ημερομηνίας και ώρας
BOOLEAN (TINYINT(1))
True/false αποθηκευμένο ως 0/1
JSON
Native στήλη εγγράφου JSON
ENUM('a', 'b')
Μία από σταθερό σύνολο τιμών
UNSIGNED
Μη αρνητικός αριθμητικός modifier
Type sizes & limits
20TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155
Συναρτήσεις
9NOW(), CURDATE()
Τρέχουσα datetime / date
DATE_FORMAT(d, '%Y-%m-%d')
Μορφοποίηση ημερομηνίας
DATEDIFF(a, b)
Ημέρες μεταξύ δύο ημερομηνιών
CONCAT(a, ' ', b)
Ένωση strings
COALESCE(a, b, 'n/a')
Πρώτη μη-null τιμή
IFNULL(x, 0)
Αντικατάσταση null με προεπιλογή
CASE WHEN x > 0 THEN '+' ELSE '-' END
Έκφραση συνθήκης
CAST(x AS CHAR)
Μετατροπή τύπου τιμής
ROUND(x, 2)
Στρογγυλοποίηση σε δεκαδικά
Transactions & διαχείριση
9START TRANSACTION;
Έναρξη transaction
COMMIT;
Διατήρηση του transaction
ROLLBACK;
Αναίρεση του transaction
SAVEPOINT sp1;
Ορισμός σημείου rollback
SHOW TABLES;
Λίστα πινάκων της βάσης
DESCRIBE users;
Εμφάνιση δομής πίνακα
SHOW PROCESSLIST;
Λίστα ενεργών συνδέσεων
GRANT ALL ON db.* TO 'u'@'%';
Παραχώρηση δικαιωμάτων χρήστη
mysqldump -u root db > db.sql
Αντίγραφο ασφαλείας βάσης (CLI)
Καμία καταχώριση δεν ταιριάζει με «:q».
Χρειάζεστε βοήθεια;
Βρήκατε πρόβλημα με αυτό το εργαλείο; Ενημερώστε μας.