Τα σημερινά στατιστικά

Ολοκληρωμένες ασκήσεις
-
Πληκτρολογημένοι χαρακτήρες Δακτυλογραφημένες λέξεις
-
Χρόνος εξάσκησης
-

Γενικά στατιστικά στοιχεία

Ολοκληρωμένες ασκήσεις
-
Πληκτρολογημένοι χαρακτήρες Δακτυλογραφημένες λέξεις
-
Χρόνος εξάσκησης
-

Μάθημα πληκτρολόγησης: Προγραμματισμός στη γλώσσα SQL

Το τυφλό σύστημα πληκτρολόγησης είναι σημαντικό στον προγραμματισμό. Είστε πιο αποτελεσματικοί χρησιμοποιώντας τεχνικές γρήγορης πληκτρολόγησης για τη σύνταξη κώδικα στη γλώσσα προγραμματισμού SQL.

Ας μάθουμε περισσότερα για τη γλώσσα SQL και το τυφλό σύστημα γραφής κατά τον προγραμματισμό σε 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, η διάκριση πεζών και κεφαλαίων στα ονόματα βάσεων δεδομένων και πινάκων εξαρτάται από το λειτουργικό σύστημα και τις ρυθμίσεις του διακομιστή. Για εξάσκηση, η χρήση κεφαλαίων για λέξεις-κλειδιά είναι συνηθισμένη.

Ελληνικό ερωτηματικό (;) και τέλος εντολής

Στη SQL, το ελληνικό ερωτηματικό ; (semicolon) τερματίζει μια εντολή. Διαδραστικά εργαλεία όπως το psql, ο πελάτης MySQL και το κέλυφος SQLite περιμένουν συνήθως αυτόν τον χαρακτήρα πριν εκτελέσουν την εντολή. Στο psql μπορείτε επίσης να στείλετε το τρέχον ερώτημα με την εντολή \g. Αν εμφανιστεί προτροπή για επιπλέον κείμενο αντί για αποτέλεσμα, ελέγξτε αν έχετε ολοκληρώσει την εντολή.

Ερωτήματα SELECT και συνενώσεις (joins)

Η σύνταξη ερωτημάτων σημαίνει συχνά και πληκτρολόγηση συνενώσεων. Το PostgreSQL χρησιμοποιεί INNER JOIN, LEFT JOIN και RIGHT JOIN. Στο παρακάτω παράδειγμα, η συνθήκη συνένωσης ακολουθεί τη λέξη-κλειδί ON. Υπάρχουν επίσης συνενώσεις με USING ή NATURAL. Ένα λάθος διάστημα ή μια λάθος συνθήκη αρκεί για να αποτύχει το ερώτημα. Η εξάσκηση σε 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 υποστηρίζουν επίσης CTE. Ελέγξτε ότι κάθε ανοιχτή παρένθεση έχει την αντίστοιχη κλειστή παρένθεση.

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

Στις εφαρμογές, τα σύμβολα παραμέτρων εξαρτώνται τόσο από τη βάση δεδομένων όσο και από τον οδηγό σύνδεσης. Οι εγγενείς προετοιμασμένες εντολές PostgreSQL χρησιμοποιούν $1, $2, οι προετοιμασμένες εντολές MySQL και τα ερωτήματα SQLite μπορούν να χρησιμοποιούν ?, ενώ οι παράμετροι SQL Server έχουν ονόματα όπως @p1. Ο οδηγός μπορεί να απαιτεί διαφορετική σύνταξη, όπως %s στο Psycopg. Ελέγξτε την τεκμηρίωσή του, γιατί αυτά τα μικρά σύμβολα πληκτρολογούνται εύκολα λάθος.

-- PostgreSQL
SELECT * FROM users WHERE id = $1;

-- MySQL
SELECT * FROM users WHERE id = ?;

Σύνοψη

Σύμφωνα με τη σύμβαση, οι λέξεις-κλειδιά SQL γράφονται με κεφαλαία. Το PostgreSQL μετατρέπει σε πεζά τα αναγνωριστικά χωρίς διπλά εισαγωγικά· σε άλλα συστήματα οι κανόνες διαφέρουν. Το PostgreSQL χρησιμοποιεί διπλά εισαγωγικά για αναγνωριστικά, placeholders $n, CTE και συναρτήσεις παραθύρου. Το MySQL χρησιμοποιεί backticks και placeholders ?. Το SQL Server εισάγει αγκύλες και παραμέτρους @. Το SQLite έχει απλή σύνταξη, αλλά απαιτεί επίσης ακρίβεια. Η εξάσκηση σε SQL ερωτήματα ενισχύει την ακρίβεια με σημεία στίξης, λέξεις-κλειδιά και σύμβολα. Η εστίαση στο PostgreSQL δίνει εμπειρία με μια από τις πιο διαδεδομένες σύγχρονες βάσεις δεδομένων.

Επόμενο κείμενο
Επόμενο μάθημα
Εργασία Επιστροφή στη δοκιμή
sql
Διάγραμμα Απόκρυψη