ΥπολογιστέςΤύπους αρχείων

SQL διακριτές: περιγραφή, τα παραδείγματα, ιδιότητες

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

Πριν προχωρήσουμε να εξετάσουμε τα συγκεκριμένα παραδείγματα, να δημιουργήσει τη βάση δεδομένων απαιτείται μια-δυο πίνακες.

πίνακας προετοιμασία

Φανταστείτε ότι έχουμε ένα αποθηκεύει πληροφορίες της βάσης δεδομένων για την ταπετσαρία παρουσιάζονται σε δύο πίνακες. Αυτό Oboi τραπέζι (ταπετσαρία) με πεδία id (μοναδικό αναγνωριστικό), του τύπου (τύπος της ταπετσαρίας -. Χαρτί, βινύλιο, κλπ), χρώμα (χρώμα), ένα struct (δομή) και η τιμή (τιμή). Και πίνακα Ostatki (υπολείμματα) με πεδία id_oboi (αναφορά στο μοναδικό αναγνωριστικό του πίνακα Oboi) και μέτρηση (ο αριθμός των κυλίνδρων σε απόθεμα).

Συμπληρώστε τον πίνακα δεδομένων. Στον πίνακα προσθέστε την ταπετσαρία 9 εγγραφές:

Oboi

ταυτότητα

τύπος

χρώμα

struct

τιμή

1

χαρτί

πολύχρωμα

ανάγλυφο

56,9

2

Χαρτί δύο στρωμάτων

μπεζ

λείος

114,8

3

βινύλιο

πορτοκάλι

ανάγλυφο

504

4

προβιά

μπεζ

ανάγλυφο

1020.9

5

Χαρτί δύο στρωμάτων

μπεζ

λείος

150,6

6

χαρτί

πολύχρωμα

λείος

95,4

7

βινύλιο

καφέ

λείος

372

8

προβιά

λευκό

ανάγλυφο

980.1

9

ύφασμα

ροζ

λείος

1166.5

Ο πίνακας με τα λείψανα - και εννέα βιβλία:

Ostatki

id_oboi

υπολογίζω

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Θα προχωρήσουμε στην περιγραφή της ξεχωριστή σειρά με την SQL.

Τοποθετήστε διακριτή στον όρο select

διακριτή επιχείρημα αυτό πρέπει να τοποθετούνται αμέσως μετά την Επιλογή λέξεων-κλειδιών στα ερωτήματα. Θα εφαρμοστεί σε όλες τις στήλες που ορίζονται στην πρόταση Επιλογή, γιατί θα πρέπει να εξαιρεθούν από το τελικό αποτέλεσμα του ερωτήματος είναι απολύτως όμοια χορδές. Έτσι, από τη στιγμή είναι αρκετή για να καθορίσετε κατά τη σύνταξη SQL «επιλέξτε ξεχωριστή» αίτημα. Η εξαίρεση είναι η χρήση διαφορετικών εσωτερικό λειτουργιών μέγεθος που δούμε λίγο αργότερα.

Θα πρέπει να υπενθυμίσουμε ότι το μεγαλύτερο μέρος της βάσης δεδομένων και δεν αναγνωρίζει τον τύπο του αιτήματος:

SELECT distinct Ostatki.Count, ξεχωριστή Oboi. *

ΑΠΟ Oboi

INNER JOIN Ostatki ΓΙΑ Oboi.id = Ostatki.id_oboi

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

Εφαρμογή διακριτά ερωτήματα στο πρότυπο

Είναι προφανές ότι με την κατάλληλη πίνακες δομή του κτιρίου και τη συμπλήρωσή τους σε ένα ενιαίο πίνακα αποκλείεται η κατάσταση, όταν δεν υπάρχει καμία απολύτως όμοιες χορδές. Ως εκ τούτου, η εκτέλεση του ερωτήματος «Επιλέξτε διακριτές *» με ένα δείγμα από ένα τραπέζι είναι ανέφικτη.

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

SELECT Oboi.type

ΑΠΟ προκειμένου Oboi ανά τύπο

Και να πάρει τα αποτελέσματα:

τύπος

χαρτί

χαρτί

Χαρτί δύο στρωμάτων

Χαρτί δύο στρωμάτων

βινύλιο

βινύλιο

ύφασμα

προβιά

προβιά

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

SELECT distinct Oboi.type

ΑΠΟ προκειμένου Oboi ανά τύπο

παίρνουμε το αποτέλεσμα χωρίς επανάληψη:

τύπος

χαρτί

Χαρτί δύο στρωμάτων

βινύλιο

ύφασμα

προβιά

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

Εφαρμογή διακριτές συναρτήσεις συγκεντρωτικών αποτελεσμάτων κατά

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

Ας υποθέσουμε ότι θέλουμε να ελέγξουμε την ικανότητα της αποθήκης μας και να στείλετε το αίτημα αυτό, υπολογίζει το συνολικό αριθμό των σπειρών σε απόθεμα:

SELECT SUM (Ostatki.count)

ΑΠΟ Ostatki

Αίτημα θα δώσει την απάντηση 143. Αν, όμως, θα αλλάξει σε:

SELECT SUM (διακριτές Ostatki.count)

ΑΠΟ Ostatki

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

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

SELECT count (διακριτές Oboi.type)

ΑΠΟ Oboi

Και να πάρει το αποτέλεσμα των 5 - απλό χαρτί και διπλής στρώσης βινυλίου και μη-υφαντό ύφασμα. Σίγουρα όλοι δει τις διαφημίσεις όπως: «Μόνο εμείς έχουμε πάνω από 20 διαφορετικά είδη ταπετσαρίας,» με το οποίο εννοείται ότι αυτό το κατάστημα δεν είναι μόνο ένα ζευγάρι δεκάδες ρόλους και μια ποικιλία της ταπετσαρίας σύγχρονων τύπων.

Είναι ενδιαφέρον ότι το ίδιο ερώτημα, μπορείτε να καθορίσετε πολλαπλές λειτουργίες, όπως Καταμέτρηση αποδίδουν DISTINCT, και χωρίς αυτό. Αυτή είναι η μόνη περίπτωση κατά την οποία διακρίνεται σε Select'e μπορεί να υπάρχει πολλές φορές.

Πότε να εγκαταλείψουν τη χρήση του επιχειρήματος

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

  1. Μπορείτε να εκτελέσετε μια ποικιλία από πίνακες και είναι σίγουροι για την μοναδική αξία η κάθε μία. Σε αυτή την περίπτωση, η χρήση του επιχειρήματος είναι ακατάλληλη, διότι είναι ένα πρόσθετο φορτίο στο διακομιστή ή πελάτη (ανάλογα με τον τύπο του DBMS).
  2. Φοβάστε να χάσει τα δεδομένα σας. Ας εξηγήσουμε.

Ας υποθέσουμε ότι το αφεντικό σας ζητά να απαριθμήσει την ταπετσαρία που έχετε, με την ένδειξη μόνο δύο στήλες - τον τύπο και το χρώμα. Από συνήθεια, να σας δώσω ένα επιχείρημα διακριτές:

SELECT distinct Oboi.type, Oboi.color

ΑΠΟ Oboi

ORDER BY Oboi.type

Και - χάσετε κάποια δεδομένα:

τύπος

χρώμα

χαρτί

πολύχρωμα

Χαρτί δύο στρωμάτων

μπεζ

βινύλιο

καφέ

βινύλιο

πορτοκάλι

ύφασμα

ροζ

προβιά

μπεζ

προβιά

λευκό

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

τύπος

χρώμα

χαρτί

πολύχρωμα

χαρτί

πολύχρωμα

Χαρτί δύο στρωμάτων

μπεζ

Χαρτί δύο στρωμάτων

μπεζ

βινύλιο

καφέ

βινύλιο

πορτοκάλι

ύφασμα

ροζ

προβιά

λευκό

προβιά

μπεζ

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

εναλλακτικές διακριτές

Σε αντίθεση με το επιχείρημα ξεχωριστή - All επιχείρημα. Με την προσφυγή της είναι διπλότυπες σειρές αποθηκεύονται. Αλλά, όπως την προεπιλεγμένη βάση δεδομένων και θεωρεί ότι είναι απαραίτητο για να εμφανίσετε όλες τις τιμές, το επιχείρημα All - είναι μάλλον ένα προσδιοριστικό από το πραγματικό επιχείρημα λειτουργία. Ελπίζουμε ότι τώρα καταλαβαίνω ότι διακριτή (SQL) χρησιμοποιείται. Περιγραφή σας δώσει όλες τις πληροφορίες σχετικά με τη σκοπιμότητα της χρήσης αυτής επιχείρημα για την επίλυση διαφόρων προβλημάτων. Μετά από όλα, όπως αποδείχθηκε, ακόμα και ένα τέτοιο απλό επιχείρημα με το δικόγραφο της κρύβει πολύ απτή πιθανότητα να χάσει κάποια δεδομένα και να εμφανίσει ανακριβείς πληροφορίες.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.birmiss.com. Theme powered by WordPress.