Μεταβλητές SQL: SQL Server Δήλωση, Ορισμός και επιλογή μεταβλητής
Τι είναι μια μεταβλητή στον SQL Server;
Στο MS SQL, οι μεταβλητές είναι το αντικείμενο που λειτουργεί ως σύμβολο κράτησης θέσης σε μια θέση μνήμης. Μεταβλητή κράτηση μεμονωμένης τιμής δεδομένων.
Τύποι μεταβλητών σε SQL: Τοπικό, Καθολικό
Το MS SQL έχει δύο τύπους μεταβλητών:
- Τοπική μεταβλητή
- Καθολική μεταβλητή.
Ωστόσο, ο χρήστης μπορεί να δημιουργήσει μόνο μια τοπική μεταβλητή.
Το παρακάτω σχήμα εξηγεί δύο τύπους μεταβλητών που διατίθενται σε Διακομιστής MS SQL.
Τοπική μεταβλητή
- Ένας χρήστης δηλώνει την τοπική μεταβλητή.
- Από προεπιλογή, μια τοπική μεταβλητή ξεκινά με @.
- Κάθε εύρος τοπικής μεταβλητής έχει τον περιορισμό στο τρέχουσα παρτίδα ή διαδικασία σε κάθε δεδομένη συνεδρία.
Καθολική μεταβλητή
- Το σύστημα διατηρεί την καθολική μεταβλητή. Ένας χρήστης δεν μπορεί να τα δηλώσει.
- Η καθολική μεταβλητή ξεκινά με @@
- Αποθηκεύει πληροφορίες σχετικά με τη συνεδρία.
Πώς να ΔΗΛΩΣΕΤΕ μια μεταβλητή στην SQL
- Πριν χρησιμοποιήσετε οποιαδήποτε μεταβλητή σε παρτίδα ή διαδικασία, πρέπει δηλώστε τη μεταβλητή.
- Η εντολή DECLARE χρησιμοποιείται για τη μεταβλητή DECLARE που λειτουργεί ως σύμβολο κράτησης θέσης για τη θέση μνήμης.
- Μόνο αφού γίνει η δήλωση, μια μεταβλητή μπορεί να χρησιμοποιηθεί στο επόμενο μέρος της παρτίδας ή της διαδικασίας.
Σύνταξη TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
κανόνες:
- Η αρχικοποίηση είναι προαιρετική κατά τη δήλωση.
- Από προεπιλογή, το DECLARE αρχικοποιεί τη μεταβλητή σε NULL.
- Η χρήση της λέξης-κλειδιού «AS» είναι προαιρετική.
- Για να δηλώσετε περισσότερες από μία τοπικές μεταβλητές, χρησιμοποιήστε κόμμα μετά τον ορισμό της πρώτης τοπικής μεταβλητής και, στη συνέχεια, ορίστε το όνομα της επόμενης τοπικής μεταβλητής και Τύπος δεδομένων.
Παραδείγματα δήλωσης μεταβλητής
Ερώτημα: Με "AS"
DECLARE @COURSE_ID AS INT;
Ερώτημα: Χωρίς "AS"
DECLARE @COURSE_NAME VARCHAR (10);
Ερώτημα: ΔΗΛΩΣΤΕ δύο μεταβλητές
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Εκχώρηση τιμής στη μεταβλητή SQL
Μπορείτε να αντιστοιχίσετε μια τιμή σε μια μεταβλητή στα ακόλουθα τρία τρόπους:
- Κατά τη δήλωση μεταβλητής χρησιμοποιώντας λέξη-κλειδί DECLARE.
- Χρήση SET
- Χρησιμοποιώντας το SELECT
Ας ρίξουμε μια ματιά και στους τρεις τρόπους αναλυτικά:
Κατά τη δήλωση μεταβλητής χρησιμοποιώντας λέξη-κλειδί DECLARE
Σύνταξη T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Εδώ, μετά τον τύπο δεδομένων μπορούμε να χρησιμοποιήσουμε το '=' ακολουθούμενο από την τιμή που θα εκχωρηθεί
Ερώτηση:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Χρήση SQL SET VARIABLE
Μερικές φορές θέλουμε να διατηρήσουμε τη δήλωση και την προετοιμασία ξεχωριστά. Το SET μπορεί να χρησιμοποιηθεί για την εκχώρηση τιμών στη μεταβλητή, μετά τη δήλωση μιας μεταβλητής. Ακολουθούν οι διάφοροι τρόποι εκχώρησης τιμών χρησιμοποιώντας το SET:
Παράδειγμα: Εκχώρηση τιμής σε μια μεταβλητή χρησιμοποιώντας το SET
Σύνταξη:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Ερώτηση:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Παράδειγμα: Εκχωρήστε μια τιμή σε πολλαπλές μεταβλητές χρησιμοποιώντας το SET.
Σύνταξη:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Κανόνας: Μία λέξη-κλειδί SET μπορεί να χρησιμοποιηθεί για να εκχωρηθεί μια τιμή μόνο σε μία μεταβλητή.
Ερώτηση:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Παράδειγμα: Εκχώρηση τιμής σε μεταβλητή με a Scalar Subquery χρησιμοποιώντας το SET
Σύνταξη:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
κανόνες:
- Εσωκλείστε το ερώτημα σε παρένθεση.
- Το ερώτημα πρέπει να είναι βαθμωτό ερώτημα. Ένα βαθμωτό ερώτημα είναι ένα ερώτημα με αποτελέσματα μόνο ως μία γραμμή και μία στήλη. Διαφορετικά, το ερώτημα θα προκαλέσει σφάλμα.
- Εάν το ερώτημα επιστρέφει μηδέν σειρές, τότε η μεταβλητή ορίζεται σε EMPTY, δηλαδή NULL.
Υπόθεση: Ας υποθέσουμε ότι έχουμε τον πίνακα ως "Guru99" με δύο στήλες όπως εμφανίζονται παρακάτω:
Θα χρησιμοποιήσουμε τον πίνακα "Guru99" στα περαιτέρω σεμινάρια
Παράδειγμα 1: Όταν το υποερώτημα επιστρέφετε μια σειρά ως αποτέλεσμα.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Παράδειγμα 2: Όταν το υποερώτημα επιστρέφει μηδενική σειρά ως αποτέλεσμα
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Στη συγκεκριμένη περίπτωση, η τιμή της μεταβλητής είναι EMPTY, δηλαδή NULL.
Χρήση SQL SELECT VARIABLE
Ακριβώς όπως το SET, μπορούμε επίσης να χρησιμοποιήσουμε το SELECT για να εκχωρήσουμε τιμές στις μεταβλητές, μετά τη δήλωση μιας μεταβλητής χρησιμοποιώντας DECLARE. Ακολουθούν διάφοροι τρόποι για να εκχωρήσετε μια τιμή χρησιμοποιώντας το SELECT:
Παράδειγμα: Εκχώρηση τιμής σε μια μεταβλητή χρησιμοποιώντας το SELECT
Σύνταξη:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Ερώτηση:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Παράδειγμα: Εκχώρηση τιμής σε πολλαπλές μεταβλητές χρησιμοποιώντας SELECT
Σύνταξη:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
κανόνες: Σε αντίθεση με το SET, το SELECT μπορεί να χρησιμοποιηθεί για την εκχώρηση μιας τιμής σε πολλαπλές μεταβλητές χωρίζεται από το κόμμα.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Παράδειγμα: Εκχώρηση της τιμής σε μια μεταβλητή με ένα δευτερεύον ερώτημα χρησιμοποιώντας SELECT
Σύνταξη:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
κανόνες:
- Εσωκλείστε το ερώτημα σε παρένθεση.
- Το ερώτημα πρέπει να είναι βαθμωτό ερώτημα. Το βαθμωτό ερώτημα είναι το ερώτημα με το αποτέλεσμα ως μία γραμμή και μία στήλη. Διαφορετικά, το ερώτημα θα προκαλέσει σφάλμα.
- Εάν το ερώτημα επιστρέφει μηδέν σειρές, τότε η μεταβλητή είναι EMPTY, δηλαδή NULL.
- Επανεξετάστε τον πίνακα "Guru99".
Παράδειγμα 1: Όταν το υποερώτημα επιστρέφετε μια σειρά ως αποτέλεσμα.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Παράδειγμα 2: Όταν το υποερώτημα επιστρέφει μηδενική σειρά ως αποτέλεσμα
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Στη συγκεκριμένη περίπτωση, η μεταβλητή είναι σε EMPTY, δηλαδή NULL.
Παράδειγμα 3: Εκχωρήστε μια τιμή σε μια μεταβλητή με μια κανονική πρόταση SELECT.
Σύνταξη:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
κανόνες:
- Σε αντίθεση με το SET, εάν το ερώτημα έχει ως αποτέλεσμα πολλές σειρές, τότε η τιμή της μεταβλητής ορίζεται στην τιμή της τελευταίας σειράς.
- Εάν το ερώτημα επιστρέφει μηδέν σειρές, τότε η μεταβλητή ορίζεται σε EMPTY, δηλαδή NULL.
Ερώτημα 1: Το ερώτημα επιστρέφει μία σειρά.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Ερώτημα 2: Το ερώτημα επιστρέφει πολλές σειρές.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Σε αυτήν την ειδική περίπτωση, η τιμή μεταβλητής είναι οριστεί η τιμή της τελευταίας σειράς.
Ερώτημα 3: Το ερώτημα επιστρέφει μηδέν σειρές.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Στη συγκεκριμένη περίπτωση, η μεταβλητή είναι EMPTY, δηλαδή NULL.
Άλλα παραδείγματα μεταβλητών SQL
Χρήση μεταβλητής στο ερώτημα
Ερώτηση:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Ενδιαφέροντα στοιχεία για τις μεταβλητές του SQL Server!
- Μια τοπική μεταβλητή μπορεί να εμφανιστεί χρησιμοποιώντας PRINT καθώς και SELECT COMMAND
- Ο τύπος δεδομένων πίνακα δεν επιτρέπει τη χρήση "AS" κατά τη δήλωση.
- Το SET συμμορφώνεται με τα πρότυπα ANSI ενώ το SELECT όχι.
- Επιτρέπεται επίσης η δημιουργία τοπικής μεταβλητής με το όνομα @. Μπορούμε να το δηλώσουμε ως, για παράδειγμα:
'DECLARE @@ as VARCHAR (10)'
Σύνοψη
- Οι μεταβλητές είναι το αντικείμενο που λειτουργεί ως σύμβολο κράτησης θέσης.
- Υπάρχουν δύο τύποι μεταβλητών: Τοπική και Καθολική
- Μπορούμε να αντιστοιχίσουμε τη μεταβλητή με τους ακόλουθους τρεις τρόπους: Κατά τη χρήση 1) ΔΗΛΩΣΗ 2) Χρήση SET 3) ΧΡΗΣΗ ΕΠΙΛΟΓΗΣ