SQL Cheat Sheet และ Syntax ของการ Query

08-พ.ค.-20

คัมภีร์เทพ IT

SQL เป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดของคนที่เป็น Analyst แต่หากคุณยังเป็นมือใหม่ก็อาจพบปัญหาหรือข้อสงสัยมากมายเกี่ยวกับพวกเครื่องหมายหรือ Syntax บางอย่างที่ใช้ในการเขียน Program ใน SQL ซึ่งบทความนี้จะบอกถึง SQL Cheat Sheet และ Syntax ของการ Query ที่จะช่วยให้คุณได้รู้และเข้าใจ SQL มากขึ้น

Comparison Operators

คุณคงคุ้นเคยกับ Operators ที่ใช้ในการเปรียบเทียบเป็นอย่างดีทั้งเครื่องหมาย =, < และ > แต่คุณอาจไม่ค่อยคุ้นเคยกับทั้งหมดของ Operators ที่ระบุถึง ไม่เท่ากับ, ไม่น้อยกว่า และ ไม่มากกว่า

ในขณะที่ระบบบริหารจัดการ Database บางตัว เช่น SQL-Server มีการรองรับการใช้งานของ ไม่น้อยกว่าและไม่มากกว่า แต่กลับไม่รองรับ Operator สำหรับ ไม่น้อยกว่าหรือเท่ากับ ( !<= )

Unary และ Bitwise Operators

เมื่อต้องทำงานกับ Structured Numbers เช่น IP Address มันจะเป็นประโยชน์อย่างมากในการดึง Digits ที่ต้องการจากNumbers โดยใช้ Bitwise Operations โดยทั่วไป Numbers จะถูกจัดเก็บโดยใช้ Binary และให้คุณคิดว่า 1 คือจริง และ 0 คือเท็จ แล้วใช้ Boolean Algebra เพื่อจัดการกับ Numbers

มี Bitwise Operator เพิ่มเติมในหมู่ Unary Operators ซึ่งประกอบด้วย + และ – เพื่อนิยาม จำนวนบวกหรือจำนวนลบ รวมทั้ง ~ (Bitwise not) เพื่อ Invert หรือกลับแต่ละ Bits ใน Numbers ของคุณ

สมมติว่า คุณต้องการที่จะรู้ว่า Number นี้เป็นเลขคู่หรือคี่ คุณสามารถหารด้วย 2 ,ใช้ Mod ด้วย 2 หรือ กลยุทธ์ทางคณิตศาสตร์อื่น ๆ แต่มันจะสามารถคำนวณได้เร็วขึ้นเมื่อเราดูที่ Bit สุดท้าย เช่น 505 & 1 จะ Return 1 ในขณะที่ 168 & 1 จะ Return 0

Arithmetic Operators

Arithmetic Operators หรือตัวดำเนินการทางคณิตศาสตร์ +, -, *, / สำหรับการบวก การลบ การคูณ และการหาร เป็นสิ่งที่พวกเรารู้จักกันดี แต่คุณอาจไม่เคยพบ % มาก่อนในบริบทของพีชคณิต Modulo จะเป็นการหารค่าทางด้านซ้ายด้วยค่าทางด้านขวาและจะ Return ตัวเศษกลับมาให้ มันเป็น Companion Operator สำหรับการหาร ซึ่งจะ Return ผลหาร กลับมาให้

ใน การหารจำนวนเต็มนั้น 9 / 2 = 4 เพื่อให้ได้ตัวเศษ คุณสามารถใช้ 9 % 2 ซึ่งเท่ากับ 1 แต่คำจำกัดความของมันจะเปลี่ยนแปลงไปเมื่อเราใช้งานกับจำนวนที่เป็นลบ แต่คุณก็จะได้รับคำตอบเช่นกัน สำหรับ SQL Variants ส่วนใหญ่ เคล็ดลับง่าย ๆ ก็คือ มันจะยึดเครื่องหมายของตัว Operator ทางด้านซ้ายเป็นหลัก : 5 % 3 = 2 และ 5 % -3 = 2 แต่ -5 % 3 = -2 และ -5 % -3 = -2

Assignment Operators

ในบาง SL Languages เช่น SQL-Server จะใช้เครื่องหมาย = สำหรับการกำหนดค่า ในขณะที่ภาษาอื่น ๆ เช่น MySQL และ Postgres จะใช้เครื่องหมาย :=

ใน SQL Server คุณสามารถใช้ Bitwise หรือ Arithmetic Operators เพื่อกำหนดให้ ค่าที่ถูกคำนวณ กลับไปสู่ตัวถูกดำเนินการด้านซ้าย (Left Operand) ใน Compound Assignment ตัวอย่างเช่น:

สามารถเขียนใหม่ได้เป็น:

Bitshifting

อีกวิธีหนึ่ง ในการจัดการกับ Bits ใน SQL ก็คือ การใช้ Arithmetic Bitshifting การดำเนินการนี้จะทำการ "ย้าย"  Bits ใน Number ของคุณไม่ว่าจะเป็นซ้ายหรือขวา แล้วจะเติมในค่าใหม่ด้วย 0 เข้าไป Bitshifting Left เป็นวิธีที่ง่ายสำหรับการคูณด้วยการยกกำลังของ 2 และ Bitshifting Right เป็นวิธีสำหรับการหารด้วยการยกกำลังของ 2 ตัวอย่างเช่น 5 << 2 จะเท่ากับ 20 หมายถึงคุณย้าย Bits จาก 0000 0101 ไปเป็น 0001 0100 ซึ่งเป็นผลลัพธ์เดียวกับการคูณด้วย 4 (ซึ่งมาจาก 2 ยกกำลังด้วยจำนวน Shift ซึ่งในที่นี้คือ 2)

Number ใน SQL ถูกจำกัดไว้ด้วยจำนวน Bits ที่คงที่ ตัวอย่างเช่น Integer จะมีเพียง 32 Bits และหากคุณทำการ Bitshifting Bit ผ่านลำดับที่ 32 ไปแล้ว มันก็จะหลุดออกไปจาก Number โดยทั่วไปถ้าคุณทำการ Bitshifting ด้วยจำนวนที่มากกว่า 32 มันก็เหมือนกับการใช้ Modulo เช่น 7 << 34 ก็จะเหมือนกับ 7 << 2

Boolean Logic

ใน MySQL จะสามารถให้คุณแทนที่ Character ของ And, Or และ Not ในเงื่อนไขได้ โดยคุณสามารถแทนที่

ด้วย

String Comparisons และ Manipulation

เมื่อต้องทำงานกับ Strings คุณอาจรู้สึกไม่ค่อยคุ้นเคย ไม่ว่าคุณจะเป็นมือใหม่เพิ่งเริ่มเขียน Program หรือยังใหม่กับ SQL โดยในบาง SQL Variants จะสามารถใช้เครื่องหมาย + เพื่อเชื่อม Strings ในขณะที่ตัวอื่น ๆ อย่าง MySQL ใช้ || เมื่อเปรียบเทียบ Strings โดยใช้ LIKE Operator, % และ _ โดยมันจะทำหน้าที่แทน Character ใด ๆ (wildcard character) ตัวอย่างเช่น คำว่า "Data" สามารถเป็นได้ทั้ง D_t_ และ %at% คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับ Strings ได้ที่นี่

มีความแตกต่างเพิ่มเติมระหว่าง Strings Quoted ที่ใช้สัญลักษณ์ Single Quote (‘) และ Double Quote (“) โดย String ที่อยู่ใน " Single Quote" และ " Double Quote" จะหมายถึง Identifiers อย่าง ชื่อ Table และชื่อ Column 

Regular Expressions

Regular Expressions มักเต็มไปด้วย Characters ที่ยากจะเข้าใจ แล้วมันมีการใช้งานพิเศษสำหรับ Characters ที่หลากหลายอยู่ด้วยไหม? ตัวอย่างการใช้สำหรับการ Match เช่น {2} หมายถึง ระบุว่ามี 2 Characters และจะอยู่ปิดท้ายต่อจาก Range ของ Characters ในวงเล็บ : [A-Za-z0-9] 

เพื่อช่วยถอดรหัสของ Regular Expression ใน SQL นี้: ‘.*([0-9]+)[ _-]?ye?a?rs( old)?’ คุณสามารถอ่านเพิ่มเติมได้จากบทความนี้

Count

คุณอาจเห็นทั้ง count(1) และ count(*) ใน Queries มาบ้างแล้ว ซึ่งอันที่จริงพวกมันสามารถใช้ทดแทนกันได้ และทั้งคู่ก็ใช้สำหรับนับจำนวน Rows ที่ถูกเลือก

 

คุณอาจเคยพบในกรณีที่การ count ถูกนำไปใช้กับ Table ที่ระบุไว้ – ในกรณีนี้จะเป็นการนับ Fields ไม่ใช่ Rows ใน Table ซึ่งขอแนะนำให้คุณเลือกและใช้งานมันสักอย่างหนึ่ง – ไม่มีความแตกต่างทั้ง Semantic หรือ Performance ระหว่าง 2 รูปแบบ โปรดทราบว่า count ทั้ง 2 แบบที่นี่จะ Return ในจำนวนที่แตกต่าง

Type Conversion

นอกเหนือจากการ Cast แล้ว คุณยังสามารถใช้ :: เพื่อแปลงค่าไปเป็น Type ที่ต้องการได้อีกด้วย

จะกลายเป็น

Postgres JSON

Postgres มีการรองรับการใช้งานสำหรับ Type ของ JSON เป็นอย่างดี รวมถึง Character Operators เป็นจำนวนมากเพื่อดึง Data ออกมาจาก JSON Blob

Local และ Global Variables

ในบางระบบบริหารจัดการ Database เมื่อกำหนดตัวแปรขึ้นมา ตัวแปรเหล่านั้นอาจถูกนำหน้าด้วย @ หรือ @@ โดยที่เครื่องหมาย @ จะอ้างอิงถึงตัวแปรประเภท Local ส่วนเครื่องหมาย @@ เป็นการอ้างอิงถึงสถานะที่เป็น Global เช่น @@global.port

สำหรับ Oracle จะใช้ @ สำหรับการเรียกใช้ Script ซึ่งคุณสามารถอ่านรายละเอียดเพิ่มเติมได้ที่นี่

Comments

คุณสามารถใช้ Comments เพื่อรวมข้อความที่จะไม่ได้รับการประเมินว่า เป็นส่วนหนึ่ง SQL Query ของคุณ โดยชุดสัญลักษณ์ของ Comments ที่ใช้งานกันก็คือ -, / *, * / และใน MySQL จะใช้ # สำหรับ Inline Comments ได้อีกด้วย

Oracle Outer Join

Operator เก่าแก่สำหรับ Oracle Databases รุ่นเก่า ๆ คือ จะใช้ (+) เพื่อรองรับ Outer Joins

มีลักษณะที่คล้ายกันกับ

โดยส่วนใหญ่มันจะมีลักษณะคล้ายกันกับ Outer Join แต่ก็มีข้อยกเว้นบางอย่างที่คุณสามารถตรวจสอบได้ใน Language Reference ของ Oracle

ที่มา:  https://www.sisense.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด