Το Τυφλό σύστημα πληκτρολόγησης είναι σημαντικό στον προγραμματισμό. Είστε πιο αποτελεσματικοί χρησιμοποιώντας τεχνικές γρήγορης πληκτρολόγησης για τη σύνταξη κώδικα στη γλώσσα προγραμματισμού SQL.
Προγραμματισμός σε SQL και τυφλο σύστημα γραφησ
Η εκμάθηση της SQL και η εξάσκηση στο τυφλό σύστημα γραφής συνδυάζονται φυσικά. Τα ερωτήματα SQL είναι γεμάτα παρενθέσεις, κόμματα, τελεστές και εισαγωγικά. Μικρά λάθη, όπως ένα λάθος εισαγωγικό ή ένα ξεχασμένο ελληνικό ερωτηματικό (semicolon), μπορούν να κάνουν ολόκληρο το ερώτημα να αποτύχει. Όταν γράφετε SQL, είναι χρήσιμο να γνωρίζετε ποια στοιχεία της σύνταξης είναι κοινά μεταξύ των βάσεων δεδομένων και ποια είναι ειδικά για κάθε σύστημα. Αυτό το άρθρο επικεντρώνεται κυρίως στο PostgreSQL, αλλά αναφέρει επίσης το MySQL, το SQLite και το SQL Server εκεί όπου η σύνταξη διαφέρει.
Τι είναι χαρακτηριστικό στη σύνταξη της SQL;
Η SQL (Structured Query Language) είναι δηλωτική γλώσσα. Αντί να περιγράφετε βήμα-βήμα πώς θα ανακτηθούν τα δεδομένα, δηλώνετε ποια δεδομένα θέλετε. Σχεδόν κάθε εντολή ξεκινά με μια λέξη-κλειδί όπως SELECT
, INSERT
ή UPDATE
. Η σειρά των κλάσεων είναι καθορισμένη: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
. Το PostgreSQL και το MySQL μοιράζονται αυτή τη σειρά, οπότε αν τη μάθετε σε ένα σύστημα, μπορείτε εύκολα να την εφαρμόσετε και στο άλλο.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Ειδικοί χαρακτήρες που πληκτρολογείτε συχνά
Η SQL περιέχει πολλά σημεία στίξης. Παρενθέσεις ()
περικλείουν συναρτήσεις και συνθήκες. Κόμματα ,
χωρίζουν στήλες. Η τελεία .
χρησιμοποιείται για σχήματα και ονόματα πινάκων, όπως public.users
. Μονά εισαγωγικά '...'
δηλώνουν λεκτικά. Το PostgreSQL χρησιμοποιεί διπλά εισαγωγικά "..."
για αναγνωριστικά, ενώ το MySQL χρησιμοποιεί backticks `...`
. Στο SQL Server εμφανίζονται επίσης αγκύλες [...]
. Η εξάσκηση με αυτά τα σύμβολα βοηθά στο να γράφετε σωστά τα ερωτήματα.
-- Λεκτικό string
SELECT * FROM books WHERE title = 'War and Peace';
-- Αναγνωριστικά με κενά (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Κεφαλαία και πεζά
Σύμφωνα με τη σύμβαση, οι λέξεις-κλειδιά SQL γράφονται συνήθως με κεφαλαία: SELECT
, FROM
, WHERE
. Αυτό διευκολύνει την αναγνώριση τους στα ερωτήματα, αλλά δεν είναι υποχρεωτικό. Στο PostgreSQL, μη εισαγωγικά αναγνωριστικά μετατρέπονται αυτόματα σε πεζά, οπότε MyTable
και mytable
αντιμετωπίζονται ως ίδια. Στο MySQL η συμπεριφορά εξαρτάται από το λειτουργικό σύστημα. Για εξάσκηση, η χρήση κεφαλαίων για λέξεις-κλειδιά είναι συνηθισμένη.
Ελληνικό ερωτηματικό (;) και τέλος εντολής
Στο PostgreSQL, κάθε εντολή συνήθως τελειώνει με ελληνικό ερωτηματικό ;
(semicolon). Η παράλειψή του μπορεί να σταματήσει την εκτέλεση σε εργαλεία όπως το psql
. Το MySQL και το SQLite είναι πιο ανεκτικά σε διαδραστικές συνεδρίες, αλλά το semicolon παραμένει καλή πρακτική. Αυτός ο μικρός χαρακτήρας συχνά ευθύνεται για αποτυχίες ερωτημάτων.
Ερωτήματα SELECT και συνενώσεις (joins)
Η σύνταξη ερωτημάτων σημαίνει συχνά και πληκτρολόγηση συνενώσεων. Το PostgreSQL χρησιμοποιεί INNER JOIN
, LEFT JOIN
και RIGHT JOIN
. Κάθε συνένωση απαιτεί τη λέξη-κλειδί ON
και μια συνθήκη. Ένα λάθος διάστημα ή μια λάθος συνθήκη αρκεί για να αποτύχει το ερώτημα. Η εξάσκηση σε joins βοηθά στην ακρίβεια με σύμβολα όπως =
και .
.
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Συναρτήσεις και εκφράσεις
Το PostgreSQL περιλαμβάνει πολλές ενσωματωμένες συναρτήσεις όπως COUNT()
, SUM()
και AVG()
. Οι παρενθέσεις είναι πάντα απαραίτητες. Συναρτήσεις ημερομηνίας και ώρας όπως NOW()
ή DATE_TRUNC()
είναι χαρακτηριστικές του PostgreSQL. Το MySQL έχει αντίστοιχες όπως CURDATE()
ή DATE_FORMAT()
. Η σωστή πληκτρολόγηση τους απαιτεί προσοχή σε underscores, κόμματα και παρενθέσεις.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Οι εντολές που τροποποιούν δεδομένα έχουν πολλά σημεία στίξης. Το INSERT
χρησιμοποιεί παρενθέσεις και κόμματα για στήλες και τιμές. Το UPDATE
χρησιμοποιεί =
χωρισμένα με κόμματα. Το DELETE
συνδυάζει λέξεις-κλειδιά με συνθήκες. Αυτές οι δομές είναι σχεδόν ίδιες στο PostgreSQL, το MySQL, το SQLite και το SQL Server, με μικρές διαφορές στα εισαγωγικά.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
Το PostgreSQL χρησιμοποιεί συχνά CTE (Common Table Expressions) με τη λέξη WITH
. Χρειάζονται πολλές παρενθέσεις και κόμματα, γι' αυτό είναι καλή άσκηση. Το MySQL και το SQLite τα υποστηρίζουν σε νεότερες εκδόσεις, ενώ το SQL Server επίσης. Η σωστή ισορροπία παρενθέσεων είναι το πιο κοινό λάθος.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
Συναρτήσεις παραθύρου (Window functions)
Το PostgreSQL είναι γνωστό για τις προχωρημένες συναρτήσεις παραθύρου. Η τυπική σύνταξη OVER (PARTITION BY ... ORDER BY ...)
απαιτεί προσεκτική πληκτρολόγηση παρενθέσεων και λέξεων-κλειδιών. Το MySQL και το SQL Server υποστηρίζουν επίσης συναρτήσεις παραθύρου, αλλά το PostgreSQL θεωρείται συχνά σημείο αναφοράς.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Παράμετροι και placeholders
Στις εφαρμογές, τα placeholders διαφέρουν ανάλογα με τη βάση δεδομένων. Το PostgreSQL χρησιμοποιεί $1, $2
, το MySQL και το SQLite χρησιμοποιούν ?
, ενώ το SQL Server @p1
. Αυτά τα μικρά σύμβολα είναι εύκολο να γραφτούν λάθος, αλλά είναι κρίσιμα για την εκτέλεση.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Σύνοψη
Σύμφωνα με τη σύμβαση, οι λέξεις-κλειδιά SQL γράφονται με κεφαλαία, ενώ οι αναγνωριστές παραμένουν πεζοί εκτός αν μπουν σε εισαγωγικά. Το PostgreSQL χρησιμοποιεί διπλά εισαγωγικά για αναγνωριστές, placeholders $n
, CTE και συναρτήσεις παραθύρου. Το MySQL χρησιμοποιεί backticks και placeholders ?
. Το SQL Server εισάγει αγκύλες και παραμέτρους @
. Το SQLite έχει απλή σύνταξη, αλλά απαιτεί επίσης ακρίβεια. Η εξάσκηση σε SQL ερωτήματα ενισχύει την ακρίβεια με σημεία στίξης, λέξεις-κλειδιά και σύμβολα. Η εστίαση στο PostgreSQL δίνει εμπειρία με μια από τις πιο διαδεδομένες σύγχρονες βάσεις δεδομένων.