Βασικές εντολές sql. Μηχανισμός πρόσβασης δεδομένων. SQL δομημένης γλώσσας ερωτήματος. Ιστορία και πρότυπα της SQL. Επεξεργασία εντολών SQL από τον διακομιστή Oracle. Αιτήματα αφαίρεσης
Οποιεσδήποτε εννοιολογικές πληροφορίες σχετικά με σχεσιακές βάσεις δεδομένων και πίνακες είναι χρήσιμες μόνο εάν γνωρίζετε πώς να αλληλεπιδράτε με τα δεδομένα. Η γλώσσα SQL αποτελείται από δομημένες εντολές για προσθήκη, τροποποίηση και διαγραφή δεδομένων από μια βάση δεδομένων. Αυτές οι εντολές αποτελούν τη βάση για την αλληλεπίδραση με τον διακομιστή PostgreSQL.
Αυτή η ενότητα αφορά την "ανατομία" των εντολών SQL. Εξετάζει τα δομικά συστατικά των εντολών, περιγράφοντας τις λειτουργίες κάθε στοιχείου και τις αμοιβαίες σχέσεις τους. Ο τυπικός πελάτης γραμμής εντολών PostgreSQL, psql, εκτυπώνει τα αποτελέσματα των εντολών στα παραδείγματα που δίνονται.
Τα περισσότερα από τα παραδείγματα εντολών SQL είναι συγκεκριμένα για τη βάση δεδομένων booktown. Όλη η έξοδος psql έχει πρόθεμα με τη μορφή booktown=# .
Ορισμένα παραδείγματα χρησιμοποιούν τη βάση δεδομένων δοκιμής testdb. Από προεπιλογή, η προτροπή psql εμφανίζει μόνο το όνομα της βάσης δεδομένων και τα σύμβολα =#, υποδεικνύοντας ότι το σύστημα είναι έτοιμο να εκδώσει μια νέα εντολή (αν και θα δείτε το σύμβολο = να αλλάζει δυναμικά καθώς παρακολουθείται η κατάσταση της εισόδου SQL). Το βιβλίο παρέχει αυτήν την προτροπή μαζί με την είσοδο και την έξοδο SQL για να σας βοηθήσει να νιώσετε άνετα με την έξοδο πελάτη psql.
Ο πελάτης psql περιγράφεται λεπτομερώς στο Κεφάλαιο 4. Αναφέρεται εδώ μόνο για να διευκρινιστεί το στυλ των παραδειγμάτων εντολών SQL.
Σημείωση
Το σχήμα της βάσης δεδομένων booktown (μαζί με τα παραδείγματα εγγραφών) βρίσκεται στο αρχείο booktown.sql στο CD. Για να εγκαταστήσετε αυτήν τη βάση δεδομένων, εισαγάγετε την εντολή psql - U postgres template! στη γραμμή εντολών. - f /mnt/cdrom/booktown.sql, όπου /mnt/cdrom είναι η διαδρομή προς το προσαρτημένο CD και το postgres είναι το όνομα υπερχρήστη PostgreSQL.
Οι εντολές SQL ξεκινούν πάντα με μια ενέργεια (ρήμα) - μια λέξη ή μια ομάδα λέξεων που περιγράφει τη λειτουργία που εκτελείται. Επιπλέον, μια εντολή SQL περιέχει συνήθως μία ή περισσότερες ενότητες που διευκρινίζουν τη σημασία της. Στον πίνακα 3.2 παραθέτει τις κύριες ενέργειες της SQL.
Πίνακας 3.2. Βασικές ενέργειες PostgreSQL.
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ | Δημιουργία νέας βάσης δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΕΥΡΕΤΗΡΙΟΥ | Δημιουργία νέου ευρετηρίου σε στήλη πίνακα |
ΔΗΜΙΟΥΡΓΗΣΤΕ ΑΚΟΛΟΥΘΙΑ | Δημιουργία νέας ακολουθίας σε υπάρχουσα βάση δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΟΥ | Δημιουργία νέου πίνακα σε υπάρχουσα βάση δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΣΚΑΝΔΙΣΤΗΣ | Δημιουργήστε έναν νέο ορισμό ενεργοποίησης |
ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ | Δημιουργήστε μια νέα προβολή για έναν υπάρχοντα πίνακα |
ΕΠΙΛΕΓΩ | Επιλογή εγγραφών από πίνακα |
ΕΙΣΑΓΕΤΕ | Εισαγωγή μιας ή περισσότερων νέων εγγραφών σε έναν πίνακα |
ΕΚΣΥΓΧΡΟΝΙΖΩ | Τροποποίηση δεδομένων σε υπάρχουσες εγγραφές |
ΔΙΑΓΡΑΦΩ | Αφαίρεση υπαρχουσών εγγραφών από έναν πίνακα |
ΑΠΟΣΤΟΛΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ | Καταστροφή υπάρχουσας βάσης δεδομένων |
ΔΕΙΚΤΗΣ ΠΤΩΣΗΣ | Αφαίρεση ευρετηρίου στήλης από υπάρχοντα πίνακα |
ΑΚΟΛΟΥΘΙΑ ΠΤΩΣΗΣ | Καταστροφή μιας υπάρχουσας γεννήτριας ακολουθιών |
ΠΡΩΤΟΤΡΑΠΕΖΙ | Καταστροφή υπάρχοντος πίνακα |
ΣΚΑΝΔΙΣΤΗΣ ΠΡΟΣΤΑΣΗΣ | Καταστροφή υπάρχοντος ορισμού ενεργοποίησης |
ΑΠΟΣΤΟΛΗ ΠΡΟΒΟΛΗ | Καταστροφή υπάρχουσας προβολής |
ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ | Δημιουργία νέου λογαριασμού χρήστη PostgreSQL στο σύστημα |
ΑΛΛΑΓΗ ΧΡΗΣΤΗ | Τροποποίηση υπάρχοντος λογαριασμού χρήστη PostgreSQL |
ΑΠΟΣΤΟΛΗ ΧΡΗΣΤΗ | Διαγραφή υπάρχοντος λογαριασμού χρήστη PostgreSQL |
ΧΟΡΗΓΗΣΗ | Εκχώρηση δικαιωμάτων πρόσβασης σε ένα αντικείμενο βάσης δεδομένων |
ΑΝΑΚΑΛΩ | Κατάργηση δικαιωμάτων πρόσβασης σε ένα αντικείμενο βάσης δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΛΕΙΤΟΥΡΓΙΑΣ | Δημιουργία νέας συνάρτησης SQL σε βάση δεδομένων |
ΔΗΜΙΟΥΡΓΗΣΤΕ ΓΛΩΣΣΑ | Δημιουργία νέου ορισμού γλώσσας στη βάση δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΧΕΙΡΙΣΤΗ | Δημιουργία νέας δήλωσης SQL στη βάση δεδομένων |
ΔΗΜΙΟΥΡΓΙΑ ΤΥΠΟΥ | Δημιουργία νέου τύπου δεδομένων SQL σε μια βάση δεδομένων |
Η Structured Query Language αναπτύχθηκε από την IBM στις αρχές της δεκαετίας του 1970. Το 1986, η SQL τυποποιήθηκε για πρώτη φορά από τους οργανισμούς ANSI.
Η SQL είναι μια ισχυρή και ταυτόχρονα απλή γλώσσα για τη διαχείριση βάσεων δεδομένων. Υποστηρίζεται σχεδόν από όλες τις σύγχρονες βάσεις δεδομένων. Η SQL χωρίζεται σε δύο υποσύνολα εντολών: DDL (Γλώσσα ορισμού δεδομένων) και DML (Γλώσσα χειρισμού δεδομένων). Οι εντολές DDL χρησιμοποιούνται για τη δημιουργία νέων βάσεων δεδομένων, πινάκων και στηλών και οι εντολές DML χρησιμοποιούνται για ανάγνωση, εγγραφή, ταξινόμηση, φιλτράρισμα, διαγραφή δεδομένων.
Αυτό το άρθρο θα ρίξει μια πιο προσεκτική ματιά στις εντολές DML, καθώς χρησιμοποιούνται πολύ πιο συχνά.
Εντολές DDLCREATE - χρησιμοποιείται για τη δημιουργία νέων πινάκων, στηλών και ευρετηρίων.
DROP - χρησιμοποιείται για την αφαίρεση στηλών και ευρετηρίων.
ALTER - χρησιμοποιείται για την προσθήκη νέων στηλών σε πίνακες και την αλλαγή συγκεκριμένων στηλών.
Εντολές DMLΗ SELECT είναι η πιο συχνά χρησιμοποιούμενη εντολή και χρησιμοποιείται για την ανάκτηση ενός συνόλου δεδομένων από έναν πίνακα βάσης δεδομένων. Η εντολή SELECT έχει την ακόλουθη σύνταξη:
ΕΠΙΛΕΓΩ field_list1ΑΠΟ όνομα_πίνακα ]
Οι τελεστές μέσα σε αγκύλες είναι προαιρετικοί και η κάθετη γραμμή σημαίνει ότι πρέπει να υπάρχει μία από τις καθορισμένες φράσεις, αλλά όχι και οι δύο.
Για παράδειγμα, ας δημιουργήσουμε ένα απλό ερώτημα για τη λήψη δεδομένων από τα πεδία "όνομα" και "τηλέφωνο" του πίνακα "φίλοι":
ΕΠΙΛΕΓΩ όνομα, τηλέφωνοΑΠΟ οι φιλοι
Εάν πρέπει να λάβετε όλα τα πεδία του πίνακα, τότε δεν είναι απαραίτητο να τα αναφέρετε, απλώς βάλτε έναν αστερίσκο (*):
ΕΠΙΛΕΓΩ * ΑΠΟ οι φιλοι
Για να εξαιρέσετε διπλότυπες καταχωρήσεις από την εμφανιζόμενη λίστα, χρησιμοποιήστε τη λέξη-κλειδί DISTINCT:
ΕΠΙΛΕΞΤΕ ΔΙΑΚΡΙΤΗ όνομαΑΠΟ οι φιλοι
Εάν χρειάζεται να λάβετε ξεχωριστή εγγραφή, τότε χρησιμοποιείται η ρήτρα WHERE. Για παράδειγμα, πρέπει να λάβουμε τον αριθμό τηλεφώνου του "Vasya Pupkin" από τον πίνακα "φίλοι":
ΕΠΙΛΕΓΩ * ΑΠΟ οι φιλοιΟΠΟΥ όνομα = "Βάσια Πούπκιν"
ή το αντίστροφο, πρέπει να μάθουμε σε ποιον ανήκει το τηλέφωνο 44-65-01:
ΕΠΙΛΕΓΩ * ΑΠΟ οι φιλοιΟΠΟΥ τηλέφωνο = "44-65-01"
Επιπλέον, μπορείτε να χρησιμοποιήσετε χαρακτήρες μπαλαντέρ, δημιουργώντας έτσι μοτίβα αναζήτησης. Ο τελεστής LIKE χρησιμοποιείται για αυτό. Ο τελεστής LIKE έχει τους ακόλουθους τελεστές αντικατάστασης:
* - ταιριάζει με μια συμβολοσειρά που αποτελείται από έναν ή περισσότερους χαρακτήρες.
Ταιριάζει με οποιονδήποτε χαρακτήρα.
Ταιριάζει με έναν χαρακτήρα από ένα συγκεκριμένο σύνολο.
Για παράδειγμα, για να ανακτήσετε εγγραφές από το πεδίο "όνομα" που περιέχει τη λέξη "Vasya", το αίτημα θα μοιάζει με αυτό:
ΕΠΙΛΟΓΗ * ΑΠΟ οι φιλοιΟΠΟΥ όνομαΑΡΕΣΕΙ "*Βάσια*"
Η ρήτρα ORDER BY χρησιμοποιείται για τον προσδιορισμό της σειράς με την οποία επιστρέφονται τα δεδομένα. Χωρίς αυτόν τον τελεστή, η σειρά των δεδομένων που επιστρέφονται δεν μπορεί να προβλεφθεί. Οι λέξεις-κλειδιά ASC και DESC σας επιτρέπουν να προσδιορίσετε την κατεύθυνση της ταξινόμησης. Το ASC ταξινομεί με αύξουσα σειρά και το DESC με φθίνουσα σειρά.
Για παράδειγμα, ένα αίτημα για λήψη μιας λίστας εγγραφών από το πεδίο "όνομα" με αλφαβητική σειρά θα μοιάζει με αυτό:
ΕΠΙΛΟΓΗ * ΑΠΟ οι φιλοιΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ όνομα
Σημειώστε ότι η λέξη-κλειδί ASC δεν απαιτείται επειδή είναι η προεπιλεγμένη.
INSERT - αυτή η εντολή χρησιμοποιείται για την προσθήκη μιας νέας εγγραφής στον πίνακα. Είναι γραμμένο ως εξής:
ΕΙΣΑΓΩΓΗ ΣΤΟ όνομα_πίνακαΑΞΙΕΣ ( λίστα_τιμών)
Λάβετε υπόψη ότι οι τύποι τιμών στη λίστα τιμών πρέπει να ταιριάζουν με τους τύπους τιμών των πεδίων του πίνακα, για παράδειγμα:
ΕΙΣΑΓΩΓΗ ΣΤΟ οι φιλοιΑΞΙΕΣ ( "Άνκα ο πολυβολητής", "32-09-81" )
Αυτό το παράδειγμα προσθέτει μια νέα καταχώρηση στον πίνακα φίλων με τις καθορισμένες τιμές.
UPDATE - Αυτή η εντολή χρησιμοποιείται για την ενημέρωση δεδομένων σε έναν πίνακα και χρησιμοποιείται συχνότερα σε συνδυασμό με τον όρο WHERE. Η εντολή UPDATE έχει την ακόλουθη σύνταξη:
ΕΚΣΥΓΧΡΟΝΙΖΩ όνομα_πίνακαΣΕΙΡΑ όνομα πεδίου = έννοια
Εάν παραλείψετε τον όρο WHERE, τα δεδομένα σε όλα τα καθορισμένα πεδία στον πίνακα θα ενημερωθούν. Για παράδειγμα, ας αλλάξουμε τον αριθμό τηλεφώνου της Vasya Pupkun:
ΕΚΣΥΓΧΡΟΝΙΖΩ οι φιλοιΣΕΙΡΑ τηλέφωνο = "55-55-55" ΟΠΟΥ όνομα = "Βάσια Πούπκιν"
ΔΙΑΓΡΑΦΗ - όπως πιθανότατα έχετε ήδη καταλάβει, αυτή η εντολή χρησιμοποιείται για τη διαγραφή εγγραφών από τον πίνακα. Όπως και η ΕΝΗΜΕΡΩΣΗ, η εντολή DELETE χρησιμοποιείται συνήθως με μια ρήτρα WHERE. Εάν αυτή η ρήτρα παραλειφθεί, όλα τα δεδομένα από τον καθορισμένο πίνακα θα διαγραφούν. Η σύνταξη της εντολής DELETE είναι η εξής:
ΔΙΑΓΡΑΦΗ ΑΠΟ όνομα_πίνακα
Για παράδειγμα, ας αφαιρέσουμε αυτόν τον ενοχλητικό Vasya Pupkin από το τραπέζι μας :) :
ΔΙΑΓΡΑΦΗ ΑΠΟ οι φιλοιΟΠΟΥ όνομα = "Βάσια Πούπκιν"
Το τέλοςΣε αυτό το άρθρο μίλησα για τους κύριους τελεστές SQL, είναι αρκετά επαρκείς για εργασία με βάσεις δεδομένων· θα μιλήσω για τους υπόλοιπους τελεστές με περισσότερες λεπτομέρειες κάποια άλλη φορά.
Η SQL ή Structured Query Language είναι μια γλώσσα που χρησιμοποιείται για τη διαχείριση δεδομένων σε ένα σύστημα σχεσιακής βάσης δεδομένων (RDBMS). Αυτό το άρθρο θα καλύψει τις κοινώς χρησιμοποιούμενες εντολές SQL τις οποίες θα πρέπει να γνωρίζει κάθε προγραμματιστής. Αυτό το υλικό είναι ιδανικό για όσους θέλουν να βελτιώσουν τις γνώσεις τους για την SQL πριν από μια συνέντευξη για δουλειά. Για να το κάνετε αυτό, δείτε τα παραδείγματα που δίνονται στο άρθρο και θυμηθείτε ότι μελετήσατε τις βάσεις δεδομένων σε ζευγάρια.
Σημειώστε ότι ορισμένα συστήματα βάσεων δεδομένων απαιτούν ένα ερωτηματικό στο τέλος κάθε δήλωσης. Το ερωτηματικό είναι ο τυπικός δείκτης στο τέλος κάθε πρότασης στην SQL. Τα παραδείγματα χρησιμοποιούν MySQL, επομένως απαιτείται ένα ερωτηματικό.
Δημιουργία βάσης δεδομένων για παραδείγματαΔημιουργήστε μια βάση δεδομένων για να δείξετε πώς λειτουργούν οι ομάδες. Για να εργαστείτε, θα χρειαστεί να κάνετε λήψη δύο αρχείων: DLL.sql και InsertStatements.sql. Μετά από αυτό, ανοίξτε ένα τερματικό και συνδεθείτε στην κονσόλα MySQL χρησιμοποιώντας την ακόλουθη εντολή (το άρθρο υποθέτει ότι η MySQL είναι ήδη εγκατεστημένη στο σύστημα):
Mysql -u root -p
Στη συνέχεια εισάγετε τον κωδικό πρόσβασής σας.
Εκτελέστε την ακόλουθη εντολή. Ας ονομάσουμε τη βάση δεδομένων «πανεπιστήμιο»:
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ πανεπιστήμιο. USE πανεπιστήμιο; ΠΗΓΗ; SOURCE Εντολές για εργασία με βάσεις δεδομένων1. Προβολή διαθέσιμων βάσεων δεδομένων ΕΜΦΑΝΙΣΗ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ. 2. Δημιουργία νέας βάσης δεδομένων CREATE DATABASE. 3. Επιλογή βάσης δεδομένων για χρήση ΧΡΗΣΗ. 4. Εισαγάγετε εντολές SQL από το αρχείο .sql SOURCE ; 5. Κατάργηση της βάσης δεδομένων DROP DATABASE ; Εργασία με πίνακες6. Δείτε τους διαθέσιμους πίνακες στη βάση δεδομένων SHOW TABLES.
7. Δημιουργία νέου πίνακα CREATE TABLE ( , , PRIMARY KEY (), FOREIGN KEY () REFERENCES ()); Περιορισμοί ακεραιότητας κατά τη χρήση του CREATE TABLEΊσως χρειαστεί να δημιουργήσετε περιορισμούς σε ορισμένες στήλες σε έναν πίνακα. Κατά τη δημιουργία ενός πίνακα, μπορείτε να ορίσετε τους ακόλουθους περιορισμούς:
- ένα κελί πίνακα δεν μπορεί να έχει τιμή NULL.
- πρωτεύον κλειδί - PRIMARY KEY (col_name1, col_name2, ...) ;
- ξένο κλειδί - ΞΕΝΟ ΚΛΕΙΔΙ (col_namex1, …, col_namexn) ΑΝΑΦΟΡΕΣ όνομα_πίνακα(col_namex1, …, col_namexn) .
Μπορείτε να καθορίσετε περισσότερα από ένα πρωτεύοντα κλειδιά. Σε αυτήν την περίπτωση, θα λάβετε ένα σύνθετο πρωτεύον κλειδί.
ΠαράδειγμαΔημιουργήστε έναν πίνακα "instructor":
Εκπαιδευτής CREATE TABLE (ID CHAR(5), όνομα VARCHAR(20) NOT NULL, dept_name VARCHAR(20), μισθός NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCES Department(dept_name));
8. Πληροφορίες πίνακαΜπορείτε να προβάλετε διάφορες πληροφορίες (τύπος τιμής, κλειδί ή όχι) σχετικά με τις στήλες του πίνακα με την ακόλουθη εντολή:
ΠΕΡΙΓΡΑΦΕΙ ;
9. Προσθήκη δεδομένων στον πίνακα INSERT INTO (, , , …) VALUES (, , , …);Όταν προσθέτετε δεδομένα σε κάθε στήλη σε έναν πίνακα, δεν χρειάζεται να καθορίσετε ονόματα στηλών.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΤΙΜΕΣ (, , , ...);
10. Ενημέρωση δεδομένων πίνακα UPDATE SET = , = , ... WHERE ; 11. Διαγραφή όλων των δεδομένων από τον πίνακα DELETE FROM ; 12. Αφαίρεση τραπεζιού DOP TABLE ; Εντολές για τη δημιουργία ερωτημάτων 13. ΕΠΙΛΕΓΩΤο SELECT χρησιμοποιείται για την ανάκτηση δεδομένων από έναν συγκεκριμένο πίνακα:
ΕΠΙΛΟΓΗ , , ... ΑΠΟ ;
Η ακόλουθη εντολή μπορεί να εμφανίσει όλα τα δεδομένα από τον πίνακα:
ΕΠΙΛΟΓΗ * ΑΠΟ ;
14. ΕΠΙΛΕΞΤΕ DISTINCTΟι στήλες του πίνακα ενδέχεται να περιέχουν διπλά δεδομένα. Χρησιμοποιήστε το SELECT DISTINCT για να ανακτήσετε μόνο μη διπλότυπα δεδομένα.
SELECT DISTINCT , , … FROM ;
15. ΠΟΥΜπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί WHERE στο SELECT για να καθορίσετε συνθήκες σε ένα ερώτημα:
ΕΠΙΛΕΞΤΕ , , ... ΑΠΟ ΠΟΥ ;
Οι ακόλουθες προϋποθέσεις μπορούν να καθοριστούν στο αίτημα:
- Σύγκριση κειμένου.
- Σύγκριση αριθμητικών τιμών.
- λογικοί τελεστές ΚΑΙ (και), Ή (ή) και ΟΧΙ (άρνηση).
Δοκιμάστε τις παρακάτω εντολές. Δώστε προσοχή στις προϋποθέσεις που καθορίζονται στο ΠΟΥ:
ΕΠΙΛΕΞΤΕ * ΑΠΟ μάθημα WHERE dept_name='Συν. Sci.'; ΕΠΙΛΕΞΤΕ * ΑΠΟ μάθημα WHERE μονάδες>3; SELECT * FROM course WHERE dept_name="Comp. Sci." ΚΑΙ μόρια>3;
16. ΟΜΑΔΑ ΑΠΟΟ τελεστής GROUP BY χρησιμοποιείται συχνά με αθροιστικές συναρτήσεις όπως COUNT, MAX, MIN, SUM και AVG για την ομαδοποίηση των τιμών εξόδου.
ΕΠΙΛΟΓΗ , , … ΑΠΟ ΟΜΑΔΑ ΚΑΤΑ ;
ΠαράδειγμαΑς εμφανίσουμε τον αριθμό των μαθημάτων για κάθε σχολή:
ΕΠΙΛΕΞΤΕ COUNT(αναγνωριστικό_μαθήματος), όνομα_τμήματος ΑΠΟ ΟΜΑΔΑ μαθήματος ΑΝΑ όνομα_τμήματος.
17. ΕΧΟΝΤΑΣΗ λέξη-κλειδί HAVING προστέθηκε στην SQL επειδή το WHERE δεν μπορεί να χρησιμοποιηθεί με συγκεντρωτικές συναρτήσεις.
ΕΠΙΛΕΞΤΕ , , ... ΑΠΟ ΟΜΑΔΑ ΕΧΟΝΤΑΣ
ΠαράδειγμαΑς εμφανίσουμε μια λίστα με σχολές που έχουν περισσότερα από ένα μαθήματα:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;
18. ΠΑΡΑΓΓΕΛΙΑ ΑΠΟORDER BY χρησιμοποιείται για την ταξινόμηση των αποτελεσμάτων των ερωτημάτων σε φθίνουσα ή αύξουσα σειρά. Το ORDER BY θα ταξινομηθεί με αύξουσα σειρά, εκτός εάν έχει καθοριστεί ASC ή DESC.
ΕΠΙΛΟΓΗ , , … ΑΠΟ ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ , , … ASC|DESC;
ΠαράδειγμαΑς εμφανίσουμε μια λίστα μαθημάτων με αύξουσα και φθίνουσα σειρά μονάδων:
ΕΠΙΛΟΓΗ * ΑΠΟ ΜΑΘΗΜΑ ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ πιστωτικές μονάδες. ΕΠΙΛΟΓΗ * ΑΠΟ ΤΑΞΗ μαθημάτων ΚΑΤΑ μόρια DESC;
19. ΜΕΤΑΞΥBETWEEN χρησιμοποιείται για την επιλογή τιμών δεδομένων από ένα συγκεκριμένο εύρος. Μπορούν να χρησιμοποιηθούν αριθμητικές τιμές και τιμές κειμένου, καθώς και ημερομηνίες.
ΕΠΙΛΕΞΤΕ , , … ΑΠΟ ΠΟΥ ΜΕΤΑΞΥ ΚΑΙ ;
ΠαράδειγμαΑς εμφανίσουμε μια λίστα με εκπαιδευτές των οποίων ο μισθός είναι μεγαλύτερος από 50.000, αλλά μικρότερος από 100.000:
ΕΠΙΛΕΞΤΕ * ΑΠΟ τον εκπαιδευτή ΟΠΟΥ μισθός Μεταξύ 50000 ΚΑΙ 100000.
20. LIKEΟ τελεστής LIKE χρησιμοποιείται στο WHERE για να καθορίσει ένα μοτίβο αναζήτησης για παρόμοια τιμή.
Υπάρχουν δύο δωρεάν χειριστές που χρησιμοποιούνται στο LIKE:
- % (κανένας, ένας ή περισσότεροι χαρακτήρες).
- _ (ένας χαρακτήρας).
Ας εμφανίσουμε μια λίστα μαθημάτων των οποίων τα ονόματα περιέχουν "to" και μια λίστα μαθημάτων των οποίων τα ονόματα αρχίζουν με "CS-":
ΕΠΙΛΟΓΗ * ΑΠΟ ΤΟ ΜΑΘΗΜΑ ΟΠΟΥ τίτλος LIKE '%to%'; SELECT * FROM course WHERE course_id LIKE "CS-___";
21. ΕΙΣΧρησιμοποιώντας το IN μπορείτε να καθορίσετε πολλαπλές τιμές για τον όρο WHERE:
ΕΠΙΛΟΓΗ , , … ΑΠΟ ΠΟΥ ΜΕΣΑ (, , …);
ΠαράδειγμαΑς εμφανίσουμε μια λίστα φοιτητών από ειδικότητες Comp. Επιστήμη, Φυσική και Ηλεκτρ. Eng.:
SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
22. ΕΓΓΡΑΦΕΙΤΕΤο JOIN χρησιμοποιείται για τη σύνδεση δύο ή περισσότερων πινάκων χρησιμοποιώντας κοινά χαρακτηριστικά μέσα σε αυτούς. Η παρακάτω εικόνα δείχνει τους διαφορετικούς τρόπους συμμετοχής στην SQL. Σημειώστε τη διαφορά μεταξύ μιας αριστερής εξωτερικής ένωσης και μιας δεξιάς εξωτερικής ένωσης:
ΕΠΙΛΟΓΗ , , … ΑΠΟ ΣΥΜΜΕΤΟΧΗ = ;
Παράδειγμα 1Θα εμφανίσουμε μια λίστα με όλα τα μαθήματα και τις σχετικές πληροφορίες για τις σχολές:
ΕΠΙΛΟΓΗ * ΑΠΟ ΜΑΘΗΜΑ ΕΓΓΡΑΦΕΙΤΕ στο τμήμα ON course.dept_name=department.dept_name;
Παράδειγμα 2Θα εμφανίσουμε μια λίστα με όλα τα απαιτούμενα μαθήματα και λεπτομέρειες σχετικά με αυτά:
SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN μαθήματος ON prereq.course_id=course.course_id;
Παράδειγμα 3Θα εμφανίσουμε μια λίστα με όλα τα μαθήματα, ανεξάρτητα από το αν απαιτούνται ή όχι:
SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN μάθημα ON prereq.course_id=course.course_id;
23. ΠροβολήΤο View είναι ένας εικονικός πίνακας SQL που δημιουργήθηκε ως αποτέλεσμα της εκτέλεσης μιας έκφρασης. Περιέχει γραμμές και στήλες και μοιάζει πολύ με έναν κανονικό πίνακα SQL. Η προβολή εμφανίζει πάντα τις πιο πρόσφατες πληροφορίες από τη βάση δεδομένων.
Δημιουργία CREATE VIEW AS SELECT , , ... FROM WHERE ; Αφαίρεση DROP VIEW ; ΠαράδειγμαΑς δημιουργήσουμε μια προβολή που αποτελείται από μαθήματα με 3 μονάδες:
24. Αθροιστικές συναρτήσειςΑυτές οι συναρτήσεις χρησιμοποιούνται για τη λήψη ενός συγκεντρωτικού αποτελέσματος που σχετίζεται με τα εν λόγω δεδομένα. Οι παρακάτω είναι συνήθως χρησιμοποιούμενες συναρτήσεις συγκεντρωτικών στοιχείων:
- COUNT (col_name) - επιστρέφει τον αριθμό των σειρών.
- SUM (col_name) - επιστρέφει το άθροισμα των τιμών σε αυτήν τη στήλη.
- AVG (col_name) - επιστρέφει τη μέση τιμή μιας δεδομένης στήλης.
- MIN (col_name) - επιστρέφει τη μικρότερη τιμή μιας δεδομένης στήλης.
- MAX (col_name) - Επιστρέφει τη μεγαλύτερη τιμή μιας δεδομένης στήλης.
Τα ένθετα υποερωτήματα είναι ερωτήματα SQL που περιλαμβάνουν προτάσεις SELECT , FROM και WHERE που είναι ένθετες σε άλλο ερώτημα.
ΠαράδειγμαΑς βρούμε μαθήματα που διδάχθηκαν το φθινόπωρο του 2009 και την άνοιξη του 2010:
SELECT DISTINCT course_id FROM section WHERE semester = 'Fall' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE semester = 'Spring' AND year= 2010);
Kirill Pozdeev, μεταφραστής
Πώς η Yandex χρησιμοποιεί τα δεδομένα σας και τη μηχανική εκμάθηση για την εξατομίκευση των υπηρεσιών -.
Η SQL (ˈɛsˈkjuˈɛl; Αγγλική δομημένη γλώσσα ερωτημάτων - «δομημένη γλώσσα ερωτήματος») είναι μια δηλωτική γλώσσα προγραμματισμού που χρησιμοποιείται για τη δημιουργία, τροποποίηση και διαχείριση δεδομένων σε μια σχεσιακή βάση δεδομένων.
Συμμόρφωση με τα πρότυπα SQL για διαφορετικές βάσεις δεδομένων:
SQL (Structured Query Language - δομημένη γλώσσα ερωτημάτων). Η SQL είναι κυρίως μια λογική γλώσσα πληροφοριών που έχει σχεδιαστεί για να περιγράφει αποθηκευμένα δεδομένα, να ανακτά αποθηκευμένα δεδομένα και να τροποποιεί δεδομένα.
Η SQL δεν είναι γλώσσα προγραμματισμού. Καθώς η SQL έχει γίνει πιο περίπλοκη, έχει γίνει περισσότερο μια γλώσσα προγραμματισμού εφαρμογών και οι χρήστες μπορούν πλέον να χρησιμοποιούν οπτικά προγράμματα δημιουργίας ερωτημάτων.
Η SQL είναι μια γλώσσα χωρίς διάκριση πεζών-κεφαλαίων. Οι συμβολοσειρές στην SQL περικλείονται σε μονά εισαγωγικά.
Η γλώσσα SQL είναι μια συλλογή από δηλώσεις. Οι δηλώσεις SQL χωρίζονται σε:
Data Definition Language (DDL) - η γλώσσα περιγραφής σχήματος στο ANSI, αποτελείται από εντολές που δημιουργούν αντικείμενα (πίνακες, ευρετήρια, προβολές κ.λπ.) στη βάση δεδομένων (CREATE, DROP, ALTER κ.λπ.).
Οι τελεστές χειρισμού δεδομένων (Γλώσσα χειρισμού δεδομένων, DML) είναι ένα σύνολο εντολών που καθορίζουν ποιες τιμές παρουσιάζονται σε πίνακες ανά πάσα στιγμή (INSERT, DELETE, SELECT, UPDATE, κ.λπ.).
Δηλώσεις ορισμού πρόσβασης δεδομένων (Γλώσσα ελέγχου δεδομένων, DCL) - αποτελείται από εργαλεία που καθορίζουν εάν θα επιτρέψουν στον χρήστη να εκτελέσει ορισμένες ενέργειες ή όχι (ΠΑΡΑΧΩΡΗΣΗ/ΑΝΑΚΛΗΣΗ, ΚΛΕΙΔΩΜΑ/ΞΕΚΛΕΙΔΩΜΑ).
Χειριστές Transaction Control Language (TCL).
Δυστυχώς, αυτοί οι όροι δεν χρησιμοποιούνται καθολικά σε όλες τις υλοποιήσεις. Υπογραμμίζονται από το ANSI και είναι χρήσιμα σε εννοιολογικό επίπεδο, αλλά τα περισσότερα προγράμματα SQL κάνουν ελάχιστα για να τα αντιμετωπίσουν ξεχωριστά, επομένως γίνονται ουσιαστικά λειτουργικές κατηγορίες εντολών SQL.
ΕΠΙΛΟΓΗ ενότητας ΕΓΓΡΑΦΗSimple JOIN (=διασταύρωση JOIN =INNER JOIN) - σημαίνει ότι εμφανίζονται μόνο οι κοινές εγγραφές και των δύο πινάκων. Ο τρόπος με τον οποίο οι εγγραφές θεωρούνται κοινόχρηστες καθορίζεται από τα πεδία στην έκφραση ένωσης. Για παράδειγμα, η ακόλουθη καταχώρηση: FROM t1 JOIN t2 ON t1. id = t2. ταυτότητα
σημαίνει ότι θα εμφανίζονται εγγραφές με το ίδιο αναγνωριστικό που υπάρχουν και στους δύο πίνακες.
LEFT JOIN (ή LEFT OUTER JOIN) σημαίνει εμφάνιση όλων των εγγραφών από τον αριστερό πίνακα (αυτή που έρχεται πρώτη στην παράσταση ένωσης) ανεξάρτητα από το αν υπάρχουν αντίστοιχες εγγραφές στον δεξιό πίνακα. Εάν δεν υπάρχουν εγγραφές στον δεξιό πίνακα, ορίζεται η κενή τιμή NULL.
Η ΔΕΞΙΑ ΣΥΝΔΕΣΗ (ή η ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ) δρα σε αντίθεση με την ΑΡΙΣΤΕΡΗ ΣΥΝΔΕΣΗ - εμφανίζει όλες τις εγγραφές από τον δεξιό (δεύτερο) πίνακα και μόνο εκείνες που ταιριάζουν από τον αριστερό (πρώτο) πίνακα.
Άλλοι τύποι ενώσεων JOIN: ΜΕΙΟΝ - αφαίρεση. FULL JOIN - πλήρης συμμετοχή. CROSS JOIN - «Όλοι με όλους» ή η λειτουργία καρτεσιανού προϊόντος.
INSERT IGNORE Εάν καθορίσετε τη λέξη-κλειδί IGNORE σε μια εντολή INSERT με σειρές που έχουν πολλαπλές τιμές, τότε τυχόν σειρές που έχουν διπλότυπα ΚΥΡΙΑ ή ΜΟΝΑΔΙΚΑ κλειδιά σε αυτόν τον πίνακα θα αγνοηθούν και δεν θα εισαχθούν. Εάν δεν καθορίσετε IGNORE, αυτή η λειτουργία εισαγωγής ματαιώνεται όταν συναντήσει μια σειρά που έχει διπλότυπη τιμή για ένα υπάρχον κλειδί
Η εντολή REPLACE διαφέρει από την INSERT μόνο στο ότι εάν υπάρχει μια εγγραφή στον πίνακα με την ίδια τιμή στο πεδίο με ευρετήριο (μοναδικό ευρετήριο) με τη νέα εγγραφή, τότε η παλιά εγγραφή διαγράφεται πριν προστεθεί η νέα.
ΕΚΣΥΓΧΡΟΝΙΖΩ< tablename>ΣΕΤ ( | ) .,. .< COLUMN name> = < VALUE expresslon>[ΟΠΟΥ< predlcate>| ΟΠΟΥ ΤΡΕΧΟΝ ΤΗΣ< cursor name>(*μόνο για συνημμένο*) ] ; ΕΝΗΜΕΡΩΣΗ ομότιμων SET zone= "voip" ; # ενημερώστε όλες τις σειρές στη στήλη ζώνης του πίνακα ομότιμων ΕΝΗΜΕΡΩΣΗ ΣΥΝΟΛΟΥ stats whp= "13x13x13" WHERE id = 1 ; ΕΝΗΜΕΡΩΣΗ χωρών SET nm_ukr= ( SELECT del_countries. ουκρανικά FROM del_countries WHERE χώρες. nm_en= del_countries. αγγλικά ) ;Χρήση WordPress, ρύθμιση: στον πίνακα wp_posts, διαγράψτε όλες τις εμφανίσεις της σειράς
ΕΝΗΜΕΡΩΣΗ wp_posts SET post_content = REPLACE (post_content, "" , "" ) ;ΔΙΑΓΡΑΦΗ ΑΠΟ