Ms sql server που γράφει ερωτήματα. Εκτέλεση ερωτημάτων SQL στο Management Studio. Προσθήκη πεδίου Μέσου υπολογισμού

Εκφράσεις πίνακαονομάζονται υποερωτήματα που χρησιμοποιούνται όπου αναμένεται η παρουσία πίνακα. Υπάρχουν δύο τύποι εκφράσεων πίνακα:

    παράγωγοι πίνακες?

    γενικευμένες εκφράσεις πίνακα.

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

Παράγωγοι πίνακες

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

ΧΡΗΣΗ SampleDb; SELECT MONTH(EnterDate) as enter_month FROM Works_on GROUP BY enter_month;

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

Μήνυμα 207, Επίπεδο 16, Κατάσταση 1, Γραμμή 5 Μη έγκυρο όνομα στήλης "enter_month". (Μήνυμα 207: Επίπεδο 16, Κατάσταση 1, Γραμμή 5 Μη έγκυρο όνομα στήλης enter_month)

Ο λόγος για το σφάλμα είναι ότι η ρήτρα GROUP BY υποβάλλεται σε επεξεργασία πριν από την επεξεργασία της αντίστοιχης λίστας της πρότασης SELECT και το ψευδώνυμο στήλης enter_month είναι άγνωστο κατά την επεξεργασία της ομάδας.

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

ΧΡΗΣΗ SampleDb; SELECT enter_month FROM (SELECT MONTH(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

Το αποτέλεσμα αυτού του ερωτήματος θα είναι το εξής:

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

Το αποτέλεσμα αυτής της ερώτησης:

Γενικές εκφράσεις πίνακα

Κοινή έκφραση πίνακα (OTB)είναι μια έκφραση πίνακα με όνομα που υποστηρίζεται από τη γλώσσα Transact-SQL. Οι κοινές εκφράσεις πίνακα χρησιμοποιούνται στους ακόλουθους δύο τύπους ερωτημάτων:

    μη αναδρομικό?

    αναδρομικός.

Αυτοί οι δύο τύποι αιτημάτων συζητούνται στις επόμενες ενότητες.

OTB και μη αναδρομικά ερωτήματα

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

ΧΡΗΣΗ AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue)HederSaderOHE)FROM 005 ")/2,5;

Το ερώτημα σε αυτό το παράδειγμα επιλέγει παραγγελίες των οποίων οι συνολικοί φόροι (TotalDue) είναι μεγαλύτεροι από τον μέσο όρο όλων των φόρων και των οποίων οι χρεώσεις ναύλων (Freight) είναι μεγαλύτεροι από το 40% των μέσων φόρων. Η κύρια ιδιότητα αυτού του ερωτήματος είναι το μήκος του, καθώς το υποερώτημα πρέπει να γραφτεί δύο φορές. Ενας από πιθανούς τρόπουςη μείωση του μεγέθους της κατασκευής ερωτήματος θα ήταν η δημιουργία μιας προβολής που περιέχει ένα υποερώτημα. Αλλά αυτή η λύση είναι λίγο περίπλοκη επειδή απαιτεί τη δημιουργία μιας προβολής και στη συνέχεια τη διαγραφή της μετά την ολοκλήρωση της εκτέλεσης του ερωτήματος. Μια καλύτερη προσέγγιση θα ήταν η δημιουργία ενός OTB. Το παρακάτω παράδειγμα δείχνει τη χρήση του μη αναδρομικού OTB, το οποίο συντομεύει τον παραπάνω ορισμό του ερωτήματος:

ΧΡΗΣΗ AdventureWorks2012; WITH price_calc(year_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE ΟΠΟΥΣΥΝΟΛΙΚΟΣΥΝΟΛΙΚΟΣΧΩΡΙΣΜΟΣ τιμή ROM_cal γ ) /2,5;

Η σύνταξη του όρου WITH σε μη αναδρομικά ερωτήματα είναι η εξής:

Η παράμετρος cte_name αντιπροσωπεύει το όνομα OTB που ορίζει τον πίνακα που προκύπτει και η παράμετρος στήλη_list αντιπροσωπεύει τη λίστα στηλών της παράστασης πίνακα. (Στο παραπάνω παράδειγμα, το OTB ονομάζεται price_calc και έχει μία στήλη, έτος_2005.) Η παράμετρος inner_query αντιπροσωπεύει μια δήλωση SELECT που καθορίζει το σύνολο αποτελεσμάτων της αντίστοιχης παράστασης πίνακα. Η καθορισμένη έκφραση πίνακα μπορεί στη συνέχεια να χρησιμοποιηθεί στο outer_query. (Το εξωτερικό ερώτημα στο παραπάνω παράδειγμα χρησιμοποιεί το OTB price_calc και τη στήλη year_2005 για να απλοποιήσει το διπλά ένθετο ερώτημα.)

OTB και αναδρομικά ερωτήματα

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

Οι παράμετροι cte_name και στήλη_list έχουν την ίδια σημασία όπως στο OTB για μη αναδρομικά ερωτήματα. Το σώμα μιας πρότασης WITH αποτελείται από δύο ερωτήματα που συνδυάζονται από τον τελεστή ΕΝΩΣΗ ΟΛΩΝ. Το πρώτο ερώτημα καλείται μόνο μία φορά και αρχίζει να συσσωρεύει το αποτέλεσμα της αναδρομής. Ο πρώτος τελεστής του τελεστή UNION ALL δεν αναφέρεται στο OTB. Αυτό το ερώτημα ονομάζεται ερώτημα αναφοράς ή πηγή.

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

Ο χειριστής UNION ALL συνδέει το συσσωρευμένο αυτή τη στιγμήσειρές, καθώς και πρόσθετες σειρές που προστέθηκαν από την τρέχουσα κλήση στο αναδρομικό μέλος. (Η παρουσία του τελεστή UNION ALL σημαίνει ότι οι διπλές σειρές δεν θα αφαιρεθούν από το αποτέλεσμα.)

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

Για να δείξουμε την αναδρομική μορφή του OTB, χρησιμοποιούμε τον πίνακα Αεροπλάνο που ορίζεται και συμπληρώνεται με τον κωδικό που φαίνεται στο παρακάτω παράδειγμα:

ΧΡΗΣΗ SampleDb; CREATE TABLE Airplane(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); INSERT INTO Airplane VALUES ("Airplane", "Fuselage", 1, 10); INSERT INTO Airplane VALUES ("Airplane", "Wings", 1, 11); INSERT INTO Airplane VALUES ("Airplane", "Tail", 1, 12); INSERT INTO Airplane VALUES ("Fuselage", "Salon", 1, 13); INSERT INTO Airplane VALUES ("Fuselage", "Cockpit", 1, 14); INSERT INTO Airplane VALUES ("Fuselage", "Nose",1, 15); INSERT INTO Airplane VALUES ("Καμπίνα", NULL, 1,13). INSERT INTO Airplane VALUES ("Cockpit", NULL, 1, 14). INSERT INTO Airplane VALUES ("Nose", NULL, 1, 15). INSERT INTO Airplane VALUES ("Wings", NULL,2, 11). INSERT INTO Airplane VALUES ("Tail", NULL, 1, 12);

Ο πίνακας αεροπλάνο έχει τέσσερις στήλες. Η στήλη ContainingAssembly προσδιορίζει το συγκρότημα και η στήλη ContainedAssembly προσδιορίζει τα μέρη (ένα προς ένα) που απαρτίζουν το αντίστοιχο συγκρότημα. Το παρακάτω σχήμα δείχνει μια γραφική απεικόνιση ενός πιθανού τύπου αεροσκάφους και των εξαρτημάτων του:

Ο πίνακας αεροπλάνου αποτελείται από τις ακόλουθες 11 σειρές:

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

ΧΡΗΣΗ SampleDb; ΜΕ list_of_parts(συγκρότημα1, ποσότητα, κόστος) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM Airplane WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityAssembly, a.QuantityASTContained(2Contained. ) FROM list_of_parts l, Airplane a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Part", ποσότητα "Quantity", κόστος "Price" FROM list_of_parts;

Ο όρος WITH ορίζει μια λίστα OTB με το όνομα list_of_parts, που αποτελείται από τρεις στήλες: assembly1, quantity και cost. Η πρώτη πρόταση SELECT στο παράδειγμα καλείται μόνο μία φορά για να αποθηκεύσει τα αποτελέσματα του πρώτου βήματος της διαδικασίας αναδρομής. Η δήλωση SELECT στην τελευταία γραμμή του παραδείγματος εμφανίζει το ακόλουθο αποτέλεσμα.

Η SQL ή Structured Query Language είναι μια γλώσσα που χρησιμοποιείται για τη διαχείριση δεδομένων σε ένα σύστημα σχεσιακής βάσης δεδομένων (RDBMS). Αυτό το άρθρο θα καλύψει τις κοινές χρήσεις Εντολές SQL, που κάθε προγραμματιστής πρέπει να γνωρίζει. Αυτό το υλικό είναι ιδανικό για όσους θέλουν να βελτιώσουν τις γνώσεις τους για την SQL πριν από μια συνέντευξη για δουλειά. Για να το κάνετε αυτό, δείτε τα παραδείγματα που δίνονται στο άρθρο και θυμηθείτε ότι μελετήσατε τις βάσεις δεδομένων σε ζευγάρια.

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

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

Δημιουργήστε μια βάση δεδομένων για να δείξετε πώς λειτουργούν οι ομάδες. Για να εργαστείτε, θα χρειαστεί να κάνετε λήψη δύο αρχείων: DLL.sql και InsertStatements.sql. Μετά από αυτό, ανοίξτε ένα τερματικό και συνδεθείτε στην κονσόλα MySQL χρησιμοποιώντας την ακόλουθη εντολή (το άρθρο υποθέτει ότι η MySQL είναι ήδη εγκατεστημένη στο σύστημα):

Mysql -u root -p

Στη συνέχεια εισάγετε τον κωδικό πρόσβασής σας.

Εκτελέστε την ακόλουθη εντολή. Ας ονομάσουμε τη βάση δεδομένων «πανεπιστήμιο»:

ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ πανεπιστήμιο. USE πανεπιστήμιο; ΠΗΓΗ ; ΠΗΓΗ

Εντολές για εργασία με βάσεις δεδομένων

1. Προβολή διαθέσιμων βάσεων δεδομένων

ΕΜΦΑΝΙΣΗ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ.

2. Δημιουργήστε μια νέα βάση δεδομένων

ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ.

3. Επιλογή βάσης δεδομένων για χρήση

ΧΡΗΣΗ ;

4. Εισαγάγετε εντολές SQL από αρχείο .sql

ΠΗΓΗ ;

5. Διαγράψτε τη βάση δεδομένων

ΑΠΟΣΤΟΛΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ ;

Εργασία με τραπέζια

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

ΕΜΦΑΝΙΣΤΕ ΠΙΝΑΚΕΣ.

7. Δημιουργήστε έναν νέο πίνακα

ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΟΥ ( , , ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ ( ), ΞΕΝΟ ΚΛΕΙΔΙ ( ) ΒΙΒΛΙΟΓΡΑΦΙΚΕΣ ΑΝΑΦΟΡΕΣ ());

Περιορισμοί ακεραιότητας κατά τη χρήση του CREATE TABLE

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

  • ένα κελί πίνακα δεν μπορεί να έχει τιμή NULL.
  • πρωτεύον κλειδί - PRIMARY KEY (col_name1, col_name2, ...) ;
  • ξένο κλειδί - ΞΕΝΟ ΚΛΕΙΔΙ (col_namex1, …, col_namexn) ΑΝΑΦΟΡΕΣ όνομα_πίνακα(col_namex1, …, col_namexn) .

Μπορείτε να καθορίσετε περισσότερα από ένα πρωτεύοντα κλειδιά. Σε αυτήν την περίπτωση, θα λάβετε ένα σύνθετο πρωτεύον κλειδί.

Παράδειγμα

Δημιουργήστε έναν πίνακα "instructor":

Εκπαιδευτής CREATE TABLE (ID CHAR(5), όνομα VARCHAR(20) NOT NULL, dept_name VARCHAR(20), μισθός NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCES Department(dept_name));

8. Πληροφορίες πίνακα

Μπορείτε να προβάλετε διάφορες πληροφορίες (τύπος τιμής, κλειδί ή όχι) σχετικά με τις στήλες του πίνακα με την ακόλουθη εντολή:

ΠΕΡΙΓΡΑΦΩ ;

9. Προσθήκη δεδομένων στον πίνακα

ΕΙΣΑΓΩΓΗ ΣΤΟ (, , , ...) ΑΞΙΕΣ ( , , , …);

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΑΞΙΕΣ ( , , , …);

10. Ενημέρωση δεδομένων πίνακα

ΕΚΣΥΓΧΡΟΝΙΖΩ ΣΕΙΡΑ = , = , ... ΟΠΟΥ ;

11. Αφαίρεση όλων των δεδομένων από τον πίνακα

ΔΙΑΓΡΑΦΗ ΑΠΟ ;

12. Διαγράψτε έναν πίνακα

ΠΡΩΤΟΤΡΑΠΕΖΙ ;

Εντολές για τη δημιουργία ερωτημάτων

13. ΕΠΙΛΟΓΗ

Το SELECT χρησιμοποιείται για την ανάκτηση δεδομένων από έναν συγκεκριμένο πίνακα:

ΕΠΙΛΕΓΩ , , … ΑΠΟ ;

Η ακόλουθη εντολή μπορεί να εμφανίσει όλα τα δεδομένα από τον πίνακα:

ΕΠΙΛΟΓΗ * ΑΠΟ ;

14. ΕΠΙΛΕΞΤΕ DISTINCT

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

ΕΠΙΛΕΞΤΕ ΔΙΑΚΡΙΤΗ , , … ΑΠΟ ;

15. ΠΟΥ

Μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί WHERE στο SELECT για να καθορίσετε συνθήκες σε ένα ερώτημα:

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΟΠΟΥ ;

Οι ακόλουθες προϋποθέσεις μπορούν να καθοριστούν στο αίτημα:

  • Σύγκριση κειμένου.
  • Σύγκριση αριθμητικών τιμών.
  • λογικοί τελεστές ΚΑΙ (και), Ή (ή) και ΟΧΙ (άρνηση).

Παράδειγμα

Δοκιμάστε τις παρακάτω εντολές. Δώστε προσοχή στις προϋποθέσεις που καθορίζονται στο ΠΟΥ:

ΕΠΙΛΕΞΤΕ * ΑΠΟ μάθημα WHERE dept_name='Συν. Sci.'; ΕΠΙΛΕΞΤΕ * ΑΠΟ μάθημα WHERE μονάδες>3; SELECT * FROM course WHERE dept_name="Comp. Sci." ΚΑΙ μόρια>3;

16. ΟΜΑΔΑ ΑΠΟ

Ο τελεστής GROUP BY χρησιμοποιείται συχνά με αθροιστικές συναρτήσειςόπως COUNT, MAX, MIN, SUM και AVG για ομαδοποίηση τιμών εξόδου.

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΟΜΑΔΑ ΑΠΟ ;

Παράδειγμα

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

ΕΠΙΛΕΞΤΕ COUNT(αναγνωριστικό_μαθήματος), όνομα_τμήματος ΑΠΟ ΟΜΑΔΑ μαθήματος ΑΝΑ όνομα_τμήματος.

17. ΕΧΟΝΤΑΣ

Η λέξη-κλειδί HAVING προστέθηκε στην SQL επειδή το WHERE δεν μπορεί να χρησιμοποιηθεί με συγκεντρωτικές συναρτήσεις.

ΕΠΙΛΕΓΩ , , ... ΑΠΟ ΟΜΑΔΑ ΑΠΟ ΕΧΟΝΤΑΣ

Παράδειγμα

Ας εμφανίσουμε μια λίστα με σχολές που έχουν περισσότερα από ένα μαθήματα:

SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;

18. ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ

ORDER BY χρησιμοποιείται για την ταξινόμηση των αποτελεσμάτων των ερωτημάτων σε φθίνουσα ή αύξουσα σειρά. Το ORDER BY θα ταξινομηθεί με αύξουσα σειρά, εκτός εάν έχει καθοριστεί ASC ή DESC.

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ , , …ASC|DESC;

Παράδειγμα

Ας εμφανίσουμε μια λίστα μαθημάτων με αύξουσα και φθίνουσα σειρά μονάδων:

ΕΠΙΛΟΓΗ * ΑΠΟ ΜΑΘΗΜΑ ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ πιστωτικές μονάδες. ΕΠΙΛΟΓΗ * ΑΠΟ ΤΑΞΗ μαθημάτων ΚΑΤΑ μόρια DESC;

19. ΜΕΤΑΞΥ

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

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΟΠΟΥ ΜΕΤΑΞΥ ΚΑΙ ;

Παράδειγμα

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

ΕΠΙΛΕΞΤΕ * ΑΠΟ τον εκπαιδευτή ΟΠΟΥ μισθός Μεταξύ 50000 ΚΑΙ 100000.

20. LIKE

Ο τελεστής LIKE χρησιμοποιείται στο WHERE για να καθορίσει ένα μοτίβο αναζήτησης για παρόμοια τιμή.

Υπάρχουν δύο δωρεάν χειριστές που χρησιμοποιούνται στο LIKE:

  • % (κανένας, ένας ή περισσότεροι χαρακτήρες).
  • _ (ένας χαρακτήρας).
ΕΠΙΛΕΓΩ , , … ΑΠΟ ΟΠΟΥ ΑΡΕΣΕΙ ;

Παράδειγμα

Ας εμφανίσουμε μια λίστα μαθημάτων των οποίων τα ονόματα περιέχουν "to" και μια λίστα μαθημάτων των οποίων τα ονόματα αρχίζουν με "CS-":

ΕΠΙΛΟΓΗ * ΑΠΟ ΤΟ ΜΑΘΗΜΑ ΟΠΟΥ τίτλος LIKE '%to%'; SELECT * FROM course WHERE course_id LIKE "CS-___";

21. ΕΙΣ

Χρησιμοποιώντας το IN μπορείτε να καθορίσετε πολλαπλές τιμές για τον όρο WHERE:

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΟΠΟΥ ΣΕ ( , , …);

Παράδειγμα

Ας εμφανίσουμε μια λίστα φοιτητών από ειδικότητες Comp. Επιστήμη, Φυσική και Ηλεκτρ. Eng.:

SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. ΕΓΓΡΑΦΕΙΤΕ

Το JOIN χρησιμοποιείται για τη σύνδεση δύο ή περισσότερων πινάκων χρησιμοποιώντας κοινά χαρακτηριστικά μέσα σε αυτούς. Η παρακάτω εικόνα δείχνει διάφορους τρόπουςενώνεται στην SQL. Σημειώστε τη διαφορά μεταξύ μιας αριστερής εξωτερικής ένωσης και μιας δεξιάς εξωτερικής ένωσης:

ΕΠΙΛΕΓΩ , , … ΑΠΟ ΣΥΜΜΕΤΟΧΗ ΕΠΙ = ;

Παράδειγμα 1

Θα εμφανίσουμε μια λίστα με όλα τα μαθήματα και τις σχετικές πληροφορίες για τις σχολές:

ΕΠΙΛΟΓΗ * ΑΠΟ ΜΑΘΗΜΑ ΕΓΓΡΑΦΕΙΤΕ στο τμήμα ON course.dept_name=department.dept_name;

Παράδειγμα 2

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

SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN μαθήματος ON prereq.course_id=course.course_id;

Παράδειγμα 3

Θα εμφανίσουμε μια λίστα με όλα τα μαθήματα, ανεξάρτητα από το αν απαιτούνται ή όχι:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN μάθημα ON prereq.course_id=course.course_id;

23. Προβολή

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

Δημιουργία

ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ ΩΣ ΕΠΙΛΟΓΗ , , … ΑΠΟ ΟΠΟΥ ;

Μετακίνηση

ΑΠΟΣΤΟΛΗ ΠΡΟΒΟΛΗ ;

Παράδειγμα

Ας δημιουργήσουμε μια προβολή που αποτελείται από μαθήματα με 3 μονάδες:

24. Αθροιστικές συναρτήσεις

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

  • COUNT (col_name) - επιστρέφει τον αριθμό των σειρών.
  • SUM (col_name) - επιστρέφει το άθροισμα των τιμών σε αυτήν τη στήλη.
  • AVG (col_name) - επιστρέφει τη μέση τιμή μιας δεδομένης στήλης.
  • MIN (col_name) - επιστρέφει τη μικρότερη τιμή μιας δεδομένης στήλης.
  • MAX (col_name) - Επιστρέφει τη μεγαλύτερη τιμή μιας δεδομένης στήλης.

25. Ένθετα υποερωτήματα

Τα ένθετα υποερωτήματα είναι ερωτήματα SQL που περιλαμβάνουν προτάσεις SELECT , FROM και WHERE που είναι ένθετες σε άλλο ερώτημα.

Παράδειγμα

Ας βρούμε μαθήματα που διδάχθηκαν το φθινόπωρο του 2009 και την άνοιξη του 2010:

SELECT DISTINCT course_id FROM section WHERE semester = 'Fall' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE semester = 'Spring' AND year= 2010);

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

Διαμέριση SQL:


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

Τύποι δεδομένων:

SQL Server - Τύποι δεδομένων

Περιγραφή

bigint (int 8)

bigint (int 8)

δυάδικος(n)

δυάδικος(ιδ) ή εικόνα

χαρακτήρας
(συνώνυμο απανθρακώνω)

εθνικός χαρακτήραςή ntext

χαρακτήρας που ποικίλλει(συνώνυμο char ποικίλλει varchar)

ο εθνικός χαρακτήρας ποικίλλειή ntext

Ημερομηνία ώρα

ημερομηνία ώρα

δεκαδικός

aka αριθμητικός

διπλή ακρίβεια

διπλή ακρίβεια

ακέραιος αριθμός (int 4) (συνώνυμο: ενθ)

ακέραιος αριθμός (int 4)

εθνικό χαρακτήρα(συνώνυμο: εθνικό χαρακτήρα, nchar)

εθνικό χαρακτήρα

Αριθμητικός(συνώνυμα: δεκαδικός, Δεκ)

ο εθνικός χαρακτήρας ποικίλλει(συνώνυμα: εθνικός χαρακτήρας ποικίλλει, nvarchar)

Ο εθνικός χαρακτήρας ποικίλλει

Μικρή ώρα

ημερομηνία ώρα

ψιλόλιθος (int 2)

ψιλόλιθος (int 2)

Smallmoney

sql_variant

Δεν υποστηρίζεται πλέον

Κείμενο
Ξεκινώντας με τον SQL Server 2005, δεν συνιστάται η χρήση του.

Χρονική σήμανση

Δεν υποστηρίζεται

μικροσκοπικός (int 1)

μικροσκοπικός (int 1)

Μοναδικό αναγνωριστικό

μοναδικό αναγνωριστικό

βαρβινικός(n)

βαρβινικός(ιδ) ή εικόνα

smalldatetime

ημερομηνία ώρα

ψιλόλιθος (int 2)

ψιλόλιθος (int 2)

μικρά χρήματα

sql_variant

Δεν υποστηρίζεται

χρονική σήμανση

Δεν υποστηρίζεται

μικροσκοπικός (int 1)

μικροσκοπικός (int 1)

μοναδικό αναγνωριστικό

μοναδικό αναγνωριστικό

βαρβινικός(n)

βαρβινικός(ιδ) ή εικόνα

Πίνακας τύπων δεδομένων στον SQL Server 2000

ΤΙ ΕΙΝΑΙ ΑΙΤΗΣΗ;

Αίτησηείναι μια εντολή που δίνετε στο πρόγραμμα της βάσης δεδομένων σας. Τα ερωτήματα αποτελούν μέρος της γλώσσας DML. Όλα τα ερωτήματα SQL αποτελούνται από μία μόνο εντολή. Η δομή αυτής της εντολής είναι παραπλανητικά απλή γιατί πρέπει να την επεκτείνετε για να εκτελέσετε εξαιρετικά περίπλοκες αξιολογήσεις και χειρισμούς δεδομένων.

Εντολή SELECT:

ΕΠΙΛΕΓΩΗ εντολή "Select" είναι η πιο συχνά χρησιμοποιούμενη εντολή, η οποία χρησιμοποιείται για την επιλογή δεδομένων από τον πίνακα.
Τύπος ερωτήματος χρησιμοποιώντας SELECT:

SELECT id, user_name, city, birth_day FROM users_base;

Ένα τέτοιο ερώτημα θα εμφανίζει από τον πίνακα users_base όλες τις τιμές των στηλών που καθορίζονται διαχωρισμένες με κόμμα μετά SELECT εντολές. Επίσης, μπορείτε να εμφανίσετε όλες τις στήλες με έναν χαρακτήρα, * δηλ. SELECT * FROM users_base ; - ένα τέτοιο ερώτημα θα εμφανίσει όλα τα δεδομένα από τον πίνακα.

SELECT δομή εντολών:

SELECT (Ονόματα στηλών διαχωρισμένα με κόμματα που πρέπει να εμφανίζονται στο ερώτημα) FROM (όνομα πίνακα στη βάση δεδομένων)
- Αυτός είναι ο απλούστερος τύπος αιτήματος. Υπάρχουν πρόσθετες εντολές για εύκολη ανάκτηση δεδομένων (δείτε παρακάτω «Λειτουργίες»)

Εντολές DML:

Οι τιμές μπορούν να τοποθετηθούν και να αφαιρεθούν από πεδία χρησιμοποιώντας τρεις εντολές DML (Data Manipulation Language):
ΕΙΣΑΓΕΤΕ(Εισάγετε)
ΕΚΣΥΓΧΡΟΝΙΖΩ(Ενημέρωση, τροποποίηση),
ΔΙΑΓΡΑΦΩ(Διαγράφω)

Εντολή INSERT:

INSERT INTO users_base (user_name, city, birth_day) VALUES ('Alexander', 'Rostov', '06/20/1991');

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

Εντολή UPDATE:

UPDATE users_base SET user_name = 'Alexey';

Η εντολή UPDATE ενημερώνει τις τιμές σε έναν πίνακα. Πρώτα έρχεται η ίδια η εντολή UPDATE, μετά το όνομα του πίνακα, μετά την εντολή SET (set), μετά το όνομα της στήλης και η τιμή της σε εισαγωγικά (τα εισαγωγικά τοποθετούνται εάν η τιμή είναι σε μορφή συμβολοσειράς, εάν είναι αριθμητική τιμή και η στήλη δεν συνδέεται με τον τύπο δεδομένων vchar ή άλλους τύπους συμβολοσειράς, τα εισαγωγικά δεν έχουν νόημα.)

Εντολή DELETE:

DELETE FROM users_base WHERE user_name = 'Vasily';

Η εντολή DELETE διαγράφει ολόκληρη τη σειρά και προσδιορίζει τη σειρά χρησιμοποιώντας το κριτήριο WHERE. Σε αυτήν την περίπτωση, αυτό το ερώτημα θα διαγράψει όλες τις σειρές στις οποίες η τιμή της στήλης user_name ήταν Vasily. Θα μιλήσουμε για το κριτήριο WHERE και άλλα λίγο αργότερα.

Κριτήρια, συναρτήσεις, συνθήκες κ.λπ. τι μας βοηθάει στην SQL:

Ο όρος WHERE είναι μια ρήτρα της εντολής SELECT και άλλων εντολών DML που σας επιτρέπει να ορίσετε κατηγορήματα των οποίων η συνθήκη μπορεί να είναι είτε true είτε false για οποιαδήποτε σειρά στον πίνακα. Η εντολή ανακτά μόνο εκείνες τις γραμμές από τον πίνακα για τις οποίες ισχύει αυτή η δήλωση.
Παράδειγμα:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Alexey’;- ένα τέτοιο ερώτημα θα εμφανίζει μόνο εκείνες τις σειρές που ταιριάζουν με τη συνθήκη WHERE, δηλαδή όλες τις σειρές στις οποίες η στήλη user_name έχει την τιμή Alexey.

ORDER BY - συνθήκη για την ταξινόμηση των επιλεγμένων σειρών. Έχει 2 κριτήρια ASC και DESC. ASC (ταξινόμηση από το Α στο Ω ή από το 0 στο 9)

DESC (απέναντι από ASC).
Παράδειγμα:
ΕΠΙΛΟΓΗ ταυτότητας, πόλη, γενέθλια ημέρα ΑΠΟ users_base ORDER BY user_name ASC; - ένα τέτοιο ερώτημα θα εμφανίζει τιμές ταξινομημένες με βάση τη στήλη user_name από Α έως Ω (A-Z; 0-9)

Αυτή η συνθήκη μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με την ρήτρα WHERE.
Παράδειγμα:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Alexey’ ORDER BY id ASC;

Το DISTINCT είναι ένα όρισμα που σας παρέχει έναν τρόπο να εξαλείψετε διπλές τιμές από τον όρο SELECT. Εκείνοι. εάν έχετε διπλότυπες τιμές σε μια στήλη, ας πούμε user_name, τότε το DISTINCT θα σας δείξει μόνο μία τιμή, για παράδειγμα, έχετε 2 άτομα με το όνομα Alexey στη βάση δεδομένων σας, τότε ένα ερώτημα που χρησιμοποιεί τη συνάρτηση DISTINCT θα σας δείξει μόνο 1 τιμή αυτό συναντάται πρώτο...
Παράδειγμα:
ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ όνομα_χρήστη ΑΠΟ ΤΗ βάση χρηστών_χρήστη.- ένα τέτοιο ερώτημα θα μας δείξει τις τιμές όλων των εγγραφών στη στήλη user_name, αλλά δεν θα επαναληφθούν, π.χ. αν είχατε άπειρο αριθμό επαναλαμβανόμενων τιμών, τότε δεν θα εμφανιστούν...

ΚΑΙ - παίρνει δύο Boolean (με τη μορφή A ΚΑΙ B) ως επιχειρήματα και τα αξιολογεί έναντι της αλήθειας εάν είναι και τα δύο αληθή.
Παράδειγμα:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'Alexander';- θα εμφανίσει όλες τις τιμές από τον πίνακα όπου εμφανίζεται το όνομα της πόλης σε μία γραμμή (σε αυτήν την περίπτωση, Rostov και το όνομα χρήστη Alexander.

OR - παίρνει δύο Boolean (με τη μορφή A OR B) ως ορίσματα και αξιολογεί εάν ένα από αυτά είναι σωστό.

SELECT * FROM users_base WHERE city = 'Rostov' OR user_name = 'Alexander';- θα εμφανίσει όλες τις τιμές από τον πίνακα όπου εμφανίζεται στη γραμμή το όνομα της πόλης του Ροστόφ ή το όνομα χρήστη Alexander.

NOT - παίρνει ένα μόνο Boolean (με τη μορφή NOT A) ως ορίσματα και αλλάζει την τιμή του από false σε true ή true σε false.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'Alexander';- θα εμφανίσει όλες τις τιμές από τον πίνακα όπου το όνομα της πόλης του Ροστόφ εμφανίζεται σε μία γραμμή ή το όνομα χρήστη δεν είναι ακριβώς Alexander.

IN - ορίζει ένα σύνολο τιμών στο οποίο μια δεδομένη τιμή μπορεί ή όχι να περιλαμβάνεται.
SELECT * FROM users_base WHERE city IN ('Vladivostok', 'Rostov');- ένα τέτοιο ερώτημα θα εμφανίσει όλες τις τιμές από τον πίνακα που περιέχουν τα ονόματα των καθορισμένων πόλεων στη στήλη της πόλης

Το Between είναι παρόμοιο με τον τελεστή IN. Σε αντίθεση με τον ορισμό με αριθμούς από ένα σύνολο, όπως κάνει το IN, το BETWEEN ορίζει ένα εύρος του οποίου οι τιμές πρέπει να μειωθούν για να γίνει αληθές το κατηγόρημα.
SELECT * FROM users_base WHERE id BETWEEN 1 ΚΑΙ 10;- εμφανίζει όλες τις τιμές από τον πίνακα που θα είναι στην περιοχή από 1 έως 10 στη στήλη id

COUNT - Παράγει τους αριθμούς σειρών ή τις μη NULL τιμές των πεδίων που επέλεξε το ερώτημα.
SELECT COUNT (*) FROM users_base ;- θα εμφανίσει τον αριθμό των σειρών σε αυτόν τον πίνακα.
SELECT COUNT (DISTINCT user_name) FROM users_base ;- θα εμφανίσει τον αριθμό των γραμμών με ονόματα χρηστών (δεν επαναλαμβάνεται)

SUM - παράγει το αριθμητικό άθροισμα όλων των επιλεγμένων τιμών για ένα δεδομένο πεδίο.
SELECT SUM (id) FROM users_base ;- θα εμφανίσει το άθροισμα των τιμών όλων των σειρών της στήλης id.

AVG - υπολογίζει κατά μέσο όρο όλες τις επιλεγμένες τιμές αυτού του πεδίου.
SELECT AVG (id) FROM users_base ;- θα εμφανίσει τον μέσο όρο όλων των επιλεγμένων τιμών της στήλης id

MAX - παράγει τη μεγαλύτερη από όλες τις επιλεγμένες τιμές για αυτό το πεδίο.

MIN - παράγει τη μικρότερη από όλες τις επιλεγμένες τιμές για αυτό το πεδίο.

Δημιουργία πινάκων:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ user_base (ακέραιος αριθμός ID, κείμενο ονόματος_χρήστη, κείμενο πόλης, ημερομηνία γέννησης).- η εκτέλεση μιας τέτοιας εντολής θα οδηγήσει στη δημιουργία του πίνακα για τον οποίο έδωσα παραδείγματα... Όλα είναι απλά εδώ, γράφουμε την εντολή CREATE TABLE, ακολουθούμενη από το όνομα του πίνακα που θέλουμε να δημιουργήσουμε και μετά σε παρένθεση, χωρίζονται με κόμμα, τα ονόματα των στηλών και τον τύπο δεδομένων τους. Αυτός είναι ο τυπικός τρόπος δημιουργίας πίνακα σε SQL. Τώρα θα δώσω ένα παράδειγμα δημιουργίας πινάκων στον SQL Server 2005:

ΕΝΕΡΓΟΠΟΙΗΣΗ ANSI_NULLS
ΠΗΓΑΙΝΩ
ΕΝΕΡΓΟΠΟΙΗΣΗ QUOTED_IDENTIFIER
ΠΗΓΑΙΝΩ
ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ (ΕΠΙΛΟΓΗ * ΑΠΟ sys.objects WHERE object_id = OBJECT_ID(N."") ΚΑΙ πληκτρολογήστε (N"U"))
ΑΡΧΙΖΟΥΝ
ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΙΝΑΚΑ .(

ΟΧΙ ΚΕΝΟ,
ΟΧΙ ΚΕΝΟ,
ΟΧΙ ΚΕΝΟ,
ΚΡΕΓΑΤΟ ΚΛΕΙΔΙ ΟΜΑΔΑΔΕΣ
A.S.C.


ΤΕΛΟΣ
ΠΗΓΑΙΝΩ
ΕΝΕΡΓΟΠΟΙΗΣΗ ANSI_NULLS
ΠΗΓΑΙΝΩ
ΕΝΕΡΓΟΠΟΙΗΣΗ QUOTED_IDENTIFIER
ΠΗΓΑΙΝΩ
ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ (ΕΠΙΛΟΓΗ * ΑΠΟ sys.objects WHERE object_id = OBJECT_ID(N."") ΚΑΙ πληκτρολογήστε (N"U"))
ΑΡΧΙΖΟΥΝ
ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΙΝΑΚΑ .(
ΤΑΥΤΟΤΗΤΑ(1,1) ΟΧΙ NULL,
ΜΗΔΕΝΙΚΟ,
ΜΗΔΕΝΙΚΟ,
ΚΡΕΓΑΤΟ ΚΛΕΙΔΙ ΟΜΑΔΑΔΕΣ
A.S.C.
)ΜΕ (IGNORE_DUP_KEY = OFF) ON
) ON TEXTIMAGE_ON
ΤΕΛΟΣ
ΠΗΓΑΙΝΩ
ΕΝΕΡΓΟΠΟΙΗΣΗ ANSI_NULLS
ΠΗΓΑΙΝΩ
ΕΝΕΡΓΟΠΟΙΗΣΗ QUOTED_IDENTIFIER
ΠΗΓΑΙΝΩ
ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ (ΕΠΙΛΟΓΗ * ΑΠΟ sys.objects WHERE object_id = OBJECT_ID(N."") ΚΑΙ πληκτρολογήστε (N"U"))
ΑΡΧΙΖΟΥΝ
ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΙΝΑΚΑ .(
ΤΑΥΤΟΤΗΤΑ(1,1) ΟΧΙ NULL,
ΜΗΔΕΝΙΚΟ,
ΜΗΔΕΝΙΚΟ,
ΚΡΕΓΑΤΟ ΚΛΕΙΔΙ ΟΜΑΔΑΔΕΣ
A.S.C.
)ΜΕ (IGNORE_DUP_KEY = OFF) ON
) ΕΠΙ
ΤΕΛΟΣ

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

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το θέμα, παρακαλώ γράψτε μου

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

  • σύνδεση της βάσης δεδομένων με την εφαρμογή.
  • Εμφάνιση πινάκων βάσης δεδομένων στη φόρμα.
  • πρόσθεση νέα καταχώρησηστη βάση δεδομένων·
  • επεξεργασία μιας εγγραφής?
  • διαγραφή μιας καταχώρισης.

Ως βάση λαμβάνεται η βάση δεδομένων Education.dbo, η διαδικασία δημιουργίας της οποίας περιγράφεται αναλυτικά

Το σχήμα 1 δείχνει τη δομή της βάσης δεδομένων Education.dbo. Όπως φαίνεται από το σχήμα, η βάση δεδομένων ονομάζεται:

sasha-pc\sqlexpress.Education.dbo

Εδώ "sasha-pc" είναι το αναγνωριστικό υπολογιστή στο δίκτυο, "sqlexpress" είναι το όνομα του διακομιστή βάσης δεδομένων, "Education.dbo" είναι το όνομα της βάσης δεδομένων.

Ρύζι. 1. Βάση δεδομένων Education.dbo

Η βάση δεδομένων περιέχει δύο πίνακες: Student και Session. Η δομή των πινάκων έχει ως εξής.

Μαθητικό τραπέζι.

Τραπέζι συνεδρίας.

Εκτέλεση

1. Δημιουργία νέο έργοστο MS Visual Studio ως εφαρμογή Windows Forms.

Δημιουργήστε ένα νέο έργο τύπου Windows Forms Application. Ένα παράδειγμα δημιουργίας ενός νέου έργου περιγράφεται λεπτομερώς

2. Δημιουργήστε μια νέα προβολή για την εμφάνιση δεδομένων από τον πίνακα Student.

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

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

Για να δημιουργήσετε μια προβολή, πρέπει να καλέσετε την εντολή «Προσθήκη νέας προβολής» από το μενού περιβάλλοντος, η οποία καλείται κάνοντας δεξί κλικ στο στοιχείο «Προβολές» της βάσης δεδομένων Education.dbo (Εικόνα 2).

Ρύζι. 2. Κλήση της εντολής για προσθήκη νέας προβολής

Ως αποτέλεσμα, θα ανοίξει το παράθυρο "Προσθήκη πίνακα" (Εικόνα 3). Στο παράθυρο πρέπει να επιλέξετε τους πίνακες που προστίθενται στην προβολή.

Ρύζι. 3. Επιλέγοντας τους πίνακες στους οποίους θα βασίζεται η νέα προβολή

Στην περίπτωσή μας, επιλέξτε τον πίνακα Student και επιβεβαιώστε την επιλογή σας κάνοντας κλικ στο κουμπί Προσθήκη. Το επόμενο βήμα είναι να κλείσετε το παράθυρο επιλέγοντας το κουμπί Κλείσιμο.

Αφού ολοκληρώσετε τα βήματα, θα δημιουργηθεί ένα παράθυρο στο οποίο πρέπει να επιλέξετε τα πεδία που πρέπει να εμφανίζονται στην προβολή (στη φόρμα). Επιλέξτε όλα τα πεδία (Εικόνα 4).

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

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

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

Ρύζι. 4. Επιλέγοντας πεδία πίνακα σπουδαστών για εμφάνιση στην προβολή

Μετά την επιλογή ομάδας

Αρχείο->Αποθήκευση όλων Αρχείο->Αποθήκευση προβολής1

Θα ανοίξει ένα παράθυρο στο οποίο πρέπει να καθορίσετε το όνομα της προβολής. Ορίστε το όνομα "Προβολή μαθητή" (Εικόνα 5).

Ρύζι. 5. Καθορισμός ονόματος για την προβολή

Αφού ολοκληρώσετε τα βήματα, το παράθυρο παρουσίασης θα μοιάζει όπως φαίνεται στην Εικόνα 6.

Ρύζι. 6. Δείτε την αναπαράσταση του μαθητή στη βάση δεδομένων

Τώρα μπορείτε να φιλοξενήσετε ένα στοιχείο ελέγχου DataGridView και να το συσχετίσετε με μια προβολή.

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

Πριν τοποθετήσετε το στοιχείο ελέγχου DataGridView, πρέπει να μεταβείτε στη λειτουργία σχεδίασης φόρμας "Form1.cs".

Το στοιχείο DataGridView είναι ένας πίνακας που μπορεί να εμφανίσει δεδομένα. Αυτό το στοιχείο ελέγχου βρίσκεται στον πίνακα ToolBox. Αρχικά, προσαρμόζουμε ελαφρώς το μέγεθος της φόρμας και, στη συνέχεια, τοποθετούμε το στοιχείο ελέγχου DataGridView σε αυτήν (Εικόνα 7). Αυτό θα δημιουργήσει μια παρουσία αντικειμένου με το όνομα dataGridView1 από προεπιλογή.

Ρύζι. 7. Παράθυρο ελέγχου DataGridView και επιλογής πηγής δεδομένων

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

Στο μενού που ανοίγει, επιλέξτε την εντολή «Add Project Data Source...» (Εικ. 7). Μετά από αυτό, ανοίγει ένα παράθυρο οδηγού, στο οποίο επιλέγεται διαδοχικά η πηγή δεδομένων.

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

Ρύζι. 8. Επιλογή τύπου πηγής δεδομένων

Στο επόμενο παράθυρο (Εικόνα 9) επιλέγεται το μοντέλο πηγής δεδομένων. Πρέπει να επιλέξετε DataSet.

Ρύζι. 9. Επιλογή μοντέλου πηγής δεδομένων

Στο παράθυρο που φαίνεται στην Εικόνα 10, πρέπει να καθορίσετε τη σύνδεση δεδομένων που θέλετε να χρησιμοποιήσετε για να συνδεθείτε στη βάση δεδομένων. Στην περίπτωσή μας, πρέπει να επιλέξουμε τη βάση δεδομένων " sasha-pc\sqlexpress\Education.dbo«.

Ρύζι. 10. Επιλογή σύνδεσης δεδομένων

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

Ρύζι. 11. Πρόταση για αποθήκευση της συμβολοσειράς σύνδεσης βάσης δεδομένων Connection String στο αρχείο διαμόρφωσης της εφαρμογής

Μετά τη δημιουργία μιας σύνδεσης βάσης δεδομένων, εμφανίζεται μια ποικιλία αντικειμένων βάσης δεδομένων (Εικόνα 12). Στην περίπτωσή μας, πρέπει να επιλέξουμε την προβολή «Προβολή μαθητή» και όλα τα πεδία από αυτήν. Τα επιλεγμένα πεδία θα εμφανίζονται στο στοιχείο τύπου DataGridView.

Ρύζι. 12. Επιλογή των αντικειμένων της βάσης δεδομένων για εμφάνιση στο DataGridView

Αφού επιλέξετε το κουμπί Finish, θα εμφανιστούν τα επιλεγμένα αντικείμενα (View Student view) της βάσης δεδομένων Education.dbo (Εικόνα 13).

Ρύζι. 13. Έλεγχος DataGridView με επιλεγμένα πεδία View Student

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

4. Ρύθμιση της εμφάνισης του στοιχείου ελέγχου DataGridView.

Εάν εκτελέσετε την εφαρμογή, θα λάβετε δεδομένα από την προβολή Προβολή μαθητή, που αντιστοιχεί στον πίνακα Student στη βάση δεδομένων (Εικόνα 14).

Ρύζι. 14. Εκκίνηση της εφαρμογής για εκτέλεση

Όπως μπορείτε να δείτε από το Σχήμα 14, τα δεδομένα στον πίνακα dataGridView1 εμφανίζονται κανονικά, αλλά η σχεδίαση μπορεί να προσαρμοστεί.

Ένα στοιχείο ελέγχου του τύπου DataGridView σάς επιτρέπει να προσαρμόσετε την εμφάνιση των πεδίων που εμφανίζονται.

Για να καλέσετε εντολές για επεξεργασία πεδίων, απλώς καλέστε το μενού περιβάλλοντος κάνοντας δεξί κλικ στο στοιχείο ελέγχου dataGridView1.

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

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

Στην περίπτωσή μας, πρέπει να επιλέξετε την εντολή «Επεξεργασία στηλών...» (Εικόνα 15).

Ρύζι. 15. Εντολή "Επεξεργασία στηλών..." από το μενού περιβάλλοντος

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

Ρύζι. 16. Παράθυρο για τη ρύθμιση της προβολής πεδίων στην προβολή "Προβολή μαθητή".

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

5. Συμβολοσειρά σύνδεσης

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

Υπάρχουν διάφοροι τρόποι λήψης της συμβολοσειράς σύνδεσης βάσης δεδομένων. Ένα από αυτά βασίζεται στην ανάγνωση αυτής της γραμμής στο παράθυρο Ιδιότητες της βάσης δεδομένων Education.dbo (Εικ. 17).

Ρύζι. 17. Καθορισμός συμβολοσειράς σύνδεσης

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

Στο κείμενο του αρχείου "Form1.cs" στην αρχή της περιγραφής της κλάσης Form1, πρέπει να περιγράψετε τη μεταβλητή:

string conn_string = ;

Αυτή τη στιγμή το κείμενο της τάξης Form1 έχει ως εξής:

δημόσια μερική τάξη Μορφή1 : Έντυπο { string conn_string = @"Πηγή δεδομένων=(τοπική)\SQLEXPRESS;Αρχικός κατάλογος=Εκπαίδευση;Ολοκληρωμένη ασφάλεια=True;Pooling=False"; δημόσια Φόρμα1() { InitializeComponent(); } private void Form1_Load(αποστολέας αντικειμένου, EventArgs e) { // TODO: Αυτή η γραμμή κώδικα φορτώνει δεδομένα στον πίνακα "educationDataSet.View_Student". Μπορείςμετακινήστε ή αφαιρέστε το, όπως χρειάζεται. } }

6. Δημιουργία νέα μορφήγια την επίδειξη εντολών χειρισμού δεδομένων.

Για να μπορέσετε να επεξεργαστείτε τα δεδομένα της τρέχουσας εγγραφής, πρέπει να δημιουργήσετε μια νέα φόρμα. Η διαδικασία δημιουργίας μιας νέας φόρμας στο MS Visual Studio - C# περιγράφεται αναλυτικά.

Η προσθήκη νέας φόρμας γίνεται με την εντολή:

Έργο -> Προσθήκη φόρμας των Windows...

Στο παράθυρο «Νέο στοιχείο» που ανοίγει, πρέπει να επιλέξετε το στοιχείο «Φόρμα των Windows».

Αφήστε το νέο όνομα αρχείου φόρμας ως προεπιλεγμένο "Form2.cs".

Το σχήμα 18 δείχνει μια άποψη της νέας φόρμας.

Τοποθετούμε τους ακόλουθους τύπους στοιχείων ελέγχου στη φόρμα:

  • δύο κουμπιά ελέγχου (κουμπιά OK και Άκυρο). Αντίστοιχα, θα ληφθούν δύο αντικείμενα με το όνομα button1 και button2.
  • τέσσερα στοιχεία ελέγχου ετικέτας για τη δημιουργία ενημερωτικών μηνυμάτων.
  • τέσσερα στοιχεία ελέγχου του τύπου TextBox για την εισαγωγή δεδομένων στα πεδία Num_book, Name, Group, Year.

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

  • στο κουμπί ελέγχου1 ιδιότητα Κείμενο = "OK ";
  • στην ιδιότητα ελέγχου button2 Κείμενο = "Ακύρωση ";
  • στην ιδιότητα του πλήκτρου ελέγχου1 DialogResult = "OK ";
  • στην ιδιότητα κουμπί ελέγχου2 DialogResult = "Ακύρωση";
  • στην ιδιότητα ελέγχου label1 Text = "Num_book";
  • στην ιδιότητα ελέγχου label2 Text = "Όνομα";
  • στην ιδιότητα ελέγχου label3 Text = "Group";
  • στο label4 ελέγξτε την ιδιότητα Text = "Year".

Διαμορφώνουμε επίσης την ορατότητα των στοιχείων ελέγχου TextBox. Για να γίνει αυτό, σε όλα τα στοιχεία ελέγχου textBox1, textBox2, textBox3, textBox4, η τιμή ιδιότητας Modifiers = "δημόσιο".

Ρύζι. 18. Άποψη της νέας φόρμας

7. Προσθήκη κουμπιών για κλήση εντολών για χειρισμό δεδομένων από τον πίνακα Student.

Για περαιτέρω εργασία, πρέπει να χρησιμοποιήσετε το ποντίκι για να μεταβείτε στην κύρια φόρμα Form1.

Προσθέστε τρία κουμπιά στην κύρια φόρμα της εφαρμογής Form1 (Button). Τρεις μεταβλητές αντικειμένων θα δημιουργηθούν αυτόματα με τα ονόματα button1, button2, button3. Σε καθένα από αυτά τα κουμπιά κάνουμε τις ακόλουθες ρυθμίσεις (παράθυρο Ιδιότητες):

  • στο κουμπί κουμπί1 ιδιότητα Κείμενο = «Εισαγωγή…» (εισαγωγή εγγραφής).
  • στο κουμπί κουμπί2 ιδιότητα Κείμενο = "Επεξεργασία ..." (αλλαγή καταχώρισης);
  • στο κουμπί κουμπί3 ιδιότητα Κείμενο = "Διαγραφή".

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

Ρύζι. 19. Κύρια μορφή της αίτησης

8. Προγραμματισμός ενός συμβάντος κλικ στο κουμπί "Εισαγωγή...".

Ο χειριστής συμβάντων κλικ στο κουμπί "Εισαγωγή..." μοιάζει με αυτό:

private void button1_Click_1(Αποστολέας αντικειμένου, EventArgs e) { συμβολοσειρά cmd_text; Form2 f2 = new Form2(); if (f2.ShowDialog() ==DialogResult .OK) { cmd_text = "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΞΙΕΣ Φοιτητών (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // δημιουργήστε μια σύνδεση με τη βάση δεδομένων SqlConnection sql_conn = new SqlConnection(conn_string); // Δημιουργία εντολής Γλώσσα SQL SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); // ανοιχτή σύνδεση sql_comm.ExecuteNonQuery(); // εκτέλεση εντολής σε γλώσσα SQL sql_conn.Close(); // κλείσιμο σύνδεσης αυτό το .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

Το Form2 καλείται πρώτα. Μετά τη λήψη του αποτελέσματος «OK» (πατώντας το αντίστοιχο κουμπί), στη Φόρμα2 τα συμπληρωμένα πεδία σε στοιχεία του τύπου TextBox περιλαμβάνονται στη συμβολοσειρά ερωτήματος SQL. Το ερώτημα SQL για την προσθήκη μιας νέας σειράς μοιάζει με αυτό:

ΕΙΣΑΓΩΓΗ ΣΤΟ Φοιτητή VALUES (τιμή 1, τιμή 2, τιμή 3, τιμή 4)

όπου η τιμή 1 αντιστοιχεί στον αριθμό βιβλίου βαθμού· value2 – το επώνυμο του μαθητή. value3 – ομάδα στην οποία σπουδάζει ο μαθητής. τιμή 4 – έτος εισόδου.

Η συμβολοσειρά σύνδεσης βάσης δεδομένων Connection String περιγράφεται στη μεταβλητή conn_string (βλ. παράγραφο 5). Το αντικείμενο κλάσης SqlConnection συνδέει την εφαρμογή με πηγές δεδομένων. Επιπλέον, η κλάση Connection χειρίζεται τον έλεγχο ταυτότητας χρήστη, τη δικτύωση, την αναγνώριση βάσης δεδομένων, την προσωρινή αποθήκευση σύνδεσης και την επεξεργασία συναλλαγών.

Η εντολή SQL που προσθέτει μια εγγραφή σε έναν πίνακα ενσωματώνεται στην κλάση SqlCommand. Ο κατασκευαστής της κλάσης SqlCommand παίρνει δύο παραμέτρους: μια συμβολοσειρά ερωτήματος SQL (μεταβλητή cmd_text) και ένα αντικείμενο της κλάσης SqlConnection.

Η μέθοδος ExecuteNonQuery() υλοποιείται στη διεπαφή IDBCommand. Η μέθοδος υλοποιεί εντολές SQL που δεν επιστρέφουν δεδομένα. Τέτοιες εντολές περιλαμβάνουν εντολές INSERT, DELETE, UPDATE, καθώς και αποθηκευμένες διαδικασίες που δεν επιστρέφουν δεδομένα. Η μέθοδος ExecuteNonQuery() επιστρέφει τον αριθμό των εγγραφών που εμπλέκονται.

9. Προγραμματισμός ενός συμβάντος κλικ στο κουμπί "Επεξεργασία...".

Ο χειριστής συμβάντων κλικ στο κουμπί "Επεξεργασία..." μοιάζει με αυτό:

private void button2_Click(object sender, EventArgs e) ( string cmd_text; Form2 f2 = new Form2 (); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert .ToString(da.VtextBox1); .Text = num_book; f2.textBox2.Text = Convert .ToString(dataGridView1.Value); f2.textBox3.Text = Convert .ToString(dataGridView1.Value); f2.textBox4.Text = Convert .VdaStrue; if (f2.ShowDialog() == DialogResult .OK) ( cmd_text = "UPDATE Student SET Num_book = ""+ f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "Έτος = " + f2 .TextBox4.Text + "What num_book =" " + num_book +" "" "" SQLConNection SQL_Conn = Νέο SQLConNECTION (Conn_String); SQLCMAND SQL_comm = Νέο SQLCMANT (CMD_TEXT , sqlsqlnryn_n); ) ; sql_conn.Close(); this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); ) )

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

10. Προγραμματισμός ενός συμβάντος κλικ στο κουμπί «Διαγραφή».

Ο χειριστής συμβάντων κλικ στο κουμπί "Διαγραφή" μοιάζει με αυτό:

private void button3_Click(object sender, EventArgs e) ( string cmd_text = "DELETE FROM Student" ; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1). "DELETE FROM Student WHERE . = ""+ num_book + """ ; SqlConnection sql_conn = νέα SqlConnection (conn_string); SqlCommand sql_comm = νέο SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sqlxeery); this. _Μαθητικός Προσαρμογέας Τραπεζιού. Συμπληρώστε (αυτό το .educationDataSet.View_Student); )

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

Σχετικά θέματα

  • Έξοδος πίνακα βάσης δεδομένων της Microsoft Access

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

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

Επεξεργαστής ερωτημάτων

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

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

Η επεξεργασία ερωτημάτων εκτός σύνδεσης παρέχει μεγαλύτερη ευελιξία από ό,τι όταν συνδέεται σε διακομιστή. Για να επεξεργαστείτε ερωτήματα, δεν είναι απαραίτητο να συνδεθείτε στον διακομιστή και το παράθυρο του προγράμματος επεξεργασίας ερωτημάτων μπορεί να αποσυνδεθεί από έναν διακομιστή (χρησιμοποιώντας την εντολή μενού Ερώτημα --> Σύνδεση --> Αποσύνδεση) και να συνδεθεί σε άλλο χωρίς να ανοίξει άλλο παράθυρο επεξεργασίας. Για να επιλέξετε τη λειτουργία επεξεργασίας εκτός σύνδεσης, χρησιμοποιήστε το παράθυρο διαλόγου Connect to Server που ανοίγει όταν εκκινείτε το πρόγραμμα επεξεργασίας. συγκεκριμένου τύπουαιτήματα, απλώς κάντε κλικ στο κουμπί Ακύρωση.

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

    δημιουργία και εκτέλεση δηλώσεων Transact-SQL.

    αποθήκευση δημιουργημένων δηλώσεων γλώσσας Transact-SQL σε ένα αρχείο.

    δημιουργία και ανάλυση σχεδίων εκτέλεσης για κοινά ερωτήματα.

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

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

Η πρώτη δήλωση αιτήματος USE καθορίζει τη χρήση της βάσης δεδομένων SampleDb ως τρέχουσας βάσης δεδομένων. Η δεύτερη πρόταση, SELECT, ανακτά όλες τις σειρές από τον πίνακα Employee. Για να εκτελέσετε αυτό το ερώτημα και να εμφανίσετε τα αποτελέσματα, στη γραμμή εργαλείων Επεξεργασία ερωτήματος, κάντε κλικ στο κουμπί Εκτέλεση ή πατήστε F5.

Μπορείτε να ανοίξετε πολλά παράθυρα του Query Editor, π.χ. πραγματοποιήστε πολλαπλές συνδέσεις σε μία ή περισσότερες παρουσίες του μηχανισμού βάσης δεδομένων. Δημιουργείται μια νέα σύνδεση κάνοντας κλικ στο κουμπί Νέο ερώτημα στη γραμμή εργαλείων SQL Server Management Studio.

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

    την κατάσταση της τρέχουσας λειτουργίας (για παράδειγμα, "Η αίτηση ολοκληρώθηκε με επιτυχία").

    όνομα διακομιστή βάσης δεδομένων.

    τρέχον όνομα χρήστη και αναγνωριστικό διαδικασίας διακομιστή.

    τρέχον όνομα βάσης δεδομένων.

    χρόνος που δαπανήθηκε για την εκτέλεση της τελευταίας αίτησης·

    αριθμός γραμμών που βρέθηκαν.

Ένα από τα κύρια πλεονεκτήματα του SQL Server Management Studio είναι η ευκολία χρήσης του, η οποία ισχύει και για το Query Editor. Το Query Editor παρέχει πολλές δυνατότητες για να διευκολύνει την κωδικοποίηση των δηλώσεων Transact-SQL. Συγκεκριμένα, χρησιμοποιεί επισήμανση σύνταξης για να βελτιώσει την αναγνωσιμότητα των δηλώσεων Transact-SQL. Όλες οι δεσμευμένες λέξεις εμφανίζονται με μπλε, οι μεταβλητές εμφανίζονται με μαύρο, οι συμβολοσειρές εμφανίζονται με κόκκινο και τα σχόλια εμφανίζονται με πράσινο.

Επιπλέον, το πρόγραμμα επεξεργασίας ερωτημάτων είναι εξοπλισμένο με τη βοήθεια ευαίσθητη στο περιβάλλον που ονομάζεται Δυναμική Βοήθεια, μέσω του οποίου μπορείτε να λάβετε πληροφορίες για μια συγκεκριμένη οδηγία. Εάν δεν γνωρίζετε τη σύνταξη μιας εντολής, επιλέξτε την στο πρόγραμμα επεξεργασίας και, στη συνέχεια, πατήστε το πλήκτρο F1. Μπορείτε επίσης να επισημάνετε τις παραμέτρους διαφόρων δηλώσεων Transact-SQL για να λάβετε βοήθεια σχετικά με αυτές από το Books Online.

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

Ο εξερευνητής αντικειμένων μπορεί επίσης να σας βοηθήσει να επεξεργαστείτε ερωτήματα. Για παράδειγμα, εάν θέλετε να μάθετε πώς να δημιουργήσετε μια δήλωση CREATE TABLE για τον πίνακα Employee, κάντε δεξί κλικ στον πίνακα στην Εξερεύνηση αντικειμένων και στον πίνακα που προκύπτει κατάλογος συμφραζόμενωνεπιλέξτε Πίνακας δέσμης ενεργειών ως --> ΔΗΜΙΟΥΡΓΙΑ σε --> Νέο παράθυρο επεξεργασίας ερωτημάτων. Το παράθυρο του Επεξεργαστή ερωτημάτων που περιέχει τη δήλωση CREATE TABLE που δημιουργήθηκε με αυτόν τον τρόπο φαίνεται στο παρακάτω σχήμα. Αυτή η δυνατότητα ισχύει επίσης για άλλα αντικείμενα, όπως αποθηκευμένες διαδικασίες και λειτουργίες.

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

Εξερεύνηση λύσεων

Η επεξεργασία ερωτημάτων στο SQL Server Management Studio βασίζεται στη μέθοδο λύσεων. Εάν δημιουργήσετε ένα κενό ερώτημα χρησιμοποιώντας το κουμπί Νέο ερώτημα, θα βασίζεται σε μια κενή λύση. Μπορείτε να το δείτε εκτελώντας μια ακολουθία εντολών από το μενού Προβολή --> Εξερεύνηση λύσεων αμέσως μετά το άνοιγμα ενός κενού ερωτήματος.

Η απόφαση μπορεί να σχετίζεται με κανένα, ένα ή περισσότερα έργα. Μια κενή λύση, που δεν σχετίζεται με κανένα έργο. Για να συσχετίσετε ένα έργο με μια λύση, κλείστε την κενή λύση, Εξερεύνηση λύσεων και Επεξεργαστής ερωτημάτων και δημιουργήστε ένα νέο έργο εκτελώντας Αρχείο --> Νέο --> Έργο. Στο παράθυρο New Project που ανοίγει, επιλέξτε την επιλογή SQL Server Scripts στο μεσαίο παράθυρο. Ένα έργο είναι ένας τρόπος οργάνωσης αρχείων σε μια συγκεκριμένη τοποθεσία. Μπορείτε να εκχωρήσετε ένα όνομα στο έργο και να επιλέξετε μια θέση για τη θέση του στο δίσκο. Όταν δημιουργείτε ένα νέο έργο, μια νέα λύση εκκινείται αυτόματα. Το έργο μπορεί να προστεθεί υπάρχουσα λύσηχρησιμοποιώντας το Solution Explorer.

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

Εντοπισμός σφαλμάτων SQL Server

Ο SQL Server, ξεκινώντας με τον SQL Server 2008, διαθέτει ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων κώδικα. Για να ξεκινήσετε μια περίοδο λειτουργίας εντοπισμού σφαλμάτων, επιλέξτε Εντοπισμός σφαλμάτων --> Έναρξη εντοπισμού σφαλμάτων από το κύριο μενού του SQL Server Management Studio. Θα εξετάσουμε πώς λειτουργεί το πρόγραμμα εντοπισμού σφαλμάτων χρησιμοποιώντας ένα παράδειγμα χρησιμοποιώντας μια παρτίδα εντολών. Μια παρτίδα είναι μια λογική ακολουθία εντολών SQL και επεκτάσεων διαδικασίας που αποστέλλεται στη Μηχανή βάσης δεδομένων για να εκτελέσει όλες τις εντολές που περιέχει.

Το παρακάτω σχήμα δείχνει ένα πακέτο που μετράει τον αριθμό των εργαζομένων που εργάζονται στο έργο p1. Εάν αυτός ο αριθμός είναι 4 ή περισσότερο, τότε εμφανίζεται ένα αντίστοιχο μήνυμα. Σε αντίθετη περίπτωση εμφανίζονται το όνομα και το επίθετο των εργαζομένων.

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

Οι πληροφορίες που σχετίζονται με τη διαδικασία εντοπισμού σφαλμάτων εμφανίζονται σε δύο πίνακες στο κάτω μέρος του παραθύρου του Επεξεργαστή ερωτημάτων. Πληροφορίες για ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙΟι πληροφορίες εντοπισμού σφαλμάτων ομαδοποιούνται σε αυτούς τους πίνακες σε πολλές καρτέλες. Το αριστερό παράθυρο περιέχει την καρτέλα Autos, την καρτέλα Locals και έως και πέντε καρτέλες Watch. Το δεξιό παράθυρο περιέχει τις καρτέλες Στοίβα κλήσεων, Νήματα, Σημεία διακοπής, Παράθυρο εντολών, Άμεσο παράθυρο και Έξοδος. Η καρτέλα Locals εμφανίζει τιμές μεταβλητών, η καρτέλα Call Stack εμφανίζει τιμές στοίβας κλήσεων και η καρτέλα Breakpoints εμφανίζει πληροφορίες για τα σημεία διακοπής.

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

Ο SQL Server 2012 προσθέτει πολλές νέες δυνατότητες στον ενσωματωμένο εντοπισμό σφαλμάτων στο SQL Server Management Studio. Τώρα μπορείτε να εκτελέσετε έναν αριθμό από τις ακόλουθες λειτουργίες σε αυτό:

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

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

    1. άνευ όρων (προεπιλεγμένη ενέργεια) (Διάλειμμα πάντα).

      εάν ο αριθμός των επισκέψεων είναι ίσος με την καθορισμένη τιμή (Διάσπασμα όταν το πλήθος του ισούται με μια καθορισμένη τιμή).

      εάν ο αριθμός των επισκέψεων είναι πολλαπλάσιο μιας καθορισμένης τιμής (Διακοπή όταν το πλήθος επισκέψεων ισούται με πολλαπλάσιο μιας καθορισμένης τιμής).

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

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

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

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

    Για να καθορίσετε τι να κάνετε όταν χτυπιέται ένα σημείο διακοπής, κάντε δεξί κλικ στο κόκκινο εικονίδιο για το σημείο διακοπής και επιλέξτε Όταν χτυπάτε από το μενού περιβάλλοντος. Στο παράθυρο διαλόγου When Breakpoint is Hit που ανοίγει, επιλέξτε την ενέργεια που θέλετε να κάνετε. Για να αποθηκεύσετε τις καθορισμένες συνθήκες, κάντε κλικ στο OK.

    Χρησιμοποιήστε το παράθυρο Quick Watch. Μπορείτε να προβάλετε την τιμή μιας έκφρασης Transact-SQL στο παράθυρο QuickWatch και, στη συνέχεια, να αποθηκεύσετε την έκφραση στο παράθυρο Watch. Για να ανοίξετε το παράθυρο Quick Watch, επιλέξτε Quick Watch από το μενού Debug. Η έκφραση σε αυτό το παράθυρο μπορεί είτε να επιλεγεί από την αναπτυσσόμενη λίστα Έκφραση είτε να εισαχθεί σε αυτό το πεδίο.

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




Μπλουζα