متغيرات SQL: إعلان SQL Server وتعيين وتحديد المتغير

ما هو المتغير في SQL Server؟

في MS SQL، المتغيرات هي الكائن الذي يعمل كعنصر نائب لموقع الذاكرة. متغير عقد قيمة بيانات واحدة.

أنواع المتغيرات في SQL: المحلية والعالمية

يحتوي MS SQL على نوعين من المتغيرات:

  1. متغير محلي
  2. متغير عالمي.

ومع ذلك، يمكن للمستخدم إنشاء متغير محلي فقط.

يوضح الشكل أدناه نوعين من المتغيرات المتوفرة في خادم MS SQL.

متغيرات SQL
أنواع المتغيرات في SQL Server

متغير محلي

  • يعلن المستخدم عن المتغير المحلي.
  • بشكل افتراضي، يبدأ المتغير المحلي بـ @.
  • كل نطاق متغير محلي له قيود على الدفعة أو الإجراء الحالي في أي جلسة معينة.

المتغير العام

  • يحتفظ النظام بالمتغير العالمي. لا يمكن للمستخدم الإعلان عنها.
  • يبدأ المتغير العالمي بـ @@
  • يخزن المعلومات المتعلقة بالجلسة.

كيفية الإعلان عن متغير في 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

يمكنك تعيين قيمة لمتغير في ما يلي ثلاثة طرق:

  1. أثناء إعلان المتغير باستخدام الكلمة الأساسية DECLARE.
  2. باستخدام مجموعة
  3. باستخدام تحديد

دعونا نلقي نظرة على الطرق الثلاث بالتفصيل:

أثناء إعلان المتغير باستخدام الكلمة الأساسية DECLARE

بناء جملة T-SQL:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

هنا، بعد نوع البيانات يمكننا استخدام '=' متبوعة بالقيمة التي سيتم تخصيصها

الاستعلام:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

تعيين قيمة لمتغير SQL

باستخدام SQL SET المتغير

في بعض الأحيان نريد أن نبقي الإعلان والتهيئة منفصلين. يمكن استخدام SET لتعيين قيم للمتغير، بعد الإعلان عن المتغير. فيما يلي الطرق المختلفة لتعيين القيم باستخدام SET:

مثال: تعيين قيمة لمتغير باستخدام SET

بناء الجملة:

DECLARE @Local_Variable <Data_Type>
SET @Local_Variable =  <Value>

الاستعلام:

DECLARE @COURSE_ID AS INT
SET @COURSE_ID = 5
PRINT @COURSE_ID

مجموعة SQL متغيرة

مثال: تعيين قيمة ل متغيرات متعددة باستخدام مجموعة.

بناء الجملة:

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

مجموعة SQL متغيرة

مثال: تعيين قيمة لمتغير باستخدام a استعلام فرعي عددي باستخدام مجموعة

بناء الجملة:

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" مع عمودين كما هو موضح أدناه:

مجموعة SQL متغيرة

سوف نستخدم جدول "Guru99" في الدروس الإضافية

مثال 1: عندما يقوم الاستعلام الفرعي بإرجاع صف واحد نتيجة لذلك.

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3)
PRINT @COURSE_NAME

مجموعة SQL متغيرة

المثال 2: عندما يقوم الاستعلام الفرعي بإرجاع صف صفر نتيجة لذلك

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

في هذه الحالة بالذات، تكون قيمة المتغير فارغة، أي NULL.

مجموعة SQL متغيرة

باستخدام SQL SELECT المتغير

تمامًا مثل 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

SQL حدد متغير

مثال: تعيين قيمة لمتغير متعدد باستخدام 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

SQL حدد متغير

مثال: تعيين القيمة لمتغير باستخدام استعلام فرعي باستخدام 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>)

قواعد:

  • ضع الاستعلام بين قوسين.
  • يجب أن يكون الاستعلام استعلامًا قياسيًا. الاستعلام القياسي هو الاستعلام الذي تكون نتيجته عبارة عن صف واحد وعمود واحد. وإلا، فسيطرح الاستعلام خطأً.
  • إذا قام الاستعلام بإرجاع صفوف صفرية، فسيكون المتغير فارغًا، أي NULL.
  • أعد النظر في جدول "Guru99".

مثال 1: عندما يقوم الاستعلام الفرعي بإرجاع صف واحد نتيجة لذلك.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1)
PRINT @COURSE_NAME

SQL حدد متغير

مثال 2: عندما يقوم الاستعلام الفرعي بإرجاع صف صفر نتيجة لذلك

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

في هذه الحالة بالذات، يكون المتغير فارغًا، أي NULL.

SQL حدد متغير

مثال 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

SQL حدد متغير

الاستعلام 2: يقوم الاستعلام بإرجاع صفوف متعددة.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

في هذه الحالة الخاصة، تكون القيمة المتغيرة اضبط على قيمة الصف الأخير.

SQL حدد متغير

الاستعلام 3: يقوم الاستعلام بإرجاع صفر صفوف.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

في هذه الحالة بالذات، يكون المتغير فارغًا، أي NULL.

SQL حدد متغير

أمثلة أخرى لمتغيرات SQL

استخدام المتغير في الاستعلام

الاستعلام:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

متغير SQL آخر

حقائق مثيرة للاهتمام حول متغيرات SQL Server!

  • يمكن عرض متغير محلي باستخدام الأمر PRINT وكذلك الأمر SELECT
  • نوع بيانات الجدول لا يسمح باستخدام "AS" أثناء الإعلان.
  • يتوافق SET مع معايير ANSI بينما لا يتوافق SELECT.
  • يُسمح أيضًا بإنشاء متغير محلي باسم @. يمكننا أن نعلنها على سبيل المثال:
    'DECLARE @@ as VARCHAR (10)'
    

ملخص

  • المتغيرات هي الكائن الذي يعمل كعنصر نائب.
  • يوجد نوعان من المتغيرات: المحلية والعالمية
  • يمكننا تعيين المتغير بالطرق الثلاث التالية: أثناء استخدام 1) DECLARE 2) باستخدام SET 3) باستخدام SELECT

تلخيص هذه التدوينة بـ: