Αυτή η "τσαγιέρα" είναι αφιερωμένη σε είτε MySQL για αρχάριους. Βασικά στοιχεία των αιτήσεων SQL

  • Φροντιστήριο

Ποιο είναι το βιβλίο

Αυτό το εγχειρίδιο είναι κάτι σαν μια "σφραγίδα της μνήμης μου" στο SQL (DDL, DML), δηλ. Αυτές είναι οι πληροφορίες που έχουν συσσωρευτεί κατά τη διάρκεια της επαγγελματικής δραστηριότητας και αποθηκεύεται συνεχώς στο κεφάλι μου. Αυτό είναι ένα επαρκές ελάχιστο για μένα, το οποίο χρησιμοποιείται όταν δουλεύει συχνότερα με βάσεις δεδομένων. Εάν είναι απαραίτητο να εφαρμόσετε περισσότερα πλήρη σχέδια SQL, τότε συνήθως απευθύνομαι στη βιβλιοθήκη MSDN που βρίσκεται στο διαδίκτυο. Κατά τη γνώμη μου, είναι πολύ δύσκολο να κρατήσετε τα πάντα στο κεφάλι μου, και δεν υπάρχει ιδιαίτερη ανάγκη γι 'αυτό. Αλλά γνωρίζοντας τα βασικά σχέδια είναι πολύ χρήσιμη, γιατί Εφαρμόζουν εσωτερικά με την ίδια μορφή σε πολλές σχεσιακές βάσεις δεδομένων, όπως η Oracle, MySQL, Firebird. Οι διαφορές αποτελούνται κυρίως από τύπους δεδομένων που ενδέχεται να διαφέρουν λεπτομερώς. Τα κύρια σχέδια της γλώσσας SQL δεν είναι τόσο πολύ, και με συνεχή πρακτική, θυμούνται γρήγορα. Για παράδειγμα, για να δημιουργήσετε αντικείμενα (πίνακες, περιορισμοί, ευρετήρια κ.λπ.) είναι αρκετή για να έχετε στο χέρι επεξεργαστής κειμένου Περιβάλλοντα (IDE) για να συνεργαστείτε με τη βάση δεδομένων και δεν υπάρχει λόγος να μελετήσετε το οπτικό εργαλείο ακονίστε για να εργαστείτε με έναν συγκεκριμένο τύπο βάσης δεδομένων (MS SQL, Oracle, MySQL, Firebird, ...). Είναι βολικό και το γεγονός ότι όλο το κείμενο βρίσκεται μπροστά στα μάτια και δεν χρειάζεται να τρέχετε σε πολλές καρτέλες για να δημιουργήσετε, για παράδειγμα, έναν δείκτη ή έναν περιορισμό. Εάν συνεργάζεστε συνεχώς με τη βάση δεδομένων, δημιουργήστε, αλλάξτε και ειδικά επαναφέρετε το αντικείμενο με τη βοήθεια των σεναρίων είναι μερικές φορές πιο γρήγορα από ό, τι εάν κάνετε σε οπτική λειτουργία. Επίσης στη λειτουργία Scripting (ανάλογα με τη δέουσα ακρίβεια), είναι ευκολότερο να ορίσετε και να ελέγξετε τους κανόνες για το όνομα των αντικειμένων (υποκειμενική γνώμη μου). Επιπλέον, τα σενάρια χρησιμοποιούνται εύκολα στην περίπτωση που οι αλλαγές που πραγματοποιούνται σε μία βάση δεδομένων (για παράδειγμα, δοκιμή) πρέπει να μεταφερθούν με την ίδια μορφή σε άλλη βάση (παραγωγική).

Η γλώσσα SQL χωρίζεται σε πολλά μέρη, εδώ θα εξετάσω 2 πιο σημαντικά μέρη:
  • DML - Γλώσσα χειρισμού δεδομένων (γλώσσα χειρισμού δεδομένων), η οποία περιέχει τις ακόλουθες κατασκευές:
    • Επιλέξτε - Δειγματοληψία δεδομένων
    • Εισαγωγή - Τοποθετήστε νέα δεδομένα
    • Ενημέρωση - Ενημέρωση δεδομένων
    • Διαγραφή - Διαγραφή δεδομένων
    • Συγχώνευση - Συγχώνευση δεδομένων
Επειδή Είμαι επαγγελματίας πώς η θεωρία αυτή σε αυτό το εγχειρίδιο θα είναι λίγο και όλα τα σχέδια θα εξηγηθούν σε πρακτικά παραδείγματα. Επιπλέον, πιστεύω ότι η γλώσσα προγραμματισμού, και ιδιαίτερα η SQL, μπορεί να κατακτηθεί μόνο στην πράξη, να ψεκάζει τον εαυτό σας και να συνειδητοποιήσει τι συμβαίνει όταν εκτελείτε αυτό ή αυτό το σχέδιο.

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

Κατά τη σύνταξη αυτού του εγχειριδίου, χρησιμοποιήθηκε η βάση δεδομένων MS SQL Server Version 2014, χρησιμοποίησα το Studio Management Server Server (SSMS) για να εκτελέσει τα σενάρια.

Σύντομα για το Studio Management Server MS SQL (SSMS)

SQL Server Management Studio (SSMS) - ένα βοηθητικό πρόγραμμα για το Microsoft SQL Server να διαμορφώνει, να διαχειρίζεται και να χορηγεί τα συστατικά της βάσης δεδομένων. Αυτό το βοηθητικό πρόγραμμα περιέχει τον επεξεργαστή σεναρίων (το οποίο θα χρησιμοποιηθεί ως επί το πλείστον) και ένα γραφικό πρόγραμμα που λειτουργεί με αντικείμενα και ρυθμίσεις διακομιστή. Το κύριο εργαλείο Studio Management Server Server είναι το Object Explorer, το οποίο επιτρέπει στον χρήστη να βλέπει, να εξαγάγει αντικείμενα διακομιστή, καθώς και να τις διαχειρίζεται. Το κείμενο αυτό δανείζεται εν μέρει από τη Wikipedia.

Για να δημιουργήσετε ένα νέο πρόγραμμα επεξεργασίας σεναρίου, χρησιμοποιήστε το πλήκτρο "Νέο ερώτημα / νέο αίτημα":

Για να αλλάξετε την τρέχουσα βάση δεδομένων, μπορείτε να χρησιμοποιήσετε την αναπτυσσόμενη λίστα:

Για να εκτελέσετε μια συγκεκριμένη εντολή (ή ομάδα εντολών), επιλέξτε το και πατήστε το πλήκτρο Execute / Run ή το πλήκτρο "F5". Εάν μια εντολή μόνο μία εντολή βρίσκεται στον επεξεργαστή ή πρέπει να εκπληρώσετε όλες τις εντολές, δεν χρειάζεται να διαθέσετε τίποτα.

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

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

Λίγο θεωρία

Η σχεσιακή βάση δεδομένων (RBD ή περαιτέρω στο πλαίσιο της απλής βάσης δεδομένων) είναι ένα σύνολο πινάκων που σχετίζονται μεταξύ τους. Αν λέμε rudely, η βάση δεδομένων είναι ένα αρχείο στο οποίο τα δεδομένα αποθηκεύονται σε δομημένη μορφή.

DBMS - Σύστημα ελέγχου αυτών των βάσεων δεδομένων, δηλ. Πρόκειται για ένα σύνολο εργαλείων για εργασία με συγκεκριμένο τύπο βάσης δεδομένων (MS SQL, Oracle, MySQL, Firebird, ...).

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

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

Ο πίνακας είναι το κύριο αντικείμενο RBD, όλα τα δεδομένα RBD αποθηκεύονται στη στήλη του πίνακα. Γραμμές, τα αρχεία είναι επίσης συνώνυμα.

Για κάθε τραπέζι, καθώς και οι στήλες του λαμβάνουν τα ονόματα για τα οποία στη συνέχεια τους πηγαίνουν.
Όνομα αντικειμένου (όνομα πίνακα, όνομα στήλης, όνομα δείκτη κλπ.) Στο MS SQL μπορεί να έχει μέγιστο μήκος 128 χαρακτήρων.

Για αναφορά - Τα ονόματα βάσεων δεδομένων Oracle ενδέχεται να έχουν το μέγιστο μήκος 30 χαρακτήρων. Επομένως, για μια συγκεκριμένη βάση δεδομένων, πρέπει να αναπτύξετε τους κανόνες σας για το όνομα των αντικειμένων για να ικανοποιήσετε το όριο από τον αριθμό των χαρακτήρων.

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

DDL και DML - υποσύνολο της γλώσσας SQL:

  • Η γλώσσα DDL χρησιμοποιείται για τη δημιουργία και τροποποίηση της δομής της βάσης δεδομένων, δηλ. Για να δημιουργήσετε / αλλάξετε / διαγράψετε πίνακες και συνδέσεις.
  • Η γλώσσα DML επιτρέπει χειρισμούς με δεδομένα δεδομένων, δηλ. Με τις σειρές της. Σας επιτρέπει να κάνετε ένα δείγμα δεδομένων από τους πίνακες, να προσθέσετε νέα δεδομένα στον πίνακα, καθώς και να ενημερώσετε και να διαγράψετε τα υπάρχοντα δεδομένα.

Στο SQL, μπορείτε να χρησιμοποιήσετε 2 τύπους σχολίων (μονής γραμμής και πολλαπλών γραμμών):

Σχόλιο μονής γραμμής
και

/ * Σχόλιο πολλαπλών γραμμών * /

Στην πραγματικότητα, όλα για τη θεωρία αυτού θα είναι αρκετή.

DDL - Γλώσσα ορισμός δεδομένων (Περιγραφή δεδομένων Γλώσσα)

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

Σε αυτή την περίπτωση, οι στήλες του πίνακα έχουν τα ακόλουθα ονόματα: Αριθμός TABEL, πλήρες όνομα, ημερομηνία γέννησης, e-mail, θέση, τμήμα.

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

  • Αριθμός TABEL - Ανώτατος
  • Πλήρες όνομα - συμβολοσειρά
  • Ημερομηνία γέννησης - Ημερομηνία
  • E-mail - συμβολοσειρά
  • Θέση - συμβολοσειρά
  • Τμήμα - String
Ο τύπος της στήλης είναι ένα χαρακτηριστικό που μιλάει για το είδος των δεδομένων μπορεί να αποθηκεύσει αυτή τη στήλη.

Για να ξεκινήσετε, θα είναι αρκετό να θυμάστε μόνο τους ακόλουθους κύριους τύπους δεδομένων που χρησιμοποιούνται στο MS SQL:

αξία MS SQL Ονομασία Περιγραφή
Σειρά μεταβλητού μήκους varchar (n)
και
Nvarchar (n)
Χρησιμοποιώντας n αριθμό n, μπορούμε να καθορίσουμε το μέγιστο δυνατό μήκος συμβολοσειράς για την αντίστοιχη στήλη. Για παράδειγμα, αν θέλουμε να πούμε ότι η τιμή της στήλης "πλήρους ονόματος" μπορεί να περιέχει μέγιστο αριθμό 30 χαρακτήρων, τότε είναι απαραίτητο να ορίσετε τον τύπο NVARCHAR (30).
Η διαφορά μεταξύ του VARCHAR από το NVARCHAR βρίσκεται στο γεγονός ότι ο Varchar σάς επιτρέπει να αποθηκεύετε σειρές σε μορφή ASCII, όπου ένας χαρακτήρας διαρκεί 1 byte, και οι αποθήκες NVARCHAR αποθηκεύουν χορδές σε μορφή Unicode, όπου κάθε χαρακτήρας διαρκεί 2 bytes.
Ο τύπος VARCHAR θα πρέπει να χρησιμοποιείται μόνο αν είστε 100% σίγουροι ότι αυτό το πεδίο δεν χρειάζεται να αποθηκεύει χαρακτήρες Unicode. Για παράδειγμα, ο Varchar μπορεί να χρησιμοποιηθεί για την αποθήκευση διευθύνσεων ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗεπειδή Συνήθως περιέχουν μόνο χαρακτήρες ASCII.
Σταθερό μήκος char (n)
και
Nchar (n)
Από τη συμβολοσειρά μεταβλητού μήκους, αυτός ο τύπος χαρακτηρίζεται από το ότι εάν το μήκος της γραμμής είναι μικρότερο από n χαρακτήρες, είναι πάντα συμπληρωμένο στο δικαίωμα στα κενά του n και παραμένει στη βάση δεδομένων σε αυτή τη μορφή, δηλ. Στη βάση δεδομένων, καταλαμβάνει ακριβώς τους χαρακτήρες (όπου ένας χαρακτήρας διαρκεί 1 byte για char και 2 bytes για τον τύπο NAR). Στην πρακτική μου, αυτός ο τύπος χρησιμοποιείται πολύ σπάνια, και αν χρησιμοποιηθεί, χρησιμοποιείται κυρίως σε μορφή char (1), δηλ. Όταν το πεδίο καθορίζεται από έναν χαρακτήρα.
Ακέραιος αριθμός int. Αυτός ο τύπος μας επιτρέπει να χρησιμοποιούμε μόνο ακέραιους αριθμούς στη στήλη, τόσο θετικές όσο και αρνητικές. Για αναφορά (τώρα δεν είναι τόσο σημαντικό για εμάς) - το φάσμα των αριθμών που επιτρέπει τον τύπο int από -2 147 483 648 έως 2 147 483 647. Αυτός είναι συνήθως ο κύριος τύπος που χρησιμοποιείται για τον προσδιορισμό αναγνωριστικών.
Πραγματική ή έγκυρη φλοτέρ. Αν μιλάμε Απλή γλώσσαΑυτός είναι ο αριθμός στους οποίους μπορεί να υπάρχει ένα δεκαδικό σημείο (κόμμα).
ημερομηνία Ημερομηνία. Εάν η στήλη πρέπει να αποθηκευτεί μόνο την ημερομηνία, η οποία αποτελείται από τρία στοιχεία: αριθμούς, μήνα και έτος. Για παράδειγμα, 02/15/2014 (15 Φεβρουαρίου 2014). Αυτός ο τύπος μπορεί να χρησιμοποιηθεί για τη στήλη "Ημερομηνία λήψης", "Ημερομηνία γέννησης", κ.λπ., δηλ. Σε περιπτώσεις όπου είναι σημαντικό να διορθώσουμε μόνο την ημερομηνία, ή όταν ο συντακτικός χρόνος δεν είναι σημαντικός για εμάς και μπορεί να απορριφθεί ή αν δεν είναι γνωστό.
χρόνος Χρόνος. Αυτός ο τύπος μπορεί να χρησιμοποιηθεί εάν η στήλη πρέπει να αποθηκεύσει μόνο χρονικά δεδομένα, δηλ. Παρακολουθήστε, λεπτά, δευτερόλεπτα και χιλιοστά του δευτερολέπτου. Για παράδειγμα, 17: 38: 31.3231603
Για παράδειγμα, καθημερινή "ώρα αναχώρησης πτήσης".
ημερομηνία και ώρα Ημερομηνία ώρα. Αυτός ο τύπος σάς επιτρέπει να αποθηκεύετε ταυτόχρονα τόσο την ημερομηνία και την ώρα. Για παράδειγμα, 02/15/2014 17: 38: 31.323
Για παράδειγμα, αυτό μπορεί να είναι η ημερομηνία και η ώρα κάποιου γεγονότος.
Σημαία Κομμάτι. Αυτός ο τύπος είναι βολικός να ισχύει για την αποθήκευση των τιμών του τύπου "ναι" / "όχι", όπου "ναι" θα αποθηκευτεί ως 1, αλλά όχι "θα αποθηκευτεί ως 0.

Η ίδια τιμή πεδίου, αν δεν απαγορευθεί, ενδέχεται να μην προσδιοριστεί, χρησιμοποιείται για το σκοπό αυτό τη μηδενική λέξη-κλειδί.

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

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

Δημιουργία δοκιμής βάσης δεδομένων
Μπορείτε να καταργήσετε τη βάση δεδομένων με την εντολή (αξίζει να είστε πολύ προσεκτικοί με αυτήν την εντολή):

Δοκιμή βάσης δεδομένων πτώσης.
Για να μεταβείτε στη βάση δεδομένων μας, μπορείτε να εκτελέσετε την εντολή:

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

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

Δημιουργία πίνακα [υπάλληλοι] ([Tabel Number] Int, [Name] NVARCHAR (30), [ημερομηνία γέννησης] Ημερομηνία, NVARCHAR (30), [Θέση] NVARCHAR (30), [Τμήμα] NVARCHAR (30))
Σε αυτή την περίπτωση, θα πρέπει να συνάψουμε ονόματα σε αγκύλες [...].

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

Σε μια σημείωση
Σε ορισμένους DBMs, η ακόλουθη μορφή ονόματος "Phone_Number" μπορεί να είναι προτιμότερη, για παράδειγμα, μια τέτοια μορφή χρησιμοποιείται συχνά στη βάση δεδομένων Oracle. Φυσικά, όταν καθορίζετε το όνομα του πεδίου, είναι επιθυμητό να μην συμπίπτει με τις λέξεις-κλειδιά που χρησιμοποιούνται στο DBMS.

Για το λόγο αυτό, μπορείτε να ξεχάσετε τη σύνταξη με τετράγωνα αγκύλες και να διαγράψετε τον πίνακα [εργαζόμενοι]:

Πίνακας πτώσης [εργαζόμενοι]
Για παράδειγμα, ένας πίνακας με υπαλλήλους μπορεί να ονομάζεται "εργαζόμενοι" και τα πεδία του μπορούν να τεθούν τα ακόλουθα ονόματα:

  • ID - Αριθμός TABEL (Αναγνωριστικό εργαζομένων)
  • Όνομα - Πλήρες όνομα
  • Γενέθλια - ημερομηνία γέννησης
  • Email - e-mail
  • Θέση - Θέση
  • Τμήμα - Τμήμα
Πολύ συχνά, το αναγνωριστικό λέξης χρησιμοποιείται για να ονομάσει το πεδίο του αναγνωριστικού.

Τώρα ας δημιουργήσουμε το τραπέζι μας:

Δημιουργία υπαλλήλων πίνακα (ID INT, Όνομα NVARCHAR (30), Ημερομηνία γενεθλίων, Email NVarchar (30), Θέση NVARCHAR (30), Τμήμα NVARCHAR (30))
Για να ρυθμίσετε τις απαιτούμενες στήλες για να γεμίσετε, μπορείτε να χρησιμοποιήσετε τη μη μηδενική επιλογή.

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

Αναγνωριστικό πεδίου Under Alter Table Υπάλληλοι Αλλαγή ταυτότητας στήλης int Δεν null - Ενημέρωση Όνομα Alter Table Οι εργαζόμενοι μεταβάλλουν το όνομα στήλης NVARCHAR (30)

Σε μια σημείωση
Η συνολική έννοια της γλώσσας SQL για τα περισσότερα DBMS παραμένει η ίδια (τουλάχιστον γι 'αυτό, μπορώ να κρίνω τα DBM που συνέβαλα να συνεργαστούμε). Η διαφορά DDL σε διαφορετικά DBMS συμπεραίνεται κυρίως σε τύπους δεδομένων (ενδέχεται να υπάρχουν μόνο τα ονόματά τους, αλλά και τα μέρη της εφαρμογής τους), την ιδιαιτερότητα της γλώσσας SQL (δηλαδή, η ουσία των ομάδων μπορεί να διαφέρει ελαφρά. Αλλά Μπορεί να υπάρχουν μικρές διαφορές στη διάλεκτο, δυστυχώς, αλλά δεν υπάρχει κανένα πρότυπο). Που κατέχουν τα βασικά στοιχεία του SQL που μπορείτε εύκολα να μετακινηθείτε από ένα DBM σε άλλο, επειδή Σε αυτή την περίπτωση, θα πρέπει να υπολογίσετε μόνο τις λεπτομέρειες της εφαρμογής των εντολών στο νέο DBM, δηλ. Στις περισσότερες περιπτώσεις, θα είναι αρκετό να πραγματοποιηθεί απλώς μια αναλογία.

Δημιουργία ενός πίνακα "Δημιουργία" πίνακα υπαλλήλων (ID INT - σε Oracle Τύπος Int - Αυτό είναι το ισοδύναμο (περιτύλιγμα) για τον αριθμό (περιτύλιγμα) για τον αριθμό (38) όνομα NVARCHCHAR2 (30), - NVARCHCHAR2 στο Oracle ισοδύναμο με το NVARCHAR στην ημερομηνία MS SQL Birthday, Email NVARCHCHCHAR2 (30 ), Θέση nvarchar2 (30), τμήμα nvarchar2 (30)). - Ενημέρωση των πεδίων ταυτότητας και ονόματος (εδώ αντί για τη μεταβολή της στήλης χρησιμοποιεί τη τροποποίηση (...)) αλλάζει τους υπαλλήλους του πίνακα να τροποποιούν (ID int not nult, όνομα nvarchar2 (30) not null)? - Προσθήκη PK (σε αυτή την περίπτωση, ο σχεδιασμός μοιάζει με το MS SQL, θα εμφανίζεται παρακάτω) αλλάζει τους υπαλλήλους του πίνακα να προσθέσουν constraint pk_employes πρωτεύον κλειδί (ID).
Για την Oracle υπάρχουν διαφορές στην εφαρμογή του τύπου VARCHAR2, η κωδικοποίησή του εξαρτάται από τις ρυθμίσεις βάσης δεδομένων και το κείμενο μπορεί να αποθηκευτεί, για παράδειγμα, σε κωδικοποίηση UTF-8. Επιπλέον, το μήκος του πεδίου στο Oracle μπορεί να ρυθμιστεί τόσο σε bytes όσο και σε χαρακτήρες, για αυτό, χρησιμοποιούνται πρόσθετες επιλογές byte και char, οι οποίες υποδεικνύονται μετά το μήκος πεδίου, για παράδειγμα:

Όνομα VARCHCRAR2 (30 byte) - Η χωρητικότητα πεδίου θα είναι ίση με 30 bytes του ονόματος VARCHCRAR2 (30 Char) - η χωρητικότητα πεδίου θα είναι ίση με 30 χαρακτήρες
Ποια επιλογή θα χρησιμοποιηθεί από την προεπιλογή byte ή char, σε περίπτωση απλής προδιαγραφής στο Oracle Type Varchar2 (30) εξαρτάται από τις ρυθμίσεις βάσης δεδομένων, μπορεί επίσης να ρυθμιστεί στις ρυθμίσεις IDE. Γενικά, μπορείτε εύκολα να μπερδευτείτε, έτσι στην περίπτωση της Oracle, εάν χρησιμοποιείται ο τύπος VARCHAR2 (και αυτό μερικές φορές δικαιολογείται, για παράδειγμα, όταν χρησιμοποιείτε την κωδικοποίηση UTF-8), προτιμώ να ορίσω ρητά το char (επειδή το Η συμβολοσειρά είναι συνήθως πιο βολική για να διαβάσετε στα σύμβολα).

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

Εισαγάγετε τους υπαλλήλους (αναγνωριστικό, θέση, τμήμα) τιμές (1000, n "σκηνοθέτης", n "διοίκηση"), (1001, n "προγραμματιστής", n "it"), (1002, n "λογιστής", n " Λογιστική "), (1003, n" Senior Programmer ", n" it ")
Σε αυτή την περίπτωση, η εντολή Insert θα δώσει επίσης ένα σφάλμα, επειδή Κατά την εισαγωγή, δεν καθορίσαμε τις τιμές του απαιτούμενου πεδίου ονόματος.
Σε περίπτωση που είχαμε αυτά τα δεδομένα στον αρχικό πίνακα, οι υπάλληλοι της Alter Table αλλάζουν το ID στήλης, η εντολή δεν θα ήταν επιτυχής και οι υπάλληλοι της Alter Table αλλάζουν τη στήλη NULL CONCTON δεν έχει ένα μήνυμα σφάλματος, οι "Alter Table Table" Όνομα στήλης Δεν είναι εντολή NULL "ότι στο πεδίο Όνομα υπάρχουν μηδενικές (μη καθορισμένες) τιμές.

Προσθέστε τιμές για το πεδίο Όνομα και γυρίστε ξανά τα δεδομένα:


Η επιλογή NULL NULL μπορεί επίσης να χρησιμοποιηθεί απευθείας κατά τη δημιουργία Νέος πίνακας. Στο πλαίσιο της εντολής δημιουργίας πίνακα.

Πρώτα διαγράψτε τον πίνακα χρησιμοποιώντας την εντολή:

Οι υπάλληλοι του πίνακα.
Τώρα δημιουργήστε έναν πίνακα με υποχρεωτική ταυτότητα και όνομα στήλης:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NULT NULL, όνομα NVARCHAR (30) μη μηδενική, ημερομηνία γενεθλίων, email nvarchar (30), θέση nvarchar (30), Τμήμα Nvarchar (30))
Μπορείτε επίσης μετά το όνομα του ονόματος στήλης να γράψετε , η οποία θα σημαίνει ότι θα επιτρέπονται οι μηδενικές τιμές (δεν έχει καθοριστεί), αλλά αυτό δεν είναι απαραίτητο, καθώς αυτό το χαρακτηριστικό εννοείται από προεπιλογή.

Εάν απαιτείται αντίθετα να κάνετε μια υπάρχουσα στήλη προαιρετική για να συμπληρώσετε, χρησιμοποιούμε την ακόλουθη σύνταξη εντολών:

Αλλάξτε τους υπαλλήλους του πίνακα Αλλάξτε το όνομα στήλης NVARCHAR (30) Null
Ή απλά:

Αλλάξτε τους υπαλλήλους του πίνακα Αλλάξτε το όνομα στήλης NVARCHAR (30)
Επίσης, αυτή η εντολή μπορούμε να αλλάξουμε τον τύπο του πεδίου σε έναν άλλο συμβατό τύπο ή να αλλάξετε το μήκος του. Για παράδειγμα, ας επεκτείνουμε το πεδίο ονόματος έως και 50 χαρακτήρες:

Αλλάξτε τους υπαλλήλους πίνακα Αλλάξτε το όνομα στήλης NVARCHAR (50)

Πρωτεύων κλειδί

Κατά τη δημιουργία ενός πίνακα, είναι επιθυμητό να έχει μια μοναδική στήλη ή ένα σύνολο κολώνων, το οποίο είναι μοναδικό σε κάθε μία από τις γραμμές του - σε αυτή τη μοναδική τιμή μπορεί να αναγνωριστεί αδιαμφισβήτητα. Αυτή η τιμή ονομάζεται πρωταρχικό κλειδί του πίνακα. Για τον πίνακα υπαλλήλων μας, μια τέτοια μοναδική τιμή μπορεί να είναι η στήλη ID (η οποία περιέχει τον αριθμό πίνακα "υπάλληλο" - αφήστε την στην περίπτωσή μας, η αξία είναι μοναδική για κάθε υπάλληλο και δεν μπορεί να επαναληφθεί).

Δημιουργήστε ένα κύριο κλειδί σε έναν υπάρχοντα πίνακα μπορεί να χρησιμοποιήσετε την εντολή:

Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς PK_employes πρωτεύον κλειδί (ID)
Όπου "pk_employes" είναι το όνομα του περιορισμού που είναι υπεύθυνος για το κύριο κλειδί. Συνήθως, το πρόθεμα "PK_" χρησιμοποιείται για να ονομάσει το κύριο κλειδί μετά τον οποίο έρχεται το όνομα του πίνακα.

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

Alter Table Name_table Προσθήκη περιορισμού Πρωταρχικό όνομα κλειδιού (πεδίο1, πεδίο 2, ...)
Αξίζει να σημειωθεί ότι στο MS SQL όλα τα πεδία που περιλαμβάνονται στο πρωτεύον κλειδί πρέπει να έχουν μη μηδενικό χαρακτηριστικό.

Επίσης, το κύριο κλειδί μπορεί να οριστεί απευθείας κατά τη δημιουργία ενός πίνακα, δηλ. Στο πλαίσιο της εντολής δημιουργίας πίνακα. Διαγράψτε τον πίνακα:

Οι υπάλληλοι του πίνακα.
Και στη συνέχεια να το δημιουργήσετε χρησιμοποιώντας την ακόλουθη σύνταξη:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NULL, NAME NVARCHAR (30) NOT NVARCHAR (30) NOT NVARCHAR, Email NVARCHAR (30), Τμήμα NVARCHAR (30), Τμήμα NVARCHAR (30), Constraint PK_employes πρωτεύον κλειδί (ID) - Περιγράψτε το PK μετά από όλα Πεδία όπως ο περιορισμός)
Μετά τη δημιουργία ενός κοίλου στο τραπέζι:

Εισαγωγή εργαζομένων (ID, θέση, τμήμα, όνομα) τιμές (1000, n "σκηνοθέτης", n "διοίκηση", n "Ivanov i.i."), (1001, n "προγραμματιστής", n "it", n "petrov PP "), (1002, N" λογιστής ", n" Λογιστική ", n" Sidorov SS "), (1003, N" Senior Programmer ", n" it ", n" Andreev A. Αλλά. ")
Εάν το κύριο κλειδί στον πίνακα αποτελείται μόνο από τις τιμές μιας στήλης, μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνταξη:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NULT CONSTRAINT PK_EMONCEES Πρωταρχικό κλειδί - Αναφέρεται ως χαρακτηριστικό του ονόματος NVARCHAR Field Field (30) Not Null, ημερομηνία γενεθλίων, Email NVarchar (30), Τμήμα NVARCHAR (30) )
Στην πραγματικότητα, το όνομα του περιορισμού δεν μπορεί να ζητηθεί, εν προκειμένω, θα ανατεθεί ένα όνομα συστήματος (όπως "pk__employee__3214ec278da42077"):

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NULT, όνομα NVARCHAR (30) μη μηδενική, ημερομηνία γενεθλίων, email nvarchar (30), θέση nvarchar (30), Τμήμα NVARCHAR (30), πρωταρχικό κλειδί (ID))
Ή:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NUME πρωτεύον κλειδί, όνομα NVARCHAR (30) Not Null, ημερομηνία γενεθλίων, Email NVARCHAR (30), Τμήμα NVARCHAR (30))
Αλλά θα συνιστούσα για μόνιμους πίνακες να καθορίζουν πάντα το όνομα του περιορισμού, επειδή Σύμφωνα με το ρητά καθορισμένο και κατανοητό όνομα, θα είναι ευκολότερο να πραγματοποιήσετε χειρισμούς, για παράδειγμα, μπορείτε να το διαγράψετε:

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

Κατάλληλος

Αυτή τη στιγμή αναθεωρήσαμε τις ακόλουθες εντολές:
  • Δημιουργία πίνακα Όνομα_Table (μεταφορά πεδίων και τύπων, περιορισμοί τους) - χρησιμεύει για τη δημιουργία ενός νέου πίνακα στην τρέχουσα βάση δεδομένων.
  • Τραπέζι πτώσης Όνομα_Table - Χρησιμοποιείται για τη διαγραφή πίνακα από την τρέχουσα βάση δεδομένων.
  • Αλλαγή πίνακα Όνομα_table Αλλάξτε τη στήλη. Όνομα Retribunity ... - χρησιμοποιείται για την αναβάθμιση ενός τύπου στήλης ή για να αλλάξετε τις ρυθμίσεις του (για παράδειγμα, για να καθορίσετε το χαρακτηριστικό null ή όχι null).
  • Αλλαγή πίνακα Όνομα_table Προσθέστε τον περιορισμό. Όνομα προγράμματος ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ.(Field1, Field2, ...) - Προσθέστε το κύριο κλειδί σε έναν υπάρχοντα πίνακα.
  • Αλλαγή πίνακα Όνομα_table Περιορισμού πτώσης. Όνομα εκκίνησης - διαγράφοντας έναν περιορισμό από τον πίνακα.

Λίγο για τους προσωρινούς πίνακες

Κόψτε από το MSDN. Στο διακομιστή MS SQL, υπάρχουν δύο τύποι προσωρινών πινάκων: τοπικά (#) και παγκόσμια (##). Οι τοπικοί προσωρινοί πίνακες είναι ορατοί μόνο στους δημιουργούς τους έως ότου ολοκληρωθεί η σύνοδος σύνδεσης με την εμφάνιση του διακομιστή SQL, μόλις δημιουργηθούν για πρώτη φορά. Οι τοπικοί πίνακες χρόνου διαγράφονται αυτόματα μετά την αποσύνδεση του χρήστη από την εμφάνιση του διακομιστή SQL. Οι παγκόσμιοι προσωρινοί πίνακες είναι ορατοί σε όλους τους χρήστες κατά τη διάρκεια οποιωνδήποτε συνόδων σύνδεσης μετά τη δημιουργία αυτών των πινάκων και διαγράφονται όταν όλοι οι χρήστες που αναφέρονται σε αυτούς τους πίνακες αποσυνδέονται από την εμφάνιση του διακομιστή SQL.

Οι προσωρινοί πίνακες δημιουργούνται στη βάση συστήματος TEMPDB, δηλ. Με τη δημιουργία τους, δεν απορροφούμε την κύρια βάση, τα υπόλοιπα χρονικά τραπέζια είναι εντελώς πανομοιότυπα με τα συνηθισμένα τραπέζια, μπορούν επίσης να διαγραφούν χρησιμοποιώντας την εντολή Drop Table. Οι τοπικοί (#) προσωρινοί πίνακες χρησιμοποιούνται συχνότερα.

Για να δημιουργήσετε έναν προσωρινό τραπέζι, μπορείτε να χρησιμοποιήσετε την εντολή Δημιουργία πίνακα:

Δημιουργία πίνακα #TEMP (ID INT, όνομα NVARCHAR (30))
Δεδομένου ότι ένας προσωρινός πίνακας στο MS SQL είναι παρόμοιος με ένα κανονικό τραπέζι, μπορεί, κατά συνέπεια, μπορείτε επίσης να καταργήσετε την εντολή πίνακα πτώσης:

Πίνακας πτώσης #TEMP

Επίσης, ένας προσωρινός πίνακας (ως κανονικός πίνακας), μπορείτε να δημιουργήσετε και να συμπληρώσετε αμέσως τα δεδομένα που επιστρέφονται από το αίτημα χρησιμοποιώντας το selection syntax ... σε:

Επιλέξτε ID, όνομα σε #Temp από τους υπαλλήλους

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

Κανονοποίηση της βάσης δεδομένων - σύνθλιψη σε υποτρίως (καταλόγους) και ορισμοί των δεσμών

Ο σημερινός πίνακας εργαζομένων μας έχει ένα μειονέκτημα ότι στη θέση και το τμήμα των χωρών, ο χρήστης μπορεί να εισέλθει σε οποιοδήποτε κείμενο που πρώτα απ 'όλα είναι γεμάτα με λάθη, δεδομένου ότι ένας υπάλληλος μπορεί να υποδείξει το τμήμα απλώς "το", και ο δεύτερος υπάλληλος, για παράδειγμα, Εισάγετε "Τμήμα πληροφορικής", στο τρίτο "αυτό". Ως αποτέλεσμα, θα είναι ακατανόητο να εννοείται ο χρήστης, δηλ. Είναι τα δεδομένα των εργαζομένων από υπαλλήλους ενός τμήματος ή ο χρήστης που περιγράφεται και είναι 3 διαφορετικά τμήματα; Και ακόμη περισσότερο, στην περίπτωση αυτή, δεν θα μπορέσουμε να ομαδοποιήσουμε σωστά τα δεδομένα για μια έκθεση, όπου, μπορεί να χρειαστεί να δείξει τον αριθμό των εργαζομένων στο πλαίσιο κάθε τμήματος.

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

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

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

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

Δημιουργία θέσεων πίνακα (ID INT ENTENTITY (1,1) NOT NULL CRONDAINT PK_POSITIONS Κύριο κλειδί, Όνομα NVARCHAR (30) NOT NULL) Δημιουργήστε πίνακες Τμήματα (ID INT INTITITY (1,1) Όχι Null Constitaint PK_DEPartments Κύριο κλειδί, όνομα NVARCHAR (30 ) Οχι κενό)
Σημειώστε ότι εδώ χρησιμοποιήσαμε τη νέα επιλογή ταυτότητας, η οποία προτείνει ότι τα δεδομένα στη στήλη ID θα είναι αυτόματα, ξεκινώντας με 1, στο βήμα 1, δηλ. Κατά την προσθήκη νέων αρχείων, θα ανατεθούν με συνέπεια τιμές 1, 2, 3, κλπ. Τέτοια πεδία ονομάζονται συνήθως αυτοίματα. Ο πίνακας μπορεί να ορίσει μόνο ένα πεδίο με την ιδιότητα ταυτότητας και συνήθως, αλλά προαιρετικά, ένα τέτοιο πεδίο είναι το κύριο κλειδί για αυτόν τον πίνακα.

Σε μια σημείωση
Σε διαφορετικά DBMs, η εφαρμογή των πεδίων με το μετρητή μπορεί να γίνει με τον δικό του τρόπο. Στο MySQL, για παράδειγμα, αυτό το πεδίο προσδιορίζεται χρησιμοποιώντας την επιλογή Auto_increment. Στο Oracle και Firebird, αυτή η λειτουργικότητα χρησιμοποιήθηκε για να ανεγερθεί χρησιμοποιώντας χρήση αλληλουχίας (αλληλουχία). Αλλά όσο γνωρίζω η Oracle, η προτεινόμενη επιλογή της ταυτότητας έχει προστεθεί τώρα.

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

Συμπληρώστε το πεδίο Όνομα του πίνακα θέσεων, μοναδικές τιμές από το πεδίο θέσης των υπαλλήλων Εισαγωγή πίνακα θέσεων Επιλέξτε ξεχωριστή θέση από τους υπαλλήλους όπου η θέση δεν είναι μηδενική - πετάξτε τα αρχεία που δεν έχει καθοριστεί η θέση
Το κάνω το ίδιο για τον πίνακα του τμήματος:

Εισαγωγή Τμήματα (Όνομα) Επιλέξτε ξεχωριστό τμήμα από τους υπαλλήλους, όπου το τμήμα δεν είναι null
Εάν ανοίξουμε τώρα τις πίνακες θέσεων και των τμημάτων, θα δούμε ένα αριθμημένο σύνολο αναγνωριστικών τιμών πεδίου:

Επιλέξτε * από τις θέσεις

Επιλέξτε * από τα τμήματα

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

Προσθέστε ένα πεδίο για τους υπαλλήλους της Alter Table Add IsidentID int - Προσθέστε ένα πεδίο για τους υπαλλήλους της Alter Table Add Drystid Int
Ο τύπος πεδίων αναφοράς πρέπει να είναι όπως, όπως στα βιβλία αναφοράς, στην περίπτωση αυτή, είναι int.

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

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

Αλλάξτε τους υπαλλήλους του πίνακα Προσθέστε περιορισμούς FK_employes_positionid Ξένων Κλειδί (Ίθεσης) Θέσεις αναφοράς (ID)
Και να κάνετε το ίδιο για το δεύτερο πεδίο:

Alter Table Labelees Προσθέστε τον περιορισμό FK_employese_DeptrationId Ξένα κλειδί (Dervice) Τμήματα αναφοράς (ID)
Τώρα ο χρήστης σε αυτούς τους τομείς θα μπορεί να εφαρμόσει μόνο τις τιμές του αναγνωριστικού από τον αντίστοιχο κατάλογο. Συνεπώς, για να χρησιμοποιήσετε ένα νέο τμήμα ή θέση, θα είναι ο πρώτος που θα προσθέσει μια νέα καταχώρηση στον κατάλληλο κατάλογο. Επειδή Οι θέσεις και τα τμήματα αποθηκεύονται τώρα σε βιβλία αναφοράς σε μία μόνο περίπτωση, τότε για να αλλάξετε το όνομα, αρκεί να το αλλάξετε μόνο στον κατάλογο.

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

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

Alter Table Table Προσθήκη ονόματος περιορισμού Ξένα κλειδί (πεδίο1, πεδίο 2, ...) Αναφορές πίνακα_spatch (πεδίο1, πεδίο 2, ...)
Σε αυτή την περίπτωση, το κύριο κλειδί παρουσιάζεται με ένα συνδυασμό πολλών πεδίων (πεδίο1, πεδίο2, ...) στον πίνακα πίνακα.

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

UPDATION ΕΧΕΙΑ ΕΡΓΑΣΙΑΣ \u003d (επιλέξτε αναγνωριστικό από θέσεις όπου όνομα \u003d e.position), DecoratiD \u003d (Επιλογή ταυτότητας από τμήματα όπου όνομα \u003d E.Depart) από τους υπαλλήλους E
Ας δούμε τι συνέβη ακολουθώντας το αίτημα:

Επιλέξτε * από τους υπαλλήλους

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

Αλλαγή του πίνακα Οι υπάλληλοι πέφτουν τη θέση στήλης, το τμήμα
Τώρα ο πίνακας έχει αποκτήσει την ακόλουθη φόρμα:

Επιλέξτε * από τους υπαλλήλους

Ταυτότητα Ονομα. Γενέθλια ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Identid. Απόσπασμα.
1000 Ivanov i.i. ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 2 1
1001 Petrov p.p. ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 3 3
1002 Sidorov S.S. ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 1 2
1003 Andreev a.a. ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 4 3

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

Επιλέξτε E.ID, E.NAME, P.NAME POSTINGSNAME, D.NAME ΤΜΗΜΑ ΑΠΟΘΗΚΕΥΣΕΙΣ ΑΠΟΘΗΚΕΥΣΗΣ ΕΝΕΡΓΕΙΕΣ ΕΝΔΕΣΜΕΥΣΕΙΣ ΕΝΕΡΓΕΙΑΣ D ON D.ID \u003d E.DEPARTALTID ΑΦΑΙΡΕΣΕΤΕ ΣΤΟ ΣΤΟΙΧΕΙΟ Ρ στο P.ID \u003d Ε.

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

Αξίζει επίσης να σημειωθεί ότι ο πίνακας μπορεί να αναφέρεται στον εαυτό της, δηλ. Μπορείτε να δημιουργήσετε έναν αναδρομικό σύνδεσμο. Για παράδειγμα, προσθέστε ένα άλλο πεδίο DilualID στο τραπέζι μας με τους υπαλλήλους, οι οποίοι θα δείξουν έναν υπάλληλο που υπόκειται σε αυτόν τον υπάλληλο. Δημιουργήστε ένα πεδίο:

Αλλάξτε τους υπαλλήλους του πίνακα προσθέτουν τον DirderID Int
Σε αυτόν τον τομέα, η μηδενική τιμή είναι επιτρεπτή, το πεδίο θα είναι άδειο, εάν, για παράδειγμα, δεν υπάρχουν υψηλότεροι υπάλληλοι.

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

Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς FK_employese_managerid Ξένων Κλειδί (DIALLEDID) Υπάλληλοι αναφοράς (ID)
Ας δημιουργήσουμε ένα διάγραμμα και να δούμε τι μοιάζουν οι σύνδεσμοι μεταξύ των πινάκων μας:

Ως αποτέλεσμα, θα πρέπει να δούμε την ακόλουθη εικόνα (ο πίνακας των υπαλλήλων συνδέεται με τους πίνακες θέσεων και σπειρών, καθώς και αναφέρεται στον εαυτό του):

Τέλος, αξίζει να βρείτε ότι τα πλήκτρα αναφοράς ενδέχεται να περιλαμβάνουν πρόσθετες επιλογές για τη διαγραφή του Cascade και στο Cascade Update, οι οποίες υποδηλώνουν πώς να συμπεριφέρονται όταν διαγράψετε ή ενημερώστε την καταχώρηση στην οποία υπάρχουν συνδέσμοι στον πίνακα-κατάλογο. Εάν δεν έχουν καθοριστεί αυτές οι επιλογές, δεν μπορούμε να αλλάξουμε την ταυτότητα στον κατάλογο του πίνακα στην εγγραφή που υπάρχουν συνδέσμοι από άλλο πίνακα, δεν θα μπορέσουμε να διαγράψουμε μια τέτοια καταχώρηση από τον κατάλογο μέχρι να διαγράψετε όλες τις γραμμές που συνδέονται με αυτό Είσοδος ή, θα ενημερώσουμε τη σύνδεση με μια άλλη τιμή σε αυτές τις γραμμές.

Για παράδειγμα, η επανεξέταση με τον πίνακα με την επιλογή να διαγράψετε το Cascade fk_employes_departentID:

Οι υπάλληλοι του πίνακα Drop δημιουργούν υπάλληλους πίνακα (ID INT NOT NOT NUME, όνομα NVARCHAR (30), ημερομηνία γενεθλίων, ηλεκτρονικό ταχυδρομείο NVARCHAR (30), intiD int, DecordiD int, DudentID Int, Constrint PK_employes πρωταρχικό κλειδί (ID), Constimation FK_employes_Deptrandid ) Τμήματα αναφοράς (ID) σχετικά με τη διαγραφή καταρράκτη, τον περιορισμό FK_employes_positionid ξένο κλειδί (id), constrints fk_employes_managerid Ξένων κλειδιών (DIALLIDID) Αναφορές Υπάλληλοι (ID)) Εισαγωγή υπαλλήλων (ID, όνομα, γενέθλια, θέση, ) Αξίες (1000, n "Ivanov II", "19550219", 2.1, Null), (1001, N "Petrov PP", "19831203", 3,3,1003), 3,3,1003), (1002, N "Sidorov Ss" , "19760607", 1,2,1000), (1003, n "Andreev AA", "19820417", 4,3,1000)
Διαγράψτε ένα τμήμα με αναγνωριστικό 3 από τον πίνακα Τμήματα:

Διαγράψτε τμήματα όπου id \u003d 3
Ας δούμε τα στοιχεία του πίνακα των εργαζομένων:

Επιλέξτε * από τους υπαλλήλους

Ταυτότητα Ονομα. Γενέθλια ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Identid. Απόσπασμα. Διευθυντής.
1000 Ivanov i.i. 1955-02-19 ΜΗΔΕΝΙΚΟ 2 1 ΜΗΔΕΝΙΚΟ
1002 Sidorov S.S. 1976-06-07 ΜΗΔΕΝΙΚΟ 1 2 1000

Όπως μπορείτε να δείτε, τα δεδομένα του τμήματος 3 από τον πίνακα των υπαλλήλων αποσύρθηκαν επίσης.

Επιλογή στο Cascade Update συμπεριφέρεται ομοίως, αλλά ενεργεί κατά την ενημέρωση της τιμής ταυτότητας στον κατάλογο. Για παράδειγμα, αν αλλάξουμε το αναγνωριστικό θέσης στον κατάλογο των μηνυμάτων, στη συνέχεια στην περίπτωση αυτή, το τμήμα ενημερώνεται στον πίνακα υπαλλήλων στη νέα τιμή ταυτότητας που ζητήσαμε στον κατάλογο. Αλλά σε αυτή την περίπτωση απλά θα αποτύχει να αποδείξει, επειδή Η στήλη ID στον πίνακα Τμημάτων είναι η επιλογή ταυτότητας, η οποία δεν θα μας επιτρέψει να εκτελέσουμε το ακόλουθο ερώτημα (αλλάξτε το αναγνωριστικό του τμήματος 3 έως 30):

Ενημέρωση Τμήματα Ορισμός ID \u003d 30 όπου id \u003d 3
Το κύριο πράγμα είναι να κατανοήσετε την ουσία αυτών των 2 επιλογών σχετικά με τη διαγραφή του Cascade και στην ενημέρωση του Cascade. Εφαρμόζω αυτές τις επιλογές πολύ σε σπάνιες περιπτώσεις και συνιστώ να σκεφτείτε καλά πριν τις καθορίσετε στο όριο αναφοράς, επειδή Με μια ακούσια αφαίρεση μιας εγγραφής από έναν πίνακα αναφοράς, αυτό μπορεί να οδηγήσει σε μεγάλα προβλήματα και να δημιουργήσει μια αλυσιδωτή αντίδραση.

Ανάκτηση του τμήματος 3:

Δίνουμε την άδεια να προσθέσουμε / να αλλάξουμε την ταυτότητά τους τα τμήματα Identity_insert σε εισαγωγικά τμήματα (ID, όνομα) τιμές (3, n "it") - Απαγορεύστε την προσθήκη / αλλαγή ταυτότητας Set Sidity_insert Τμήματα
Καθαρίστε πλήρως τον πίνακα των εργαζομένων χρησιμοποιώντας την εντολή Trickate Table:

Τραβήξτε τους υπαλλήλους πίνακα.
Και επανατοποθετήστε τα δεδομένα σε αυτό ξανά χρησιμοποιώντας την προηγούμενη εντολή Insert:

Εισάγετε τους υπαλλήλους (αναγνωριστικό, όνομα, γενέθλια, itemsid, τμήματα, διευθυντής) τιμές (1000, n "Ivanov i.i.", "19550219", 2,1, null), (1001, n "Petrov PP", "19831203", 3 , 3.1003), (1002, n "Sidorov SS", "19760607", 1,2,1000), (1003, N "Andreev AA", "19820417" 4,3,1000)

Κατάλληλος

Σε δεδομένη στιγμή, πολλές περισσότερες εντολές DDL προστέθηκαν στις γνώσεις μας:
  • Προσθέτοντας την ιδιότητα ταυτότητας στο πεδίο - σας επιτρέπει να κάνετε αυτόματα το πεδίο αυτό αυτόματα συμπληρώστε (πεδίο) για έναν πίνακα.
  • Αλλαγή πίνακα Όνομα_table Προσθήκη. list_pole_s_chards - σας επιτρέπει να προσθέσετε νέα πεδία στον πίνακα.
  • Αλλαγή πίνακα Όνομα_table Στήλη πτώσης. list_pole - σας επιτρέπει να αφαιρέσετε τα πεδία από τον πίνακα.
  • Αλλαγή πίνακα Όνομα_table Προσθέστε τον περιορισμό. Όνομα προγράμματος Ξένο κλειδί.(πεδία) Βιβλιογραφικές αναφορές. TABLE_SPATCT (πεδία) - Σας επιτρέπει να ορίσετε τη σύνδεση μεταξύ του πίνακα και του βιβλίου αναφοράς πίνακα.

Άλλοι περιορισμοί - μοναδικές, προεπιλογές, έλεγχος

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

Ενημέρωση υπαλλήλων που ορίζονται email \u003d " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"Όπου id \u003d 1000 ενημέρωση υπαλλήλων που ορίζονται email \u003d" [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"Όπου id \u003d 1001 ενημέρωση υπαλλήλων που ορίζονται email \u003d" [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"Όπου id \u003d 1002 ενημέρωση υπαλλήλους που email \u003d" [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"Όπου id \u003d 1003
Και τώρα μπορείτε να επιβάλλετε έναν μοναδικό περιορισμό σε αυτό το πεδίο:

Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς UQ_EMCHEENES_EMAIL Μοναδικό (ηλεκτρονικό ταχυδρομείο)
Τώρα ο χρήστης δεν θα μπορέσει να κάνει το ίδιο ηλεκτρονικό ταχυδρομείο από πολλούς υπαλλήλους.

Ο περιορισμός της μοναδικότητας συνήθως αναφέρεται ως εξής - πρώτα το πρόθεμα "UQ_" είναι το πρώτο, τότε το όνομα του πίνακα και μετά την υπογράμμιση είναι το όνομα του πεδίου στο οποίο βρίσκεται αυτός ο περιορισμός.

Συνεπώς, εάν ο πίνακας είναι μοναδικός στο πλαίσιο, πρέπει να υπάρχει ένας συνδυασμός πεδίων, τότε τα αναφέρουμε μέσω του κόμματος:

Alter Table Name_Table Προσθήκη Όνομα περιορισμού Μοναδικό (πεδίο1, πεδίο 2, ...)
Χρησιμοποιώντας την προσθήκη στο προεπιλεγμένο πεδίο ορίου, μπορούμε να ορίσουμε την προεπιλεγμένη τιμή που θα αντικατασταθεί σε περίπτωση που έχει εισαχθεί Νέα ηχογράφηση Αυτό το πεδίο δεν θα εμφανίζεται στη λίστα λίστας εντολών Εισαγωγή. Αυτός ο περιορισμός μπορεί να ρυθμιστεί απευθείας κατά τη δημιουργία ενός πίνακα.

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

Αλλάξτε τους υπαλλήλους του πίνακα Προσθήκη Ημερομηνία Hiredate Not Null προεπιλεγμένο sysdatetime ()
Ή εάν η στήλη μετεδέψτε ήδη υπάρχει, τότε μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνταξη:

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

Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς df_employese_hiledate προεπιλεγμένο sysdatetime () για να το εξαντλήσει
Δεν ήταν αυτή η στήλη πριν, στη συνέχεια, όταν προσθέτει σε κάθε είσοδο στο πεδίο HEARDATE, η τρέχουσα τιμή ημερομηνίας θα εισαχθεί.

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

Τοποθετήστε τους υπαλλήλους (ταυτότητα, όνομα, email) τιμές (1004, n "sergeev s.s.", " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]")
Ας δούμε τι έγινε:

Επιλέξτε * από τους υπαλλήλους

Ταυτότητα Ονομα. Γενέθλια ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Identid. Απόσπασμα. Διευθυντής. Ημερομηνία πρόσληψης.
1000 Ivanov i.i. 1955-02-19 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 2 1 ΜΗΔΕΝΙΚΟ 2015-04-08
1001 Petrov p.p. 1983-12-03 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 3 4 1003 2015-04-08
1002 Sidorov S.S. 1976-06-07 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 1 2 1000 2015-04-08
1003 Andreev a.a. 1982-04-17 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 4 3 1000 2015-04-08
1004 Sergeev S.S. ΜΗΔΕΝΙΚΟ [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ ΜΗΔΕΝΙΚΟ 2015-04-08

Το όριο ελέγχου ελέγχου χρησιμοποιείται όταν είναι απαραίτητο να ελέγξετε τις τιμές που εισάγονται στο πεδίο. Για παράδειγμα, προσφέρουμε αυτόν τον περιορισμό στο πεδίο αριθμού Tabel, το οποίο έχουμε ένα αναγνωριστικό υπαλλήλου (ID). Χρησιμοποιώντας αυτόν τον περιορισμό, ας πούμε ότι οι αριθμοί δισκίων πρέπει να είναι από 1000 έως το 1999:

Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς CK_employese_ID Check (αναγνωριστικό μεταξύ 1000 και 1999)
Ο περιορισμός συνήθως αναφέρεται ως πρόθεμα "CK_" πηγαίνει πρώτα, τότε το όνομα του πίνακα και το όνομα του πεδίου στο οποίο επιβάλλεται αυτός ο περιορισμός.

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

Τοποθετήστε τους υπαλλήλους (id, email) τιμές (2000, " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]")
Και τώρα θα αλλάξω την εισαγόμενη τιμή στα 1500 και θα βεβαιωθώ ότι η καταχώρηση θα εισαχθεί:

Εισαγάγετε τους υπαλλήλους (id, email) τιμές (1500, " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]")
Μπορείτε επίσης να δημιουργήσετε μοναδικούς περιορισμούς και να ελέγξετε τους περιορισμούς χωρίς να καθορίσετε το όνομα:

Αλλαγή των υπαλλήλων πίνακα Προσθέστε μοναδικό (ηλεκτρονικό ταχυδρομείο) Alter Table Labelees Προσθήκη ελέγχου (ID μεταξύ 1000 και 1999)
Αλλά αυτό δεν είναι μια καλή πρακτική και είναι καλύτερο να ορίσετε ρητά το όνομα του περιορισμού, επειδή Για να τακτοποιήσετε αργότερα, κάτι που θα είναι πιο δύσκολο, θα χρειαστεί να ανοίξετε το αντικείμενο και να παρακολουθήσετε αυτό που απαντά.

Με καλό όνομα, πολλές πληροφορίες σχετικά με τον περιορισμό μπορούν να βρεθούν απευθείας με το όνομά του.

Και, κατά συνέπεια, όλοι αυτοί οι περιορισμοί μπορούν να δημιουργηθούν αμέσως κατά τη δημιουργία ενός πίνακα, αν δεν είναι ακόμα. Διαγράψτε τον πίνακα:

Οι υπάλληλοι του πίνακα.
Και να το επαναλάβετε με όλους τους περιορισμούς που δημιουργούνται από έναν πίνακα δημιουργίας:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NULT, NAME NVARCHAR (30), Ημερομηνία γενεθλίων, Email NVARCHAR (30), IntiD Int, DecordiD Int, Hiredate Ημερομηνία μη μηδενική προεπιλεγμένη SysdateTime (), - Για προεπιλογή θα πραγματοποιήσω εξαίρεση από τον περιορισμό PK_PLOANES Πρωταρχικό κλειδί (ID), constrints fk_employes_peceptrationid Ξένα κλειδί (Departing) Τμήματα αναφοράς (ID), Constrints FK_employes_positionid Ξένων Κλειδί (Ίνδυση) Θέσεις αναφοράς (ID), Περιορισμός UQ_Employes_Email Μοναδική (email), constraint ck_employese_id Έλεγχος (ID μεταξύ 1000 και 1999))

Εισαγάγετε τους υπαλλήλους (αναγνωριστικό, όνομα, γενέθλια, ηλεκτρονικό ταχυδρομείο, identid, dructid) τιμές (1000, n "Ivanov i.i.", "19550219", " [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 2.1), (1001, n" Petrov PP "," 19831203 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 3,3), (1002, n" Sidorov S.s. "," 19760607 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 1,2), (1003, n" Andreev Α.Α. "," 19820417 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]",4,3)

Λίγο για τους δείκτες που δημιουργούνται κατά τη δημιουργία περιορισμών πρωτογενών κλειδιών και μοναδικού

Όπως μπορείτε να δείτε στο screenshot παραπάνω, όταν δημιουργείτε τους περιορισμούς του πρωτεύοντος κλειδιού και μοναδικού, οι ευρετήριο δημιουργούνται αυτόματα με τα ίδια ονόματα (pk_employes και uq_employese_email). Από προεπιλογή, ο δείκτης πρωτεύοντος κλειδιού δημιουργείται ως συγκεντρωμένος και για όλους τους άλλους δείκτες ως μη συγκρατημένους. Αξίζει να σημειωθεί ότι η έννοια ενός δείκτη συμπλέγματος δεν είναι σε όλα τα DBMs. Ο πίνακας μπορεί να έχει μόνο έναν δείκτη συμπλέγματος (συμπλέγματος). Σημαντικό - σημαίνει ότι οι καταχωρήσεις πίνακα θα ταξινομηθούν με αυτόν τον δείκτη, μπορεί επίσης να ειπωθεί ότι αυτός ο δείκτης έχει άμεση πρόσβαση σε όλα τα δεδομένα του πίνακα. Είναι έτσι να μιλήσετε ο κύριος δείκτης του πίνακα. Αν λέτε πιο αγενής, τότε αυτός είναι ένας δείκτης βιδωμένος στο τραπέζι. Ο δείκτης συμπλέγματος είναι ένα πολύ ισχυρό εργαλείο που μπορεί να σας βοηθήσει όταν η βελτιστοποίηση των αιτημάτων, απλά θυμηθείτε αυτό. Αν θέλουμε να πούμε ότι ο δείκτης συμπλέγματος δεν χρησιμοποιείται στο κύριο κλειδί, αλλά για έναν άλλο δείκτη, στη συνέχεια, όταν δημιουργεί ένα κύριο κλειδί, πρέπει να καθορίσουμε τη μη συγκρατημένη επιλογή:

Alter Table Name_Table Προσθήκη περιορισμού Πρωτογενή κλειδί Μη συγκαλυμμένο πρωτεύον όνομα (πεδίο1, πεδίο 2, ...)
Για παράδειγμα, θα κάνουμε τον δείκτη περιορισμού του pk_employes και ο δείκτης ορίου UQ_Employse_email είναι σύμπλεγμα. Πρώτα απ 'όλα, διαγράψτε αυτούς τους περιορισμούς:

Αλλάξτε τους υπαλλήλους του πίνακα Drop Constraint PK_employes να αλλάξετε τον πίνακα Οι υπάλληλοι μειώνουν τον περιορισμό UQ_employes_Email
Τώρα ας τα δημιουργήσουμε με τις επιλογές συγκεντρωμένες και μη clustered:

Αλλαγή των υπαλλήλων πίνακα Προσθέστε περιορισμούς PK_employees Πρωταρχικός κλειδί Nonclustered (ID) Alter Table Οι υπάλληλοι προσθέτουν περιορισμούς UQ_employes_email Μοναδικά συγκεντρωμένα (email)
Τώρα, επιλέγοντας ένα δείγμα από τον πίνακα των υπαλλήλων, θα δούμε ότι τα αρχεία ταξινομούνται με ομαδοποιημένο δείκτη UQ_Employes_email:

Επιλέξτε * από τους υπαλλήλους

Ταυτότητα Ονομα. Γενέθλια ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Identid. Απόσπασμα. Ημερομηνία πρόσληψης.
1003 Andreev a.a. 1982-04-17 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 4 3 2015-04-08
1000 Ivanov i.i. 1955-02-19 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 2 1 2015-04-08
1001 Petrov p.p. 1983-12-03 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 3 3 2015-04-08
1002 Sidorov S.S. 1976-06-07 [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] 1 2 2015-04-08

Πριν από αυτό, όταν ο δείκτης συμπλέγματος ήταν ο δείκτης PK_EMCHENEENES, οι προεπιλεγμένες καταχωρήσεις ταξινομούνται από το πεδίο ID.

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

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

Ο δείκτης συμπλέγματος είναι ευεργετικός να εφαρμοστεί στα πεδία με τα οποία το δείγμα είναι πιο συχνά.

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

Κατάλληλος

Σε αυτό το στάδιο, συναντήσαμε με κάθε είδους περιορισμούς, στην απλούστερη μορφή τους, τα οποία δημιουργούνται από την ομάδα του τύπου "Alter Table_Table_Table Προσθήκη ονόματος περιορισμού:": ":"
  • ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ. - πρωτεύων κλειδί;
  • Ξένο κλειδί. - διαμορφώστε τους συνδέσμους και τον έλεγχο της ακεραιότητας αναφοράς των δεδομένων ·
  • Μοναδικός - σας επιτρέπει να δημιουργήσετε μοναδικότητα.
  • Ελεγχος. - επιτρέπει την ορθότητα των εισαγόμενων δεδομένων ·
  • Προκαθορισμένο. - σας επιτρέπει να ορίσετε την προεπιλεγμένη τιμή.
  • Αξίζει επίσης να σημειωθεί ότι όλοι οι περιορισμοί μπορούν να διαγραφούν χρησιμοποιώντας την εντολή " Αλλαγή πίνακα Όνομα_table Περιορισμού πτώσης. Όνομα προϊστορίας. "
Επίσης άγγιξαμε μερικώς το θέμα των δεικτών και αποσυναρμολογήσαμε την έννοια του συμπλέγματος ( Συγκεντρωμένη.) και non clockuster Μη συγκρατημένος) Ευρετήριο.

Δημιουργία ανεξάρτητων δεικτών

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

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

Δημιουργία δείκτη IDX_employes_name στους υπαλλήλους (όνομα)
Επίσης, εδώ μπορείτε να καθορίσετε τις επιλογές συγκεντρωμένες, μη clustered, μοναδικές, καθώς μπορείτε να καθορίσετε την κατεύθυνση της ταξινόμησης κάθε μεμονωμένου πεδίου ASC (προεπιλογή) ή DESC:

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

Διαγράψτε το δείκτη μπορεί να έχει ως εξής:

Drop index idx_employese_name στους υπαλλήλους
Απλά ευρετήρια καθώς και περιορισμοί μπορούν να δημιουργηθούν στο πλαίσιο της εντολής δημιουργίας πίνακα.

Για παράδειγμα, αφαιρέστε τον πίνακα:

Οι υπάλληλοι του πίνακα.
Και να το επαναλάβετε με όλους τους δημιουργημένους περιορισμούς και τους δείκτες με μια εντολή δημιουργίας πίνακα:

Δημιουργία υπαλλήλων πίνακα (ID INT NOT NUME, όνομα NVARCHAR (30), ημερομηνία γενεθλίων, ηλεκτρονικό ταχυδρομείο NVARCHAR (30), identid int, DeparthiD Int, Hiredate Date Not Nuld Constratain DF_EMONDES_HIREDATE DIREDION SYSDATETIME ), Constrints fk_employes_depaplations ξένο κλειδί (Departing) Τμήματα αναφοράς (ID), Constraint FK_employes_positionid Ξένων Κλειδί (identid) Θέσεις (ID), Constraint FK_Employes_Managerid Ξένων Κλειδί (DIALLEDID) Αναφορές Υπάλληλοι (ID), Constrint UQ_Employese_Email Μοναδικός (Email) Ελέγξτε (ID μεταξύ 1000 και 1999), Index Idx_employese_name (όνομα))
Τέλος, εισάγετε στον πίνακα των υπαλλήλων μας:

Εισαγάγετε τους υπαλλήλους (αναγνωριστικό, όνομα, γενέθλια, ηλεκτρονικό ταχυδρομείο, identid, dructid, deagerid) τιμές (1000, n "Ivanov i.i.", "19550219", ",", [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 2.1, Null), (1001, n" Petrov PP "," 19831203 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 3,3.1003), (1002, n" Sidorov S.s. "," 19760607 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]", 1,2,1000), (1003, n" Andreev AA. "," 19820417 "," [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]",4,3,1000)
Επιπλέον, αξίζει να σημειωθεί ότι στο δείκτη μη συμπλέγματος μπορείτε να συμπεριλάβετε τιμές, καθορίζοντάς τα σε συμπεριλάβετε. Εκείνοι. Στην περίπτωση αυτή, ο δείκτης περιλαμβάνει τον δείκτη συμπλέγματος, μόνο τώρα ο δείκτης δεν βιδώνεται στον πίνακα και οι απαραίτητες τιμές βιδώνονται στο δείκτη. Συνεπώς, τέτοιοι δείκτες μπορούν να βελτιώσουν πάρα πολύ την απόδοση των ερωτημάτων για να επιλέξουν (επιλέξτε) εάν όλα τα αναφερόμενα πεδία είναι διαθέσιμα στον δείκτη, τότε είναι δυνατή η έκκληση στον πίνακα καθόλου. Αλλά φυσικά αυξάνει το μέγεθος του δείκτη, επειδή Οι τιμές των αναφερόμενων πεδίων αντιγράφονται στον δείκτη.

Κόψτε από το MSDN. Γενική σύνταξη Εντολές για τη δημιουργία ευρετηρίων

Δημιουργία [μοναδική] [συγκεντρωμένη | Nonclustered] ευρετήριο index_name (Στήλη [Asc | Desc] [, ... n]) [περιλαμβάνουν (στήλη_name [, ... n])]]

Κατάλληλος

Οι δείκτες μπορούν να αυξήσουν τον ρυθμό δειγματοληψίας δεδομένων (SELECT), αλλά οι δείκτες μειώνουν την ταχύτητα της τροποποίησης των δεδομένων πίνακα, επειδή Μετά από κάθε τροποποίηση, το σύστημα θα χρειαστεί να ανοικοδομήσει όλους τους δείκτες για έναν συγκεκριμένο πίνακα.

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

Συμπέρασμα από την DDL.

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

Το κύριο πράγμα είναι να κατανοήσουμε την ουσία και την υπόλοιπη πρακτική.

Καλή τύχη σε εσάς να καταφέρετε αυτή την υπέροχη γλώσσα που ονομάζεται SQL.

Από τον συγγραφέα: Σας καλέσατε ένα βραστήρα; Λοιπόν, αυτή είναι η διορθωμένη επιχείρηση! Κάθε samovar ήταν κάποτε ένα βραστήρα! Ή ήταν κάθε επαγγελματίας ήταν κάποτε ένα samovar; Όχι, και πάλι κάτι είναι λάθος! Γενικά, MySQL για αρχάριους.

Γιατί τα τσαγιέρες MySQL

Εάν συγκεντρώσατε σοβαρά για να συνδέσετε τη ζωή σας με το Διαδίκτυο, στη συνέχεια αμέσως στα πρώτα βήματα στο "Web" θα συναντήσετε αυτό το DBMS. Το MySQL μπορεί να είναι Bolden από το σύστημα "All Internet" του συστήματος διαχείρισης βάσεων δεδομένων. Χωρίς αυτό, δεν λογίζεται πλέον ή λιγότερο σοβαρός πόρος, υπάρχει στο σχέδιο διαχειριστή κάθε φιλοξενίας. Και τα περισσότερα από όλα τα δημοφιλή CMS και ακόμη και οι κινητήρες αυτοάμυνας είναι χτισμένες με τη συμμετοχή της.

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

Αλλά τόσο σκληρά mysql για ανδρείκελα δίδεται μόνο αν ξεκινήσετε ότι είναι λάθος. Δεν θα κάνουμε ένα τέτοιο λάθος και θα αρχίσουμε να εξοικειωθείτε με αυτή την τεχνολογία με τα ίδια τα βασικά.

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Αρχικά, θα περάσουμε τις βασικές έννοιες που θα αναφέρουμε σε αυτή τη δημοσίευση:

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

Το DBMS (σύστημα διαχείρισης βάσεων δεδομένων) είναι ένα σύνολο όλων των μονάδων λογισμικού για τη χορήγηση βάσεων δεδομένων.

SQL - Γλώσσα δομητικών ερωτημάτων, με τα οποία ο προγραμματιστής "επικοινωνεί" με τον πυρήνα (διακομιστή) του DBMS. Όπως οποιαδήποτε γλώσσα προγράμματος, η SQL έχει τη δική του σύνταξη, ένα σύνολο εντολών και χειριστών, υποστηριζόμενους τύπους δεδομένων.

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

Επιλογή του σωστού εργαλείου

Συχνά "βιασύνη" σε όλη τη συλλογή κελυφών MySQL για αρχάριους, συνειδητοποίησαν ότι απλά δεν υπάρχει. Όλα τα προϊόντα λογισμικού για το DBMS διαχείρισης απαιτούν ήδη Εγκατεστημένος διακομιστής Βάση δεδομένων Σε γενικές γραμμές, αποφάσισα να μην εφεύρουν το "σκούτερ" και επέλεξα στο εγχώριο πακέτο denwer. Μπορείτε να το κατεβάσετε στον επίσημο ιστότοπο.

Η σύνθεσή του περιλαμβάνει ήδη όλα τα συστατικά του DBM, επιτρέποντας στον νεοεισερχόμενο αμέσως μετά από μια εύκολη και κατανοητή εγκατάσταση για να ξεκινήσει μια πρακτική γνωριμία με το MySQL. Επιπλέον, το Denwer περιλαμβάνει μερικά ακόμα απαραίτητα προγραμματιστή εργαλείων: τοπικός διακομιστής, PHP.

Τα πρώτα βήματα

Δεν θα περιγράψω τη διαδικασία εγκατάστασης του συνόλου "Gentlemansky", επειδή όλα συμβαίνουν αυτόματα εκεί. Μετά την εκκίνηση της εγκατάστασης, διαχειρίζεται μόνο τα επιθυμητά πλήκτρα. Ακριβώς ό, τι χρειάζεται στην παραλλαγή MySQL για ανδρείκελα.

Όταν ολοκληρωθεί η διαδικασία εγκατάστασης, ξεκινήστε τον τοπικό διακομιστή, περιμένετε μερικά δευτερόλεπτα. Μετά από αυτόν τον τύπο Γραμμή διεύθυνσης Browser localhost.

Στη σελίδα "Hooray, Κερδισμένο!" Μεταβείτε σε έναν από τους συνδέσμους που καθορίζονται στο στιγμιότυπο. Μετά από αυτό θα μεταφερθείτε σε phpmyadmin - το κέλυφος για να διαχειριστεί βάσεις δεδομένων.

Κάνοντας κλικ στο σύνδεσμο http://downloads.mysql.com/docs/world.sql.zip, κατεβάστε ένα παράδειγμα μιας βάσης δεδομένων δοκιμής από την επίσημη ιστοσελίδα MySQL. Και πάλι, πηγαίνετε στο phpmyadmin, στο κύριο μενού στην κορυφή Μετάβαση στην καρτέλα "Εισαγωγή". Στο παράθυρο "Εισαγωγή σε τρέχον" στο πρώτο τμήμα ("Εισαγόμενο αρχείο"), ορίστε την "Επισκόπηση του υπολογιστή σας".

Στο παράθυρο Explorer, επιλέξτε το αρχείο με το ληφθέν παράδειγμα της βάσης δεδομένων. Στο κάτω μέρος του κύριου παραθύρου, μην ξεχάσετε να κάνετε κλικ στο "OK".

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

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

Εξετάστε τη δομή του από το εσωτερικό, ώστε να μπορείτε να φανταστείτε σαφέστερα τι πρέπει να αντιμετωπίσετε.

Κάντε κλικ στο όνομα της βάσης δεδομένων MySQL για αρχάριους. Εμφανίζει μια λίστα με πίνακες από τους οποίους αποτελείται. Κάντε κλικ σε ένα από αυτά. Στη συνέχεια, πηγαίνετε στο στοιχείο επάνω μενού "Δομή". Ο κύριος χώρος εργασίας θα εμφανίσει τη δομή του πίνακα: τα ονόματα όλων των στηλών, των τύπων δεδομένων και όλων των χαρακτηριστικών.

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

Βιβλία

Alan Bewly "Learning SQL" (2007)

Αυτό το βιβλίο είναι μια εξαιρετική επιλογή για όσους στέκονται στην αρχή της εδάφους SQL μελέτη μονοπάτι. Δεν θα σας επιτρέψει μόνο να αγοράσετε την απαραίτητη βάση της κύριας γνώσης, αλλά και να ενημερώσετε τις πιο δημοφιλείς λεπτότητες και ισχυρά μέσα γλώσσας που χρησιμοποιούν οι έμπειροι προγραμματιστές.
Πολλά εγχειρίδια αφιερωμένα σε βάσεις δεδομένων, σχεσιακή θεωρία και γλώσσα SQL είναι υπερπληθυσμένα σε μια βαρετή παρουσίαση. Θεωρητικά Ιδρύματα. Αυτό το βιβλίο είναι μια ευχάριστη εξαίρεση χάρη στο ελαφρύ, ζωντανό στυλ του. Ο συγγραφέας παρουσιάζει τις πληροφορίες αναγνώστη πληροφορίες σχετικά με τις εκφράσεις SQL και τα μπλοκ, τους τύπους συνθηκών, να συμμετάσχουν-αχ, τους υποσιτισμούς και πολλά άλλα πράγματα.
Για να εξασφαλιστεί η γνώση που αποκτήθηκε στην πράξη, ο συγγραφέας δημιουργεί μια εκπαιδευτική βάση MySQL και δίνει πολλά πρακτικά παραδείγματα αιτήσεων που καλύπτουν ολόκληρο το θεωρητικό υλικό.

Chris Fialyl "SQL" (2013)


Το βιβλίο μιλάει για την έκδοση της γλώσσας ANSI SQL-92 (SQL2). Περιγράφεται λεπτομερώς σχετικά με τον τρόπο εφαρμογής της γλώσσας ερωτήματος για την επίλυση των αντίστοιχων κατηγοριών εργασιών στη δειγματοληψία και την τροποποίηση των δεδομένων και την εργασία με τα αντικείμενα της δομής βάσης δεδομένων. Όλα τα παραδείγματα εξηγούνται λεπτομερώς.
Ιδιαίτερη προσοχή δίνεται στις διαφορές στις διαλέξεις SQL στην υλοποίηση των πιο κοινών DBMs: MySQL, Oracle, MS SQL Server και PostgreSQL.
Το βιβλίο προορίζεται για όλους όσους επιθυμούν να μάθουν ανεξάρτητα την γλώσσα SQL ή να βελτιώσουν τις γνώσεις τους σε αυτό το θέμα.

Anthony Molinaro "SQL. Συλλογή συνταγών "(2009)


Αυτή η δημοσίευση προορίζεται για εκείνους που έχουν ήδη κάποια γνώση του SQL και θέλουν να βελτιώσουν τις δεξιότητές τους στον τομέα αυτό. Θα είναι επίσης πολύ χρήσιμο και εμπειρογνώμονες στον τομέα των βάσεων δεδομένων, δεδομένου ότι ο συγγραφέας προσφέρει παραδείγματα επιθεωρήσεων επίλυσης σε διαφορετικά DBMs: DB2, Oracle, PostgreSQL, MySQL και SQL Server.
Το βιβλίο θα σας βοηθήσει να μάθετε πώς να χρησιμοποιήσετε το SQL για να λύσετε ένα ευρύτερο φάσμα εργασιών: από τις λειτουργίες μέσα στη βάση δεδομένων μέχρι τα δεδομένα και να τα μεταδώσετε πάνω από το δίκτυο στην εφαρμογή.
Θα μάθετε πώς να εφαρμόζετε λειτουργίες παραθύρων και ειδικούς φορείς εκμετάλλευσης, καθώς και προηγμένες μέθοδοι εργασίας με αποθήκες δεδομένων: δημιουργώντας ιστόγραμμα, ευθυγράμμιση δεδομένων σε μπλοκ, που εκτελούν τη συσσωμάτωση του συρόμενου εύρους τιμών, σχηματίζοντας τα τρέχοντα ποσά και τα χέρια. Μπορείτε να αναπτύξετε τις χορδές στις στήλες και το αντίστροφο, να απλοποιήσετε τους υπολογισμούς μέσα στη σειρά και να εκτελέσετε μια διπλή ανάπτυξη του σετ που προκύπτει, εκτελέστε μια παράκαμψη σειράς, η οποία σας επιτρέπει να χρησιμοποιήσετε το SQL στη σύνταξη συμβολοσειρά σε χαρακτήρες, λέξεις ή στοιχεία μιας συμβολοσειράς με διαχωριστές. Οι τεχνικές που προσφέρονται από τον συγγραφέα θα βελτιστοποιήσουν τον κώδικα των εφαρμογών σας και θα ανοίξουν τα νέα χαρακτηριστικά γλώσσας SQL πριν από εσάς.

Alex Kriegel και άλλοι. "SQL. Βίβλος χρήστη », 2η έκδοση (2010)


Το βιβλίο είναι μοναδικό στο ότι κάθε κεφάλαιο παρέχει μια σύγκριση της εφαρμογής ορισμένων αιτήσεων για διαλέξεις τριών κορυφαίων DBM. Λόγω αυτού, είναι ένα εξαντλητικό και πρακτικό βιβλίο αναφοράς στη γλώσσα SQL για τους προγραμματιστές από τους αρχάριους στο Guru, ένα είδος εγχειριδίου επιφάνειας εργασίας.
Η δημοσίευση καλύπτει θέματα από τα ίδια τα βασικά προς τις συναλλαγές και τις κλειδαριές, τις λειτουργίες και τα εργαλεία προστασίας της βάσης δεδομένων.
Το τέλος παρουσιάζει αρκετά πρόσθετα θέματα: η ενσωμάτωση SQL σε XML, OLAP Business Analytics και πολλά άλλα.

Eric Redmond, Jim R. Wilson "Επτά βάσεις δεδομένων για επτά εβδομάδες. Εισαγωγή στις σύγχρονες βάσεις δεδομένων και NOSQL ιδεολογία "(2015)

Το βιβλίο περιγράφει τις περισσότερες από τις σύγχρονες βάσεις δεδομένων ανοιχτού κώδικα: Redis, Neo4j, CouchDB, Mongodb, HBase, PostgreSQL και RIAK. Κάθε βάση δεδομένων παρέχει παραδείγματα εργασίας με πραγματικά δεδομένα που αποδεικνύουν τις κύριες ιδέες και τις δυνάμεις.
Αυτό το βιβλίο θα ανταλλάξει το φως στις δυνάμεις και τις αδυναμίες κάθε επτά βάσεων δεδομένων και θα σας διδάξει να επιλέξετε αυτό που ικανοποιεί καλύτερα τις απαιτήσεις.

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

Τι χρειάζεσαι?

SQL (δομημένη γλώσσα ερωτήματος) γλώσσα ειδικά σχεδιασμένα για να αλληλεπιδρούν με συστήματα διαχείρισης βάσεων δεδομένων όπωςMySQL, Oracle, Sqlite και άλλα ... να εκτελέσειSql Αιτήσεις σε αυτό το άρθρο Σας συμβουλεύω να εγκαταστήσετεMysql στο Τοπικός υπολογιστής. Συστήνω επίσης τη χρήση phpmyadmin. ως οπτική διεπαφή.

Όλα αυτά είναι διαθέσιμα σε όλο το αγαπημένο Ντένβερ. Νομίζω ότι ο καθένας πρέπει να ξέρει τι είναι και πού να το πάρετε :). ΜπορώΜια άλλη χρήση wamp ή mamp.

Στο Ντένβερ υπάρχει ένα ενσωματωμένοMysql κονσόλα. Θα το χρησιμοποιήσουμε.

Δημιουργία βάσης δεδομένων:Δημιουργία βάσης δεδομένων

Εδώ είναι το πρώτο μας αίτημα. Θα δημιουργήσουμε την πρώτη μας βάση δεδομένων για περαιτέρω εργασία.

Για να ξεκινήσετε, ανακαλύψτεMysql Κονσόλα και συνδεθείτε. ΓιαWamp. Ο προεπιλεγμένος κωδικός πρόσβασης είναι κενός. Αυτό είναι, τίποτα :). ΓιαMamp - "ρίζα". Για να αποσαφηνιστεί ο Ντένβερ.

Μετά την είσοδο, πληκτρολογήστε την παρακάτω γραμμή και κάντε κλικ στην επιλογήΕΙΣΑΓΩ:

Δημιουργία βάσης δεδομένων my_first_db;

Σημειώστε ότι το ερωτηματικό (?) Προστίθεται στο τέλος της αίτησης, καθώς και σε άλλες γλώσσες.

Επίσης εντολές στο SQL Ευαίσθητο στο μητρώο. Τους γράφουμε με μεγάλα γράμματα.

Όψη Μόνο: Σετ χαρακτήρα.και Αντιπαραβολή

Αν θέλετε να εγκαταστήσετεΣετ χαρακτήρων (σύμβολα) και συλλογή (σύγκριση) Γράψτε την ακόλουθη εντολή:

Δημιουργία βάσης δεδομένων MY_FIRST_DB Προεπιλεγμένο σύνολο χαρακτήρων UTF8 COLLATE UTF8_GENERAL_CI;

Υπάρχει μια λίστα με σύνολα χαρακτήρων που υποστηρίζονται Mysql.

Εμφάνιση βάσεων δεδομένων:Εμφανίζει μια λίστα με όλες τις βάσεις δεδομένων

Αυτή η εντολή χρησιμοποιείται για την έξοδο όλων των διαθέσιμων βάσεων δεδομένων.

Drop Database:Αφαίρεση βάσης δεδομένων

Μπορείτε να διαγράψετε μια υπάρχουσα βάση δεδομένων με αυτό το αίτημα.

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

Χρήση:Επιλογή βάσης δεδομένων

Από τεχνική άποψη, αυτό δεν είναι ένα αίτημα, αλλά ένας φορέας εκμετάλλευσης και δεν απαιτεί ένα σημείο με κόμμα στο τέλος.

Αναφέρει mysql Επιλέξτε την προεπιλεγμένη βάση δεδομένων για την τρέχουσα συνεδρία. Τώρα είμαστε έτοιμοι να δημιουργήσουμε τραπέζια και να κάνουμε άλλα πράγματα με τη βάση δεδομένων.

Ποιο είναι το τραπέζι στη βάση δεδομένων;

Μπορείτε να υποβάλετε έναν πίνακα στη βάση δεδομένων με τη φόρμαExcel αρχείο.

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

Δημιουργία πίνακα: Δημιουργία ενός πίνακα

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

Το παρακάτω ερώτημα θα δημιουργήσει έναν πίνακα με 2 ηχεία.

Δημιουργία χρηστών πίνακας (όνομα χρήστη varchar (20), create_date ημερομηνία).

Λάβετε υπόψη ότι μπορούμε να γράψουμε τα αιτήματά μας σε διάφορες γραμμές και με καρτέλες για τις περιπτώσεις.

Η πρώτη συμβολοσειρά είναι απλή. Δημιουργούμε απλά ένα τραπέζι με το όνομα "χρήστες". Στη συνέχεια σε παρένθεση, μέσω κόμματος, υπάρχει μια λίστα με όλες τις στήλες. Μετά από κάθε όνομα της στήλης, έχουμε τύπους πληροφοριών όπως varchar ή ημερομηνία.

Το VARCRAR (20) σημαίνει ότι η στήλη έχει τύπο συμβολοσειράς και μπορεί να είναι μέγιστο μήκος 20 χαρακτήρων. Η ημερομηνία είναι επίσης ένας τύπος πληροφοριών που χρησιμοποιείται για την αποθήκευση ημερομηνιών σε μια τέτοια μορφή: "GGYG - MM-DD".

ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ ( Πρωτεύων κλειδίh)

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

Δημιουργία χρηστών πίνακα (user_id int auto_incement πρωτεύον κλειδί, όνομα χρήστη varchar (20), create_date ημερομηνία);

Int. Κάνει έναν ακέραιο αριθμό 32 bit (για παράδειγμα, αριθμούς). ΑΥΤΟΜΑΤΗ ΑΥΞΗΣΗ. Δημιουργεί αυτόματα μια νέα τιμήΤαυτότητα Κάθε φορά που προσθέτουμε νέο αριθμό πληροφοριών. Αυτό δεν είναι απαραιτήτως, αλλά καθιστά ευκολότερη όλη τη διαδικασία.

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

Ας εκτελέσουμε ένα αίτημα:

Εμφάνιση πίνακες:Εμφάνιση όλων των πινάκων

Αυτό το αίτημα σας επιτρέπει να πάρετε μια λίστα με πίνακες που βρίσκονται στη βάση δεδομένων.

Εξηγώ:Εμφάνιση δομής πίνακα

Για να εμφανίσετε τη δομή του υπάρχοντος πίνακα, μπορείτε να χρησιμοποιήσετε αυτό το ερώτημα.

Οι στήλες εμφανίζονται με όλες τις ιδιότητες.

Πίνακας πτώσης:Διαγραφή πίνακα

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

Αλλάξτε τον πίνακα: Αλλαγή πίνακα

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

(Εάν διαγράψετε το τελευταίο βήμα του πίνακα, δημιουργήστε το ξανά για δοκιμές)

Προσθέτοντας μια στήλη

Αλλάξτε τους χρήστες πίνακα προσθέτουν email varchar (100) μετά το όνομα χρήστη.

Χάρη στην καλή αναγνωσιμότητα του SQL, νομίζω ότι δεν έχει νόημα να το εξηγήσω λεπτομερώς. Προσθέτουμε Νέα στήλη "Email" μετά το "όνομα χρήστη".

Διαγραφή ομιλητή

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

Επαναφέρετε μόνο μια απομακρυσμένη στήλη για περαιτέρω πειράματα.

Κάνοντας αλλαγές στη στήλη

Μερικές φορές μπορεί να θέλετε να κάνετε αλλαγές στις ιδιότητες της στήλης και δεν χρειάζεται να το διαγράψετε εντελώς για αυτό.

Αυτό το αίτημα μετονομάστηκε σε στήλη χρήστη στο "user_name" και άλλαξε τον τύπο του με VARCRAR (20) στο VARCHAR (30). Μια τέτοια αλλαγή δεν πρέπει να αλλάξει τα δεδομένα στον πίνακα.

ΕΙΣΑΓΕΤΕ: Προσθέτοντας πληροφορίες στον πίνακα

Ας προσθέσουμε κάποιες πληροφορίες στον πίνακα χρησιμοποιώντας το ακόλουθο αίτημα.

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

Σημειώστε ότι η πρώτη μηδενική τιμή για το κύριο πεδίο κλειδιού που ονομάζεται "user_id". Το κάνουμε αυτό για να δημιουργηθεί αυτόματα η ταυτότητα, καθώς η στήλη έχει μια αυτόματη ιδιότητα. Όταν οι πληροφορίες προστίθενται για πρώτη φορά το αναγνωριστικό θα είναι 1. επόμενο εύρος - 2, και ούτω καθεξής ...

ΕΝΑΛΛΑΚΤΙΚΗ ΕΠΙΛΟΓΗ

Υπάρχει μια άλλη επιλογή ερωτήματος για την προσθήκη μιας σειράς.

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

Η στήλη μπορεί να παραλειφθεί. Για παράδειγμα, δεν έχουμε εκχωρήσει μια τιμή για το "User_ID", το οποίο από προεπιλογή θα λάβει την τιμή Auto_increment. Εάν παραλείψετε τη στήλη με τον τύπο VARCHAR, θα προστεθεί η κενή συμβολοσειρά.

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

Εναλλακτική έκδοση 2.

Εδώ είναι μια άλλη επιλογή.

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

Last_insert_id ()

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

Τώρα ()

Τώρα ήρθε η ώρα να δείξετε πώς μπορείτε να χρησιμοποιήσετε τη λειτουργία MySQL σε ερωτήματα.

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

Σημειώστε ότι λάβαμε 1 προειδοποίηση, αλλά δεν δίνουμε προσοχή σε αυτό. Ο λόγος για αυτό είναι ότι τώρα () χρησιμεύει επίσης για την παροχή προσωρινών πληροφοριών.

Επιλέγω: Ανάγνωση δεδομένων από τον πίνακα

Εάν προσθέσουμε πληροφορίες στον πίνακα σημαίνει ότι θα ήταν λογικό να το μάθετε από εκεί για να διαβάσετε. Σε αυτό το αίτημα επιλογής θα μας βοηθήσει.

Παρακάτω είναι το πιο εύκολο δυνατό αίτημα επιλογής για να διαβάσετε τον πίνακα.

Σε αυτή την περίπτωση, ο αστερίσκος (*) σημαίνει ότι ζητήσαμε όλα τα πεδία από το τραπέζι. Εάν θέλετε μόνο ορισμένους ομιλητές, το αίτημα θα μοιάζει με αυτό.

ΚατάστασηΟπου

Τις περισσότερες φορές, δεν μας ενδιαφέρει όλες τις στήλες, αλλά μόνο σε μερικούς. Για παράδειγμα, ας υποθέσουμε ότι χρειαζόμαστε μόνο μια διεύθυνση ηλεκτρονικού ταχυδρομείου για τον χρήστη "nettuts".

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

Παρατηρήστε ότι ένα σημάδι χρησιμοποιείται για την ισότητα ίση με (\u003d) και όχι δύο, όπως στον προγραμματισμό.

Μπορείτε επίσης να χρησιμοποιήσετε συγκρίσεις.

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

Σημειώστε ότι Αριθμητικές τιμές δεν πρέπει να είναι σε εισαγωγικά.

Σε ()

Αυτό είναι χρήσιμο για δειγματοληψία για διάφορες τιμές.

Σαν

Σας επιτρέπει να κάνετε αιτήματα "wildcard"

Το εικονίδιο% χρησιμοποιείται ως "Wildcard". Δηλαδή, στη θέση του μπορεί να υπάρχει οτιδήποτε.

ΚατάστασηΤαξινόμηση κατά.

Εάν θέλετε να πάρετε το αποτέλεσμα σε μια παραγγελθείσα μορφή από οποιοδήποτε κριτήριο

Την προεπιλεγμένη ASC (περισσότερο από περισσότερα). Για να το αντιστρέψετε χρησιμοποιεί desc.

Όριο ... Offset ...

Μπορείτε να περιορίσετε τον αριθμό των επιτευχθέντων αποτελεσμάτων.

Το όριο 2 παίρνει μόνο τα πρώτα πρώτα αποτελέσματα. Όριο 1 μετατόπιση 2 παίρνει 1 αποτέλεσμα μετά το πρώτο 2ο. Όριο 2, 1 σημαίνει το ίδιο πράγμα (Μόνο προσέξτε πρώτα να αντισταθμιστεί και στη συνέχεια να περιορίσει).

Εκσυγχρονίζω: Να κάνετε αλλαγές στις πληροφορίες στον πίνακα

Αυτό το ερώτημα χρησιμοποιείται για να αλλάξει τις πληροφορίες στον πίνακα.

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

Μπορείτε επίσης να χρησιμοποιήσετε το όριο για να περιορίσετε τον αριθμό των γραμμών στις οποίες θέλετε να κάνετε αλλαγές.

Διαγράφω: Αφαίρεση πληροφοριών από τον πίνακα

Εκτός από την ενημέρωση, αυτό το ερώτημα χρησιμοποιείται με το πού:

Για να διαγράψετε το περιεχόμενο του πίνακα, μπορείτε να κάνετε ακριβώς όπως αυτό:

Διαγράψτε από τους χρήστες.

Αλλά είναι καλύτερα να χρησιμοποιήσετεΚολοβός.

Εκτός από τη διαγραφή, αυτό το αίτημα επαναφέρει επίσης ΑΥΤΟΜΑΤΗ ΑΥΞΗΣΗ. Και όταν προσθέτετε και πάλι σειρές, ο αριθμός θα ξεκινήσει από το μηδέν.Διαγράφω. Αυτό δεν συμβαίνει και η καταμέτρηση συνεχίζεται.

Απενεργοποιήστε τις πεζά τιμές και τις ειδικές λέξεις

Τιμές γραμμής

Πρέπει να αποσυνδεθούν ορισμένοι χαρακτήρες (Διαφυγή. ), Ή ίσως υπάρχουν προβλήματα.

Για να το κάνετε αυτό, χρησιμοποιήστε την πίσω κοπή(\).

Ειδικές λέξεις

Δεδομένου ότι στο MySQL Υπάρχουν πολλές ειδικές λέξεις (Επιλέξτε ή ενημέρωση. ) Για να αποφύγετε σφάλματα κατά τη χρήση τους, πρέπει να χρησιμοποιήσετε τα αποσπάσματα. Αλλά όχι τα συνηθισμένα αποσπάσματα, αλλά τέτοια(`).

Δηλαδή, θα πρέπει να προσθέσετε μια στήλη που ονομάζεται "διαγράφω. ", Πρέπει να γίνει όπως:

συμπέρασμα

Σας ευχαριστούμε για την ανάγνωση στο τέλος. Ελπίζω ότι αυτό το άρθρο ήταν χρήσιμο. Αυτό δεν είναι το τέλος! Συνεχίζεται:).

Δομημένη γλώσσα ερωτηματολογίου (δομημένη γλώσσα ερωτήματος) ή SQL- Πρόκειται για μια δηλωτική γλώσσα προγραμματισμού για χρήση σε οιονεί σχεσιακές βάσεις δεδομένων. Πολλά από τα αρχικά χαρακτηριστικά SQL ελήφθησαν για την αποστολή λογισμικού, αλλά οι τελευταίες επεκτάσεις SQL περιλαμβάνουν όλο και περισσότερη σχεσιακή άλγεβρα.
Το SQL δημιουργήθηκε αρχικά από την IBM, αλλά πολλοί κατασκευαστές ανέπτυξαν τις δικές τους διαλέκτους. Υιοθετήθηκε ως πρότυπο από το αμερικανικό Εθνικό Ινστιτούτο Προτύπων (ANSI) το 1986 και το ISO το 1987. Στο πρότυπο γλώσσας προγραμματισμού SQL, η Ansi δήλωσε ότι η επίσημη προφορά SQL είναι "ES KEW EL". Ωστόσο, πολλοί ειδικοί βάσεων δεδομένων χρησιμοποίησαν την προφορά "Skal" Sikvel ", η οποία αντανακλά το αρχικό όνομα της γλώσσας, η συνέχεια, η οποία έχει αλλάξει αργότερα λόγω της σύγκρουσης εμπορικών σημάτων και αντικειμένων από την IBM. Προγραμματισμός για αρχάριους.
Γλώσσα προγραμματισμού SQL Αναθεωρήθηκε το 1992 και αυτή η έκδοση είναι γνωστή ως SQL-92 V. Στη συνέχεια, αναθεωρήθηκε και πάλι το 1999 για να γίνει SQL: 1999 (γνωστός και 1999 (SQL3). Προγραμματισμός για ανδρείκελα. Το SQL 1999 υποστηρίζει αντικείμενα που δεν υποστηρίζονται προηγουμένως σε άλλες εκδόσεις, αλλά μόνο στο τέλος του 2001 μόνο αρκετά συστήματα διαχείρισης βάσεων δεδομένων υποστήριξαν την εφαρμογή SQL: 1999.
SQL, αν και ορίζεται ως ANSI και ISO, έχει πολλές παραλλαγές και επεκτάσεις, οι περισσότερες από τις οποίες έχουν τα δικά τους χαρακτηριστικά, όπως η εφαρμογή της Oracle PL / SQL Corporation ή η εφαρμογή της Sybase και της Microsoft που ονομάζεται "Transact-SQL", που μπορεί να συγχέει ένα ισχυρότερο με βασικά προγραμματισμό. Δεν είναι επίσης ασυνήθιστο για τις εμπορικές εφαρμογές να μειώσουν την υποστήριξη των κύριων χαρακτηριστικών του προτύπου, τέτοιων τύπων δεδομένων ως ημερομηνία και ώρα που προτιμούν κάποιο είδος δικής τους επιλογής. Ως αποτέλεσμα, σε αντίθεση με το ANSI C ή το ANSI Fortrans, το οποίο συνήθως μεταφέρεται από την πλατφόρμα πλατφόρμας χωρίς σοβαρές διαρθρωτικές αλλαγές, τα αιτήματα γλώσσας προγραμματισμού SQL μπορούν σπάνια να μεταφερθούν μεταξύ διαφορετικών συστημάτων βάσης δεδομένων χωρίς σημαντικές τροποποιήσεις. Οι περισσότεροι άνθρωποι στις βάσεις δεδομένων θεωρούν ότι αυτή η έλλειψη συμβατότητας είναι σκόπιμη προκειμένου να παράσχει σε κάθε προγραμματιστή με το δικό του σύστημα διαχείρισης βάσεων δεδομένων δεδομένων και να συνδέσει τον αγοραστή σε μια συγκεκριμένη βάση δεδομένων.
Όπως ακολουθεί το όνομα, η γλώσσα προγραμματισμού SQL έχει σχεδιαστεί για συγκεκριμένους, περιορισμένους στόχους για τα ερωτήματα δεδομένων που περιέχονται στη σχεσιακή βάση δεδομένων. Ως εκ τούτου, είναι ένα σύνολο οδηγιών γλώσσας προγραμματισμού για τη δημιουργία δειγμάτων δεδομένων, όχι μια διαδικαστική γλώσσα, όπως C ή βασική, τα οποία έχουν σχεδιαστεί για να λύσουν ένα πολύ ευρύτερο φάσμα προβλημάτων. Οι επεκτάσεις γλώσσας όπως το PL / SQL έχουν σχεδιαστεί για να επιλύουν αυτόν τον περιορισμό προσθέτοντας διαδικαστικά στοιχεία για SQL κατά την εξοικονόμηση πλεονεκτημάτων SQL. Μια άλλη προσέγγιση είναι ότι το SQL επιτρέπεται να ενσωματώσει εντολές προγραμματισμού γλώσσας διαδικασίας και να αλληλεπιδράσει με τη βάση δεδομένων. Για παράδειγμα, η Oracle και άλλα υποστηρίζουν τη γλώσσα Java στη βάση δεδομένων, ενώ η PostgreSQL σας επιτρέπει να γράφετε λειτουργίες στο Perl, TCL ή C.
Ένα αστείο για το SQL: "Το SQL δεν είναι ούτε δομημένο ούτε η γλώσσα". Η ουσία του αστείου είναι ότι η SQL δεν είναι γλώσσα του Turing. .

Επιλέξτε * από t
C1. C2.
1 ΕΝΑ.
2 ΣΙ.
C1. C2.
1 ΕΝΑ.
2 ΣΙ.
Επιλέξτε C1 από t
C1.
1
2
C1. C2.
1 ΕΝΑ.
2 ΣΙ.
Επιλέξτε * από t όπου c1 \u003d 1
C1. C2.
1 ΕΝΑ.

Δεδομένου του πίνακα t, το επιλεγμένο * από το αίτημα t θα εμφανίσει όλα τα στοιχεία όλων των σειρών του πίνακα.
Από τον ίδιο πίνακα, το επιλεγμένο C1 από το αίτημα t θα εμφανίσει στοιχεία από τη στήλη C1 όλων των σειρών του πίνακα.
Από τον ίδιο πίνακα, το Select * από t όπου το ερώτημα C1 \u003d 1 θα εμφανίσει όλα τα στοιχεία όλων των γραμμών, όπου η τιμή της στήλης C1 είναι "1".

SQL Λέξεις-κλειδιά

Οι λέξεις SQL χωρίζονται σε μια σειρά ομάδων.

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

  • Η επιλογή είναι μία από τις πιο συχνά χρησιμοποιούμενες εντολές DML και επιτρέπει στον χρήστη να ζητήσει ένα αίτημα ως περιγραφή του επιθυμητού αποτελέσματος με τη μορφή ενός σετ. Στο Aposite, δεν υποδεικνύεται πώς πρέπει να εντοπιστούν τα αποτελέσματα - το αίτημα για μια μορφή μορφής, η οποία μπορεί να εκτελεστεί στη βάση δεδομένων, είναι η λειτουργία του συστήματος βάσης δεδομένων, καλείται πιο συγκεκριμένα ο βελτιστοποιητής.
  • Το ένθετο χρησιμοποιείται για να προσθέσετε συμβολοσειρές (επίσημη κλήση) για τον υπάρχοντα πίνακα.
  • Η ενημέρωση χρησιμοποιείται για την αλλαγή των τιμών δεδομένων στην υπάρχουσα σειρά του πίνακα.
  • Διαγράψτε τον ορισμό των υφιστάμενων γραμμών που θα διαγραφούν από τον πίνακα.

Τρεις άλλοι Λέξεις-κλειδιάΑ, μπορούμε να πούμε ότι εμπίπτουν στην ομάδα DML:

  • Ξεκινήστε την εργασία (ή έναρξη συναλλαγής, ανάλογα με τη διάλεκτο SQL) μπορεί να χρησιμοποιηθεί για να επισημάνετε την έναρξη της συναλλαγής βάσης δεδομένων που είναι πλήρως ή δεν πληρούται καθόλου.
  • Η διαπράξει ότι αποθηκεύονται όλες οι αλλαγές δεδομένων μετά από πράξεις εκτέλεσης.
  • Η Rollback καθορίζει ότι όλες οι αλλαγές δεδομένων μετά την τελευταία στερέωση ή την επαναφορά πρέπει να καταστραφούν, μέχρι τη στιγμή που καταγράφηκε στη βάση δεδομένων ως "επαναφορά".

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

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

  • Δημιουργία ορίζουν αντικείμενα (για παράδειγμα, πίνακες), οι οποίες θα δημιουργηθούν στη βάση δεδομένων.
  • Η πτώση καθορίζει ποια υπάρχοντα αντικείμενα στη βάση δεδομένων θα αφαιρεθούν, κατά κανόνα, ανεπανόρθωτα.
  • Ορισμένα συστήματα βάσεων δεδομένων υποστηρίζουν επίσης Αλλάζω.Το οποίο επιτρέπει στον χρήστη να αλλάξει το υπάρχον αντικείμενο με διαφορετικούς τρόπους - για παράδειγμα, μπορείτε να προσθέσετε στήλες σε έναν υπάρχοντα πίνακα.

Η τρίτη ομάδα λέξεων-κλειδιών SQL είναι Γλώσσα ελέγχου δεδομένων ή DCL (γλώσσα ελέγχου δεδομένων). Δεξαμενή Υπεύθυνος για τα δικαιώματα πρόσβασης των δεδομένων και επιτρέπει στον χρήστη να παρακολουθεί ποιος έχει πρόσβαση σε προβολή ή χειρισμό δεδομένων στη βάση δεδομένων. Εδώ είναι δύο κύριες λέξεις-κλειδιά:

  • Grant - Επιτρέπει στον χρήστη να εκτελεί λειτουργίες
  • Ανακοινώστε - διαγράφει ή περιορίζει τη δυνατότητα να εκτελεί λειτουργίες στον χρήστη.

Συστήματα βάσεων δεδομένων χρησιμοποιώντας SQL

  • Διαχωρίστε.
  • Mysql
  • Μαντείο
  • Postgresql
  • Sql server

Πώς να γίνει επαγγελματίας επαγγελματίας ανάπτυξης και να αρχίσετε να κερδίζετε χρήματα; Φτηνά ημερολόγια βίντεο με ενημερωτική εισαγωγή.

Συνεχίζοντας το θέμα:
συσκευές

Γνωρίστε το online παιχνίδι Invaders Galaxy (Galaxy Invaders) - η σύγχρονη εκδοχή του καλύτερου παιχνιδιού ρετρό του είδους του Space Invaders (Space Invaders). Αυτό είναι ένα παλιό καλό ...