Η SQL (δομημένη γλώσσα ερωτήματος) είναι μια τυποποιημένη γλώσσα για τον ορισμό και τον χειρισμό δεδομένων σε μια σχεσιακή βάση δεδομένων. Σύμφωνα με το σχεσιακό μοντέλο δεδομένων, η βάση δεδομένων γίνεται αντιληπτή ως ένα σύνολο πινάκων, οι σχέσεις είναι που αντιπροσωπεύονται από τιμές σε πίνακες και τα δεδομένα ανακτώνται καθορίζοντας έναν πίνακα αποτελεσμάτων που μπορεί να εξαχθεί από ένα ή περισσότερα πίνακες βάσης. Τα ερωτήματα έχουν τη μορφή μιας γλώσσας εντολών που σας επιτρέπει επιλογή, εισαγωγή, ενημέρωση, εύρεση από τη θέση των δεδομένων και ούτω καθεξής.
Στους Δελφούς: TQuery
Εάν πρόκειται να χρησιμοποιήσετε SQL στις εφαρμογές σας, θα είστε πολύ εξοικειωμένοι με το TQuery συστατικό. Ο Delphi δίνει τη δυνατότητα στις εφαρμογές σας να χρησιμοποιούν σύνταξη SQL απευθείας μέσω της συνιστώσας TQuery για την πρόσβαση σε δεδομένα από τους πίνακες Paradox και dBase (χρησιμοποιώντας το τοπικό SQL - υποσύνολο του πρότυπου SQL του ANSI), βάσεις δεδομένων στον τοπικό διακομιστή InterBase και βάσεις δεδομένων σε απομακρυσμένη βάση δεδομένων διακομιστές.
Ο Delphi υποστηρίζει επίσης ετερογενή ερωτήματα σε σχέση με περισσότερους από έναν τύπους διακομιστών ή τραπεζιού (για παράδειγμα, δεδομένα από έναν πίνακα Oracle και έναν πίνακα Paradox). Το TQuery έχει μια ιδιότητα που ονομάζεται SQL, το οποίο χρησιμοποιείται για την αποθήκευση της δήλωσης SQL.
Το TQuery ενσωματώνει μία ή περισσότερες εντολές SQL, τις εκτελεί και παρέχει μεθόδους με τις οποίες μπορούμε να χειριστούμε τα αποτελέσματα. Τα ερωτήματα μπορούν να χωριστούν σε δύο κατηγορίες: αυτά που παράγουν σειρές αποτελεσμάτων (όπως π.χ. ΕΠΙΛΕΓΩ δήλωση), και εκείνες που δεν (όπως ένα ΕΚΣΥΓΧΡΟΝΙΖΩή ΕΙΣΑΓΕΤΕ δήλωση). Χρησιμοποιήστε το TQuery. Ανοίξτε για να εκτελέσετε ένα ερώτημα που παράγει ένα σύνολο αποτελεσμάτων. χρησιμοποιήστε το TQuery. ExecSQL για την εκτέλεση ερωτημάτων που δεν παράγουν σύνολα αποτελεσμάτων.
Οι δηλώσεις SQL μπορούν να είναι είτε στατικός ή δυναμικός, δηλαδή μπορούν να οριστούν σε χρόνο σχεδιασμού ή να περιλαμβάνουν παραμέτρους (TQuery. Params) που διαφέρουν στο χρόνο εκτέλεσης. Η χρήση παραμετροποιημένων ερωτημάτων είναι πολύ ευέλικτη, επειδή μπορείτε να αλλάξετε την προβολή ενός χρήστη και την πρόσβαση σε δεδομένα κατά τη διάρκεια της εκτέλεσης.
Όλες οι εκτελέσιμες δηλώσεις SQL πρέπει να προετοιμαστούν για να μπορέσουν να εκτελεστούν. Το αποτέλεσμα της προετοιμασίας είναι η εκτελέσιμη ή λειτουργική μορφή της δήλωσης. Η μέθοδος προετοιμασίας μιας εντολής SQL και η εμμονή της επιχειρησιακής της φόρμας διακρίνουν τη στατική SQL από τη δυναμική SQL. Κατά το σχεδιασμό, ένα ερώτημα προετοιμάζεται και εκτελείται αυτόματα όταν ορίσετε το ερώτηση της ενεργής ιδιότητας του στοιχείου σε True. Κατά το χρόνο εκτέλεσης, προετοιμάζεται ένα ερώτημα με μια κλήση για την προετοιμασία και εκτέλεση όταν η εφαρμογή καλεί τις μεθόδους Open ή ExecSQL του στοιχείου.
Ένα TQuery μπορεί να επιστρέψει δύο είδη συνόλων αποτελεσμάτων: "ζω"όπως συμβαίνει με το στοιχείο TTable (οι χρήστες μπορούν να επεξεργαστούν δεδομένα με στοιχεία ελέγχου δεδομένων και όταν μια κλήση στο Post εμφανίζει αλλαγές στη βάση δεδομένων),"μόνο για ανάγνωση"μόνο για λόγους προβολής. Για να ζητήσετε ένα σετ ζωντανών αποτελεσμάτων, ορίστε την ιδιότητα RequestLive της συνιστώσας του ερωτήματος στην True και γνωρίστε ότι η εντολή SQL πρέπει να πληροί κάποιες συγκεκριμένες απαιτήσεις (όχι ORDER BY, SUM, AVG κ.λπ.)
Ένα ερώτημα συμπεριφέρεται με πολλούς τρόπους σαν ένα φίλτρο πίνακα και κατά κάποιο τρόπο ένα ερώτημα είναι ακόμα πιο ισχυρό από ένα φίλτρο, επειδή σας επιτρέπει να έχετε πρόσβαση:
- περισσότερα από ένα τραπέζια κάθε φορά ("join" σε SQL)
- ένα συγκεκριμένο υποσύνολο γραμμών και στηλών από τους υποκείμενους πίνακες, αντί να επιστρέφει πάντα όλα αυτά
Απλό παράδειγμα
Τώρα ας δούμε κάποια SQL σε δράση. Αν και μπορούμε να χρησιμοποιήσουμε τον Οδηγό φόρμας βάσης δεδομένων για να δημιουργήσουμε κάποια παραδείγματα SQL για αυτό το παράδειγμα, θα το κάνουμε με το χέρι, βήμα προς βήμα:
1. Τοποθετήστε ένα στοιχείο TQuery, TDataSource, TDBGrid, TEdit και ένα στοιχείο TButton στην κύρια φόρμα.
2. Ορίστε την ιδιότητα DataSet του στοιχείου TDataSource στο Query1.
3. Ορίστε την ιδιότητα DataSource του στοιχείου TDBGrid στο DataSource1.
4. Ορίστε την ιδιότητα DatabaseName του στοιχείου TQuery στο DBDEMOS.
5. Κάντε διπλό κλικ στην ιδιότητα SQL ενός TQuery για να εκχωρήσετε τη δήλωση SQL σε αυτήν.
6. Για να κάνετε τα δεδομένα εμφάνισης του πλέγματος κατά την προγραμματισμένη ώρα, αλλάξτε την ενεργή ιδιότητα της συνιστώσας TQuery σε True.
Το πλέγμα εμφανίζει δεδομένα από τον πίνακα Employee.db σε τρεις στήλες (FirstName, LastName, Salary) ακόμα και αν Το Employee.db έχει 7 πεδία και το σύνολο αποτελεσμάτων περιορίζεται σε εκείνα τα αρχεία όπου ξεκινάει το FirstName με 'R'.
7. Τώρα, αντιστοιχίστε τον ακόλουθο κώδικα στο συμβάν OnClick του Button1.
διαδικασία TForm1.Button1Κλικ (αποστολέας: TObject); ξεκινήσει Query1.Close;{κλείστε το ερώτημα}// αντιστοιχίσετε μια νέα έκφραση SQL Query1.SQL.Clear; Query1.SQL.Add ('Επιλογή EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Μισθός>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {ανοιχτό ερώτημα + εμφάνιση δεδομένων}τέλος;
8. Εκτελέστε την αίτησή σας. Όταν κάνετε κλικ στο κουμπί (εφ 'όσον η Επεξεργασία 1 έχει μια έγκυρη τιμή νομίσματος σε αυτήν), το πλέγμα θα εμφανίσει το Τα πεδία EmpNo, FirstName και LastName για όλα τα αρχεία όπου ο μισθός είναι μεγαλύτερος από το καθορισμένο νόμισμα αξία.
Σε αυτό το παράδειγμα δημιουργήσαμε μια απλή εντολή στατικής SQL με ζωντανό σύνολο αποτελεσμάτων (δεν έχουμε αλλάξει κανένα από τα εμφανιζόμενα αρχεία) μόνο για σκοπούς προβολής.