Skip to main content

Εισαγωγή στις Θεμελιώδεις αρχές SQL

ΠΛΗ 11: Ερώτημα3 SQL ΕΑΠ (Απρίλιος 2024)

ΠΛΗ 11: Ερώτημα3 SQL ΕΑΠ (Απρίλιος 2024)
Anonim

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

Σχετικά με τη SQL

Η σωστή προφορά της SQL είναι ένα αμφιλεγόμενο ζήτημα μέσα στην κοινότητα της βάσης δεδομένων. Στο πρότυπο SQL, το Αμερικανικό Εθνικό Ινστιτούτο Προτύπων δήλωσε ότι η επίσημη προφορά είναι "es queue el." Ωστόσο, πολλοί επαγγελματίες της βάσης δεδομένων έχουν πάρει την προφορά slang "συνέχεια". Η επιλογή είναι δική σου.

Η SQL έρχεται σε πολλές γεύσεις. Οι βάσεις δεδομένων της Oracle χρησιμοποιούν το ιδιόκτητο PL / SQL. Ο Microsoft SQL Server χρησιμοποιεί το Transact-SQL. Όλες οι παραλλαγές βασίζονται στο βιομηχανικό πρότυπο ANSI SQL. Αυτή η εισαγωγή χρησιμοποιεί εντολές SQL που είναι συμβατές με ANSI και λειτουργούν σε οποιοδήποτε σύγχρονο σύστημα σχεσιακής βάσης δεδομένων.

DDL και DML

Οι εντολές SQL μπορούν να χωριστούν σε δύο κύριες υπο-γλώσσες. Η Γλώσσα ορισμού δεδομένων (DDL) περιέχει τις εντολές που χρησιμοποιούνται για τη δημιουργία και την καταστροφή βάσεων δεδομένων και αντικειμένων βάσης δεδομένων. Αφού οριστεί η δομή βάσης δεδομένων με DDL, οι διαχειριστές βάσεων δεδομένων και οι χρήστες μπορούν να χρησιμοποιήσουν τη Γλώσσα Χειρισμού Δεδομένων (DML) για την εισαγωγή, την ανάκτηση και την τροποποίηση των δεδομένων που περιέχονται σε αυτήν.

Εντολές γλωσσικής εντολής ορισμού δεδομένων

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

ΔΗΜΙΟΥΡΓΩ.Η εγκατάσταση ενός συστήματος διαχείρισης βάσεων δεδομένων σε έναν υπολογιστή σας επιτρέπει να δημιουργείτε και να διαχειρίζεστε πολλές ανεξάρτητες βάσεις δεδομένων. Για παράδειγμα, μπορεί να θέλετε να διατηρήσετε μια βάση δεδομένων με τις επαφές των πελατών για το τμήμα πωλήσεών σας και μια βάση δεδομένων προσωπικού για το τμήμα HR. Η εντολή CREATE χρησιμοποιείται για τη δημιουργία κάθε μιας από αυτές τις βάσεις δεδομένων στην πλατφόρμα σας. Για παράδειγμα, η εντολή:

Δημιουργία υπαλλήλων DATABASE

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

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ personal_info (first_name char (20) δεν είναι null, last_name char (20) δεν είναι null, employee_id int δεν είναι null)

δημιουργεί έναν πίνακα με τίτλο "personal_info" στην τρέχουσα βάση δεδομένων. Στο παράδειγμα, ο πίνακας περιέχει τρία χαρακτηριστικά: first_name, last_name, και employee_id καθώς και μερικές πρόσθετες πληροφορίες.

ΧΡΗΣΗ.Η εντολή USE σάς επιτρέπει να καθορίσετε τη βάση δεδομένων με την οποία θέλετε να εργάζεστε στο ΣΔΒΔ σας. Για παράδειγμα, αν εργάζεστε αυτήν τη στιγμή στη βάση δεδομένων πωλήσεων και θέλετε να εκδώσετε ορισμένες εντολές που θα επηρεάσουν τη βάση δεδομένων των εργαζομένων, προφέρετε τις με την ακόλουθη εντολή SQL:

USE εργαζομένων

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

ΑΛΛΑΖΩ.Μόλις δημιουργήσετε έναν πίνακα μέσα σε μια βάση δεδομένων, μπορεί να θέλετε να τροποποιήσετε τον ορισμό του. Η εντολή ALTER σάς επιτρέπει να κάνετε αλλαγές στη δομή ενός πίνακα χωρίς να το διαγράψετε και να το ξαναδημιουργήσετε. Ρίξτε μια ματιά στην ακόλουθη εντολή:

ALTER ΠΙΝΑΚΑΣ personal_info ADD μισθός χρήματα null

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

ΠΤΩΣΗ.Η τελική εντολή της Γλώσσας ορισμού δεδομένων, DROP, μας επιτρέπει να αφαιρέσουμε ολόκληρα αντικείμενα βάσης δεδομένων από το ΣΔΒΔ μας. Για παράδειγμα, αν θέλουμε να καταργήσουμε οριστικά τον πίνακα personal_info που δημιουργήσαμε, θα χρησιμοποιήσαμε την ακόλουθη εντολή:

ΠΙΝΑΚΑΣ DROP personal_info

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

Υπαλλήλους DROP DATABASE

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

Εντολές γλώσσας χειρισμού δεδομένων

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

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

ΕΙΣΑΓΩΓΕΤΕ ΣΤΟ personal_infoτιμές "bart", "simpson", 12345, $ 45000)

Σημειώστε ότι υπάρχουν τέσσερις τιμές που καθορίζονται για την εγγραφή. Αυτά αντιστοιχούν στα χαρακτηριστικά πίνακα με τη σειρά που ορίζονται: first_name, last_name, employee_id και pay.

ΕΠΙΛΕΓΩ.Η εντολή SELECT είναι η πιο συχνά χρησιμοποιούμενη εντολή στην SQL. Επιτρέπει στους χρήστες της βάσης δεδομένων να ανακτούν τις συγκεκριμένες πληροφορίες που επιθυμούν από μια επιχειρησιακή βάση δεδομένων. Ρίξτε μια ματιά σε μερικά παραδείγματα, και πάλι χρησιμοποιώντας τον πίνακα personal_info από τη βάση δεδομένων των εργαζομένων.

Η παρακάτω εντολή ανακτά όλες τις πληροφορίες που περιέχονται στον πίνακα personal_info. Σημειώστε ότι ο αστερίσκος χρησιμοποιείται ως μπαλαντέρ στην SQL. Αυτό σημαίνει κυριολεκτικά "Επιλογή όλων από τον πίνακα προσωπικού_πληροφοριών".

SELECT *FROM personal_info

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

SELECT last_nameFROM personal_info

Η ρήτρα WHERE μπορεί να χρησιμοποιηθεί για τον περιορισμό των εγγραφών που ανακτώνται σε αυτά που πληρούν συγκεκριμένα κριτήρια. Ο Διευθύνων Σύμβουλος μπορεί να ενδιαφέρεται για την αναθεώρηση των αρχείων προσωπικού όλων των εργαζομένων με υψηλό επίπεδο αμοιβής. Η ακόλουθη εντολή ανακτά όλα τα δεδομένα που περιέχονται στο personal_info για εγγραφές που έχουν αξία μισθού μεγαλύτερη από $ 50.000:

SELECT *FROM personal_infoWHERE μισθός> $ 50000

ΕΚΣΥΓΧΡΟΝΙΖΩ.Η εντολή UPDATE μπορεί να χρησιμοποιηθεί για να τροποποιήσει τις πληροφορίες που περιέχονται σε έναν πίνακα, είτε χύμα είτε μεμονωμένα. Ας υποθέσουμε ότι η εταιρεία δίνει σε όλους τους υπαλλήλους τριπλασιασμό του κόστους ζωής τους κατά 3% ετησίως. Η ακόλουθη εντολή SQL θα μπορούσε να χρησιμοποιηθεί για να εφαρμοστεί γρήγορα σε όλους τους υπαλλήλους που είναι αποθηκευμένοι στη βάση δεδομένων:

UPDATE personal_infoSET μισθός = μισθός * 1.03

Όταν ο νέος υπάλληλος Bart Simpson επιδεικνύει την απόδοση πέρα ​​από το χρέος, η διοίκηση επιθυμεί να αναγνωρίσει τα αστρικά του επιτεύγματα με αύξηση $ 5.000. Η ρήτρα WHERE θα μπορούσε να χρησιμοποιηθεί για να ξεχωρίσει το Bart για αυτό το raise:

UPDATE personal_infoSET μισθός = μισθός + $ 5000WHERE employee_id = 12345

ΔΙΑΓΡΑΦΩ.Τέλος, ας ρίξουμε μια ματιά στην εντολή DELETE. Θα διαπιστώσετε ότι η σύνταξη αυτής της εντολής είναι παρόμοια με αυτή των άλλων εντολών DML. Δυστυχώς, η πιο πρόσφατη έκθεση εταιρικών κερδών δεν ανταποκρίθηκε αρκετά στις προσδοκίες και ο φτωχός Bart απολύθηκε. Η εντολή DELETE με ρήτρα WHERE μπορεί να χρησιμοποιηθεί για την κατάργηση της εγγραφής από τον πίνακα personal_info:

DELETE FROM personal_infoWHERE employee_id = 12345

JOINs

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

Για να διερευνήσετε τη χρήση μιας βασικής λειτουργίας JOIN για να συνδυάσετε δεδομένα από δύο πίνακες, συνεχίστε με το παράδειγμα χρησιμοποιώντας τον πίνακα PERSONAL_INFO και προσθέστε έναν πρόσθετο πίνακα στο μείγμα. Ας υποθέσουμε ότι έχετε έναν πίνακα που ονομάζεται DISCIPLINARY_ACTION που δημιουργήθηκε με την ακόλουθη πρόταση:

CREATE TABLE πειθαρχική_δράση (action_id int δεν είναι null, employee_id int δεν είναι null, σχόλια char (500))

Ο πίνακας αυτός περιέχει τα αποτελέσματα πειθαρχικών ενεργειών στους υπαλλήλους της εταιρείας. Θα παρατηρήσετε ότι δεν περιέχει πληροφορίες σχετικά με τον υπάλληλο εκτός από τον αριθμό του υπαλλήλου. Είναι εύκολο να φανταστεί κανείς πολλά σενάρια όπου μπορεί να θέλετε να συνδυάσετε πληροφορίες από τους πίνακες DISCIPLINARY_ACTION και PERSONAL_INFO.

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

ΕΠΙΛΟΓΗ προσωπικής_παρόμενης_ονομασίας_φρώτου_νύματος, προσωπικής_αναφοράς.χρήστης_χρήστης, πειθαρχικής_εξόδουΑΠΟ personal_info, πειθαρχική δράσηWHERE personal_info.employee_id = disciplinary_action.employee_idΚΑΙ personal_info.salary> 40000

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