ตัวแปร SQL: SQL Server ประกาศ ตั้งค่า และเลือกตัวแปร

ตัวแปรใน SQL Server คืออะไร?

ใน MS SQL ตัวแปรคือวัตถุที่ทำหน้าที่เป็นตัวยึดตำแหน่งของหน่วยความจำ ตัวแปรเก็บค่าข้อมูลเดียว

ประเภทตัวแปรใน SQL: Local, Global

MS SQL มีตัวแปรสองประเภท:

  1. ตัวแปรท้องถิ่น
  2. ตัวแปรโกลบอล

อย่างไรก็ตาม ผู้ใช้สามารถสร้างได้เฉพาะตัวแปรภายในเครื่องเท่านั้น

รูปด้านล่างจะอธิบายตัวแปร 2 ประเภทที่มีอยู่ เซิร์ฟเวอร์ MS SQL.

ตัวแปร SQL
ประเภทของตัวแปรใน SQL Server

ตัวแปรท้องถิ่น

  • ผู้ใช้ประกาศตัวแปรในพื้นที่
  • ตามค่าเริ่มต้น ตัวแปรท้องถิ่นจะเริ่มต้นด้วย @.
  • ขอบเขตตัวแปรท้องถิ่นทุกรายการมีข้อจำกัดในการ ชุดหรือขั้นตอนปัจจุบัน ภายในเซสชั่นใดก็ตาม

ตัวแปรส่วนกลาง

  • ระบบจะรักษาตัวแปรโกลบอล ผู้ใช้ไม่สามารถประกาศได้
  • ตัวแปรโกลบอลเริ่มต้นด้วย @@
  • มันเก็บ ข้อมูลที่เกี่ยวข้องกับเซสชัน.

วิธีการประกาศตัวแปรใน SQL

  • ก่อนที่จะใช้ตัวแปรใดๆ ในชุดหรือขั้นตอน คุณต้องดำเนินการก่อน ประกาศตัวแปร
  • คำสั่ง 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. การใช้ SET
  3. การใช้ SELECT

มาดูรายละเอียดทั้งสามวิธีกัน:

ระหว่างการประกาศตัวแปรโดยใช้คีย์เวิร์ด DECLARE

ไวยากรณ์ T-SQL:

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

ที่นี่ หลังจากประเภทข้อมูล เราสามารถใช้ '=' ตามด้วยค่าที่จะกำหนด

ค้นหา:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

การกำหนดค่าให้กับตัวแปร SQL

การใช้ตัวแปร SET ของ SQL

บางครั้งเราต้องการแยกการประกาศและการเริ่มต้นออกจากกัน 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 Keyword หนึ่งคำสามารถใช้เพื่อกำหนดค่าให้กับเท่านั้น หนึ่งตัวแปร.

ค้นหา:

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

เช่นเดียวกับ 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 เลือกตัวแปร

ตัวอย่าง: การกำหนดค่าให้กับตัวแปรด้วย Subquery โดยใช้ 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 COMMAND
  • ประเภทข้อมูลตารางไม่อนุญาตให้ใช้ 'AS' ในระหว่างการประกาศ
  • SET เป็นไปตามมาตรฐาน ANSI ในขณะที่ SELECT ไม่ปฏิบัติตาม
  • อนุญาตให้สร้างตัวแปรโลคัลด้วยชื่อเป็น @ ได้เช่นกัน เราสามารถประกาศได้ดังนี้:
    'DECLARE @@ as VARCHAR (10)'
    

สรุป

  • ตัวแปรคือวัตถุที่ทำหน้าที่เป็นตัวยึดตำแหน่ง
  • มีตัวแปรสองประเภท: ท้องถิ่นและทั่วโลก
  • เราสามารถกำหนดตัวแปรได้สามวิธีดังต่อไปนี้: ขณะใช้ 1) DECLARE 2) ใช้ SET 3) ใช้ SELECT