Middle+
Πώς θα σχεδίαζες ένα ερώτημα SQL στη βάση δεδομένων χωρίς να χρησιμοποιήσεις ORM;
sobes.tech AI
Απάντηση από AI
Για την ανάκτηση δεδομένων από τον πίνακα users, όπου το πεδίο is_active είναι true και το role είναι 'admin':
SELECT id, username, email
FROM users
WHERE is_active = TRUE AND role = 'admin';
Για την εισαγωγή μιας νέας εγγραφής στον πίνακα products:
INSERT INTO products (name, price, category_id)
VALUES ('New Product', 19.99, 10);
Για την ενημέρωση μιας εγγραφής στον πίνακα orders, ορίζοντας την κατάσταση σε 'shipped' για την παραγγελία με id = 100:
UPDATE orders
SET status = 'shipped'
WHERE id = 100;
Για τη διαγραφή μιας εγγραφής από τον πίνακα comments βάσει id:
DELETE FROM comments
WHERE id = 500;
Για μια βασική ένωση των πινάκων users και orders βάσει user_id:
SELECT u.username, o.order_date, o.total_amount
FROM users AS u
JOIN orders AS o ON u.id = o.user_id;
Κατά το σχεδιασμό, είναι σημαντικό να λαμβάνονται υπόψη:
- Ασφάλεια: Χρησιμοποιήστε παραμετροποιημένα ερωτήματα για την αποτροπή SQL injection.
- Απόδοση: Βελτιστοποιήστε τα ερωτήματα χρησιμοποιώντας δείκτες, αποφεύγοντας το
SELECT *και ελέγξτε τα σχέδια εκτέλεσης. - Αναγνωσιμότητα: Μορφοποιήστε τα ερωτήματα, χρησιμοποιήστε ψευδώνυμα για πίνακες και πεδία.
- Δοκιμές: Ελέγξτε τα ερωτήματα σε διαφορετικά σενάρια και όγκους δεδομένων.
Παραδείγματα παραμετροποιημένων ερωτημάτων (εννοιολογικά, η υλοποίηση εξαρτάται από τη γλώσσα και τον οδηγό):
// Παράδειγμα για ανάκτηση χρήστη βάσει ID
SELECT id, username FROM users WHERE id = ?;