Τα ερωτήματα SQL είναι το κρέας και οι πατάτες του RDBMS CRUD (δημιουργία, ανάγνωση, ενημέρωση, διαγραφή). Αλλά όταν η εφαρμογή σας ή η βάση δεδομένων της επιχείρησης μεγαλώνει, η ανάγκη για έξυπνα ερωτήματα για την ανάκτηση δεδομένων υπό όρους, ειδικά για τις απαιτήσεις γίνεται απαραίτητη.

Η SQL είναι σχετικά ολοκληρωμένη και περιλαμβάνει πολλές λειτουργίες—κάθε μία από τις οποίες είναι κατάλληλη για διάφορες επιχειρηματικές χρήσεις. Μια τέτοια λειτουργικότητα περιλαμβάνει τη χρήση υποερωτημάτων.

Για να κάνετε τους κώδικές σας αποτελεσματικούς και αποτελεσματικούς, μπορείτε να χρησιμοποιήσετε δευτερεύοντα ερωτήματα στους κώδικες SQL για να ανακτήσετε δεδομένα, να χειριστείτε υπάρχουσες μεταβλητές και να επιτύχετε πολλαπλούς στόχους με μία κίνηση.

Τι είναι τα δευτερεύοντα ερωτήματα SQL;

Ένα δευτερεύον ερώτημα είναι ένα ένθετο ερώτημα, το οποίο λειτουργεί ως παράμετρος σε ένα άλλο κύριο ερώτημα. Το δευτερεύον ερώτημα είναι ένα εσωτερική απορία, ενώ το κύριο ερώτημα είναι το εξωτερικό ερώτημα.

instagram viewer

Το υποερώτημα υποτίθεται ότι επιστρέφει τα δεδομένα ως όρισμα εντός παρένθεσης για το κύριο ερώτημα, ενώ το κύριο ερώτημα ανακτά περαιτέρω το τελικό αποτέλεσμα.

Τα δευτερεύοντα ερωτήματα είναι ενσωματωμένα στο Επιλέγω δήλωση ή στο Που ρήτρα. Μια τέτοια δομή επιτρέπει στο υποερώτημα να συμπεριφέρεται ως μια καλά περιγραφόμενη συνθήκη φιλτραρίσματος δεδομένων. Δυστυχώς, τα δευτερεύοντα ερωτήματα μπορούν να χρησιμοποιήσουν μόνο το Ομάδα κατά εντολές και όχι Ταξινόμηση κατά εντολές, καθώς αυτές επιτρέπονται μόνο στο κύριο ερώτημα.

Σχετίζεται με: Όλα όσα πρέπει να γνωρίζετε για τη δήλωση SQL GROUP BY

Συνήθως, κάθε υποερώτημα περιλαμβάνει μια στήλη με το Επιλέγω ρήτρα. Ωστόσο, υπάρχουν σενάρια όπου το κύριο ερώτημα έχει πολλές στήλες. Ένα δευτερεύον ερώτημα μπορεί να ενσωματωθεί σε ένα άλλο δευτερεύον ερώτημα, μετατρέποντάς το σε υποερώτημα ένθεσης.

Η αυστηροποίηση ενός δευτερεύοντος ερωτήματος είναι η εξής:

Επιλέξτε στήλη_όνομα από τον πίνακα όπου συνθήκη= 
(SELECT conditional_column FROM πίνακα) ως ψευδώνυμο.

Για παράδειγμα, ας υποθέσουμε ότι έχετε τον ακόλουθο πίνακα:

ταυτότητα Ονομα Το δεύτερο όνομα Η μεσιτική αμοιβή
1 Γιάννης Φυτίλι 5000
2 Ροβέρτος Γκράχαμ 4000
3 Στέφανος Χικς 8000
4 Βαρίδι Μάρλεϋ 1000
5 Μαρία Έλεν 9000

Σε αυτόν τον πίνακα, για να συγκεντρώσετε τα ονόματα των ατόμων που κερδίζουν πάνω από τη μέση αμοιβή αντιπροσωπείας, μπορείτε να γράψετε ένα δευτερεύον ερώτημα, αντί να γράψετε πολλές γραμμές κώδικα.

Σχετίζεται με: Πώς να δημιουργήσετε έναν πίνακα σε SQL

Δείτε πώς φαίνεται το ερώτημα:

Επιλέξτε * από το agent_details
όπου Agency_Fee > (επιλέξτε μέσο όρο (Agency_Fee) από agent_details);

Η εντολή πριν από το > το σημάδι είναι το εξωτερικό ερώτημα, ενώ, όλα μετά το > σημάδι είναι το εσωτερικό ερώτημα.

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

Πώς να χρησιμοποιήσετε τα δευτερεύοντα ερωτήματα στην SQL;

Υπάρχουν μερικοί διαφορετικοί τρόποι με τους οποίους μπορείτε να χρησιμοποιήσετε δευτερεύοντα ερωτήματα στην SQL.

Υποερωτήματα με ρήτρα Where

Μία από τις πιο βασικές δομές ενός δευτερεύοντος ερωτήματος στην SQL βρίσκεται εντός της ρήτρας Where. Είναι ο απλούστερος τρόπος για να ορίσετε τι ψάχνετε. Η πρόταση Select επιστρέφει τιμές σύμφωνα με τις συνθήκες του δευτερεύοντος ερωτήματος και τη χρησιμοποιεί ως παράμετρο για το κύριο ερώτημα.

Δομή ερωτήματος:

επιλέξτε * από το όνομα_του πίνακα
όπου στήλη_όνομα = (επιλέξτε το όνομα_στήλης από το όνομα_του πίνακα);

Ας το εξηγήσουμε αυτό με ένα παράδειγμα.

Ας υποθέσουμε ότι θέλετε να βρείτε τη δεύτερη υψηλότερη χρέωση πρακτορείου από τον πίνακα Agency_details. Για να γίνει αυτό, υπάρχουν εναλλακτικές συναρτήσεις εντός της SQL. Ωστόσο, η καλύτερη μέθοδος είναι να χρησιμοποιήσετε ένα δευτερεύον ερώτημα.

Δείτε πώς μπορείτε να ορίσετε το δευτερεύον ερώτημα:

επιλέξτε *, μέγ.
από agent_details
όπου Agency_fee < (επιλέξτε μέγ. (Agency_fee) από agent_details);

Η δήλωση που προκύπτει θα σας δείξει 8000, το οποίο είναι το δεύτερο υψηλότερο τέλος στον συγκεκριμένο πίνακα. Όταν εκτελείται το ερώτημα, το δευτερεύον ερώτημα υπολογίζει τη μέγιστη τιμή από τη λίστα χρέωσης. Το υψηλότερο ποσό αμοιβής (9000) αποθηκεύεται στη μνήμη.

Μόλις υπολογιστεί αυτό το τμήμα, υπολογίζεται το δεύτερο μέρος του ερωτήματος, το οποίο βρίσκει το δεύτερο υψηλότερο τέλος από τον πίνακα (από το < χρησιμοποιείται το σημάδι). Το τελικό αποτέλεσμα είναι 8000, που είναι το δεύτερο υψηλότερο τέλος στον πίνακα.

Υποερωτήματα εντός της ρήτρας Από

Μια άλλη παραλλαγή στα δευτερεύοντα ερωτήματα είναι η μετάδοση της συνθήκης στο από ρήτρα. Ως παρόμοια έννοια, το εσωτερικό ερώτημα επεξεργάζεται πρώτα και το εξωτερικό ερώτημα στη συνέχεια. Το εσωτερικό ερώτημα θα φιλτράρει τα δεδομένα και θα εμφανίζει αποτελέσματα όπου ID = 3.

Εδώ είναι το ερώτημα για αναφορά:

επιλέξτε ένα.* από (
επιλέξτε Agency_fee από agent_details
όπου ID= 3) ως α;

Αυτή είναι μια πολύ βασική δομή. Ωστόσο, όσο πιο πολύπλοκοι είναι οι πίνακες δεδομένων σας, θα λαμβάνετε περισσότερες σειρές δεδομένων που ταιριάζουν με τις συνθήκες σας.

Χρήση δευτερευόντων ερωτημάτων με Insert Into Statement

Εάν θέλετε να ενημερώσετε έναν υπάρχοντα πίνακα με ορισμένες νέες σειρές δεδομένων, μπορείτε να χρησιμοποιήσετε το Εισαγωγή σε δήλωση. Ένα δευτερεύον ερώτημα μπορεί να αποδειχθεί αρκετά ωφέλιμο, εάν θέλετε να προσθέσετε τιμές με βάση μια συγκεκριμένη συνθήκη.

Δομή ερωτήματος:

εισαγάγετε στο table_name 
επιλέξτε * από το όνομα_του πίνακα
όπου στήλη_όνομα = συνθήκες;
επιλέξτε * από το όνομα_του πίνακα.

Ακολουθεί ένα παράδειγμα για το πώς μπορείτε να χρησιμοποιήσετε το ένθετο σε δήλωση με το δευτερεύον ερώτημα:

εισαγάγετε στο agent_details
επιλέξτε * από το agent_details
όπου Agency_fee σε (1000, 5000);
επιλέξτε * από agent_details.

Μόλις εκτελεστεί το ερώτημα, οι τιμές που ταιριάζουν με τη συνθήκη θα εισαχθούν ξανά στον υπάρχοντα πίνακα. ο επιλέξτε * Η αναφορά συλλέγει όλες τις στήλες μαζί και τις εισάγει στον πίνακα agent_details ως έχει. ο σε Η δήλωση χρησιμοποιείται για τον καθορισμό πολλαπλών συνθηκών φίλτρου ταυτόχρονα.

Χρήση δευτερευόντων ερωτημάτων με δήλωση ενημέρωσης

Υπάρχουν περιπτώσεις στις οποίες θέλετε να ενημερώσετε τους υποκείμενους πίνακες κατά την εκτέλεση των ερωτημάτων. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το εκσυγχρονίζω δήλωση μαζί με τις εντολές ερωτήματος.

Έτσι θα γράψετε το δευτερεύον ερώτημα για να ενημερώσετε τις πληροφορίες στον πίνακα σε μία περίπτωση:

ενημέρωση table_name 
ορίστε όνομα_στήλης = νέα_τιμή
όπου στήλη_όνομα =
(επιλέξτε το όνομα_στήλης από το όνομα_του πίνακα όπου = );

Ακολουθεί ένα παράδειγμα που δείχνει τη χρήση της δήλωσης ενημέρωσης:

ΕΝΗΜΕΡΩΣΗ agent_details 
SET Agency_fee = 35000
ΠΟΥ πρακτορείο_τέλη =
(SELECT Agency_fee FROM agent_details WHERE First_name='John');
επιλέξτε * από agent_details.

Το δευτερεύον ερώτημα θα φιλτράρει στη στήλη Agency_fee και θα ξεχωρίσει τις σειρές όπου αντιστοιχεί το First_Name Γιάννης. Το εξωτερικό ερώτημα εκτελείται στη συνέχεια, όπου το τέλος αντιπροσωπείας ενημερώνεται σε 35000 για τον John Wick.

Μπορείτε να περάσετε ένα επιλέξτε * δήλωση για τον έλεγχο των τελικών αποτελεσμάτων· θα παρατηρήσετε ότι η προμήθεια αντιπροσωπείας για το John Wick έχει ενημερωθεί σε 35000, καθώς υπάρχει μόνο περίπτωση που ταιριάζει με τις προϋποθέσεις που ορίζονται στο ερώτημα.

Χρήση δευτερευόντων ερωτημάτων με δήλωση διαγραφής

Ακριβώς όπως η δήλωση ενημέρωσης, όπου ενημερώνετε τις σειρές δεδομένων σε έναν υπάρχοντα πίνακα, το διαγράφω Η δήλωση διαγράφει σειρές δεδομένων με βάση μια συνθήκη.

Η δομή της δήλωσης διαγραφής είναι:

διαγραφή από το όνομα_του πίνακα όπου μεταβλητή/όνομα στήλης = 
(επιλέξτε το όνομα_στήλης από το όνομα_του πίνακα όπου = συνθήκη);

Εδώ είναι ένα παράδειγμα:

Διαγραφή από agent_details 
όπου First_name IN
(επιλέξτε First_name από agent_details όπου Agency_fee = 9000);
επιλέξτε * από agent_details.

Χρήση δευτερευόντων ερωτημάτων εντός SQL

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

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

Το φύλλο εξαπάτησης των βασικών εντολών SQL για αρχάριους

Θέλετε να μάθετε περισσότερα για την SQL; Το να έχετε μια λαβή για τις διάφορες εντολές ερωτήματος SQL είναι ένας πολύ καλός τρόπος για να προχωρήσετε.

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Σχετικά θέματα
  • Προγραμματισμός
  • Προγραμματισμός
  • SQL
  • Εργαλεία Προγραμματισμού
Σχετικά με τον Συγγραφέα
Gaurav Siyal (Δημοσιεύτηκαν 35 άρθρα)

Ο Gaurav Siyal έχει δύο χρόνια συγγραφικής εμπειρίας, γράφοντας για μια σειρά από εταιρείες ψηφιακού μάρκετινγκ και έγγραφα κύκλου ζωής λογισμικού.

Περισσότερα από τον Gaurav Siyal

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε