ตัวแปร SQL: SQL Server ประกาศ ตั้งค่า และเลือกตัวแปร
ตัวแปรใน SQL Server คืออะไร?
ใน MS SQL ตัวแปรคือวัตถุที่ทำหน้าที่เป็นตัวยึดตำแหน่งของหน่วยความจำ ตัวแปรเก็บค่าข้อมูลเดียว
ประเภทตัวแปรใน SQL: Local, Global
MS SQL มีตัวแปรสองประเภท:
- ตัวแปรท้องถิ่น
- ตัวแปรโกลบอล
อย่างไรก็ตาม ผู้ใช้สามารถสร้างได้เฉพาะตัวแปรภายในเครื่องเท่านั้น
รูปด้านล่างจะอธิบายตัวแปร 2 ประเภทที่มีอยู่ เซิร์ฟเวอร์ MS SQL.
ตัวแปรท้องถิ่น
- ผู้ใช้ประกาศตัวแปรในพื้นที่
- ตามค่าเริ่มต้น ตัวแปรท้องถิ่นจะเริ่มต้นด้วย @.
- ขอบเขตตัวแปรท้องถิ่นทุกรายการมีข้อจำกัดในการ ชุดหรือขั้นตอนปัจจุบัน ภายในเซสชั่นใดก็ตาม
ตัวแปรส่วนกลาง
- ระบบจะรักษาตัวแปรโกลบอล ผู้ใช้ไม่สามารถประกาศได้
- ตัวแปรโกลบอลเริ่มต้นด้วย @@
- มันเก็บ ข้อมูลที่เกี่ยวข้องกับเซสชัน.
วิธีการประกาศตัวแปรใน 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
คุณสามารถกำหนดค่าให้กับตัวแปรได้ดังนี้ สาม วิธี:
- ระหว่างการประกาศตัวแปรโดยใช้คีย์เวิร์ด DECLARE
- การใช้ SET
- การใช้ SELECT
มาดูรายละเอียดทั้งสามวิธีกัน:
ระหว่างการประกาศตัวแปรโดยใช้คีย์เวิร์ด DECLARE
ไวยากรณ์ T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
ที่นี่ หลังจากประเภทข้อมูล เราสามารถใช้ '=' ตามด้วยค่าที่จะกำหนด
ค้นหา:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
การใช้ตัวแปร 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
ตัวอย่าง: กำหนดค่าให้กับ ตัวแปรหลายตัว โดยใช้ตลาดหลักทรัพย์ฯ
ไวยากรณ์:
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
ตัวอย่าง: การกำหนดค่าให้กับตัวแปรด้วย 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' ที่มีสองคอลัมน์ดังแสดงด้านล่างนี้:
เราจะใช้ตาราง '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
ในกรณีนี้ ค่าตัวแปรจะว่างเปล่า เช่น NULL
การใช้ตัวแปรเลือก 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
ตัวอย่าง: การกำหนดค่าให้กับตัวแปรหลายตัวโดยใช้ 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
ตัวอย่าง: การกำหนดค่าให้กับตัวแปรด้วย 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
2 ตัวอย่าง: เมื่อแบบสอบถามย่อยส่งคืนแถวศูนย์เป็นผล
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
ในกรณีนี้ ตัวแปรจะต้องว่างเปล่า เช่น 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
ในกรณีนี้ ตัวแปรจะว่างเปล่า เช่น 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) DECLARE 2) ใช้ SET 3) ใช้ SELECT