หน้าแรก
หน้าแรก
ใน MySQL เป็นไปไม่ได้ที่ไคลเอ็นต์จะเก็บตัวแปรผู้ใช้ไว้อย่างถาวร เป็นเพราะตัวแปรทั้งหมดสำหรับการเชื่อมต่อไคลเอนต์ที่กำหนดจะว่างโดยอัตโนมัติเมื่อไคลเอนต์นั้นออก
เราต้องใช้เครื่องหมายคำพูดที่มีคำสงวนเพื่อใช้เป็นตัวระบุ เครื่องหมายคำพูดจะเป็นแบบเดี่ยวหรือแบบคู่ก็ได้ขึ้นอยู่กับโหมด ANSI_QUOTES SQL หากโหมดนี้ถูกปิดใช้งาน เครื่องหมายคำพูดของตัวระบุคือเครื่องหมายย้อนกลับ (“`”) ลองพิจารณาตัวอย่างต่อไปนี้ที่เราสร้างตารางชื่อ เลือก − mysql> create table `select`
อย่างที่เราทราบดีว่าวัตถุบางอย่างภายใน MySQL นั้นเรียกว่าตัวระบุ ออบเจ็กต์เหล่านี้รวมถึงฐานข้อมูล ตาราง ดัชนี คอลัมน์ นามแฝง มุมมอง กระบวนงานที่เก็บไว้ พาร์ติชั่น พื้นที่ตาราง ฯลฯ ตัวระบุจะถูกจัดเก็บโดยใช้ Unicode (UTF-8) ความยาวสูงสุดของตัวระบุแต่ละประเภทมีอยู่ในตารางต่อไปนี้: ซีเนียร์ เลขที่ ตัวระ
ในกรณีที่สตริงย่อยมีมากกว่าหนึ่งครั้งในสตริง ฟังก์ชัน MySQL LOCATE() จะส่งคืนตำแหน่งที่เกิดครั้งแรกของสตริงย่อย ตัวอย่าง mysql> Select LOCATE('good','Ram is a good boy. Is Ram a good boy?')As Result; +--------+ | Result | +--------+ | 10 | +--------+ 1 row in set (0.
ดังที่เราทราบดีว่าค่าการแจงนับนั้นสัมพันธ์กับค่าดัชนี ดังนั้นหากเราจะใช้ค่าการแจงนับในนิพจน์ การคำนวณทั้งหมดจะทำกับตัวเลขดัชนี ตัวอย่างต่อไปนี้จะอธิบายให้ชัดเจน - mysql> Select * from Result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | GOO
ฟังก์ชัน MySQL ELT() ส่งคืนค่า NULL เป็นเอาต์พุต หากหมายเลขดัชนีที่ระบุเป็นอาร์กิวเมนต์น้อยกว่า ต่อไปนี้เป็นตัวอย่างเพื่อให้ชัดเจนยิ่งขึ้น - ตัวอย่าง mysql> Select ELT(0,'Ram','is','a','good','boy')As Result; +--------+ | Result | +--------+ | NULL |
ตามที่เราทราบอาร์กิวเมนต์ที่ 1 ของฟังก์ชัน ELT() ต้องเป็นค่าจำนวนเต็ม แต่เมื่อเราระบุหมายเลขดัชนีที่ไม่ใช่จำนวนเต็ม ฟังก์ชัน MySQL ELT() จะคืนค่า NULL พร้อมคำเตือน ตัวอย่าง mysql> select ELT('one','Ram,is,good,boy')As Result; +--------+ | Result | +--------+ | NULL | +-----
นอกจากนี้ยังเป็นฟังก์ชันสตริง MySQL ที่ใช้สำหรับการค้นหา ด้วยความช่วยเหลือของไวยากรณ์ต่อไปนี้ของฟังก์ชัน EXPORT_SET() เราจะเข้าใจการทำงานของมัน - ไวยากรณ์ EXPORT_SET(bits, on, off, separator, number of bits) ที่นี่ในรูปแบบนี้ บิต (ได้หลังจากแปลงจำนวนเต็มเป็นบิต) จะถูกนำมาเปรียบเทียบหากเป็น 1 หรือ 0
ฟังก์ชัน MySQL EXPORT_SET() จะคืนค่า NULL หากอาร์กิวเมนต์ใดๆ ที่ระบุเป็น NULL ตัวอย่างต่อไปนี้จะแสดงให้เห็น - ตัวอย่าง mysql> Select EXPORT_SET(NULL, 'Y','N',',', 4); +----------------------------------+ | EXPORT_SET(NULL, 'Y','N',',', 4) | +------
MySQL เก็บค่า ENUM ภายในเป็นคีย์จำนวนเต็ม (หมายเลขดัชนี) เพื่ออ้างอิงสมาชิก ENUM สาเหตุหลักที่ไม่เก็บค่าจำนวนเต็มในคอลัมน์ ENUM ก็คือมันชัดเจนมากว่า MySQL ลงเอยด้วยการอ้างอิงดัชนีแทนค่าและในทางกลับกัน ตัวอย่าง ตัวอย่างต่อไปนี้สามารถอธิบายได้ - mysql> Create table enmtest(Val ENUM('0','
เราสามารถทำได้โดยใช้แอตทริบิวต์ DEFAULT ของประเภทข้อมูล ENUM แอตทริบิวต์ DEFAULT ทำให้ชนิดข้อมูล ENUM มีค่าเริ่มต้นเมื่อไม่ได้ระบุค่า กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าคำสั่ง INSERT ไม่จำเป็นต้องใส่ค่าสำหรับฟิลด์นี้ เพราะถ้าไม่ได้รวมไว้ ค่าที่อยู่หลัง DEFAULT จะถูกแทรก ไม่อนุญาตให้ใช้ฟังก์ชันในนิพจ
อันที่จริง ค่าเริ่มต้นของอาร์กิวเมนต์ที่ห้าคือจำนวนบิตคือ 64 ดังนั้น หากเราจะไม่ระบุค่าใดๆ ในอาร์กิวเมนต์ที่ห้า MySQL จะตรวจสอบบิตสูงสุด 64 บิตและสร้าง ผลลัพธ์. สามารถเข้าใจได้จากตัวอย่างต่อไปนี้ − ตัวอย่าง mysql> SELECT EXPORT_SET(5, 'Y','N',' ')\G ***********************
ต่อไปนี้เป็นข้อจำกัดของ MySQL ENUM - ค่าการแจงนับไม่สามารถเป็นนิพจน์ได้ เราไม่สามารถใช้นิพจน์เป็นสมาชิกการแจงนับได้ แม้แต่นิพจน์ที่ประเมินเป็นค่าสตริง ตัวอย่าง ตัวอย่างเช่น เราสามารถใช้ฟังก์ชัน CONCAT ที่นำไปสู่การประเมินสตริงได้ แบบสอบถามต่อไปนี้ใช้ไม่ได้ - mysql> create table limit_enum(number
ดังที่เราทราบดีว่าค่าเริ่มต้นของอาร์กิวเมนต์ที่ห้าคือจำนวนบิตคือ 64 ดังนั้นหากเราจะไม่ระบุค่าใด ๆ ในอาร์กิวเมนต์ที่ห้า MySQL จะตรวจสอบบิตสูงสุด 64 บิตและให้ผลลัพธ์ ในขณะที่ข้ามอาร์กิวเมนต์ที่สี่เช่นตัวคั่น MySQL จะใช้เครื่องหมายจุลภาค (,) เป็นตัวคั่นขณะแสดงผลลัพธ์ ตัวอย่าง mysql> SELECT EXPORT_SE
MySQL ยอมรับค่าว่างสำหรับการแจงนับก็ต่อเมื่อไม่ได้ตั้งค่าโหมด SQL เป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES มิฉะนั้น MySQL จะไม่ยอมรับค่าว่างและแสดงข้อผิดพลาด เนื่องจากเราทราบดีว่าค่าการแจงนับแต่ละค่ามีค่าดัชนี ค่าว่างจะมีค่าดัชนีเป็น 0 ตัวอย่าง mysql> SET SQL_MODE ='Tradit
หากโหมด SQL เข้มงวดถูกปิดใช้งาน และเราใส่ค่าที่ไม่ถูกต้อง (ซึ่งไม่อยู่ในรายการค่าการแจงนับที่อนุญาต) ลงใน ENUM แล้ว MySQL จะแทรกสตริงว่างแทนที่จะแสดงข้อผิดพลาด แต่ถ้าเปิดใช้งานโหมด SQL ที่เข้มงวดแล้ว MySQL จะแสดงข้อผิดพลาดในการแทรกค่าที่ไม่ถูกต้อง ตัวอย่าง หลังจากปิดการใช้งานโหมด SQL ที่เข้มงวดแล้ว
จะมีการเปลี่ยนแปลงที่สำคัญในผลลัพธ์ถ้าเรามีการรวมกันของ NULL และค่าอื่น ๆ ในรายการของสตริงที่ให้ไว้เป็นอาร์กิวเมนต์ในฟังก์ชัน FIELD() ตัวอย่างต่อไปนี้จะแสดงให้เห็น ตัวอย่าง mysql> Select FIELD(good,Ram,is,good,boy); +---------------------------------------+ | FIELD(good,Ram,is,good,boy) | +-----
ฟังก์ชัน FIND_IN_SET() ตามชื่อที่ระบุ ใช้เพื่อค้นหาสตริงที่ระบุจากรายการสตริง โดยทั่วไปจะส่งคืนตำแหน่งของสตริง หากมี (เป็นสตริงย่อย) ในรายการสตริง ไวยากรณ์ FIND_IN_SET(Search String, string list) ที่นี่ สตริงการค้นหาคือสตริงที่จะค้นหา และรายการสตริงคือสตริงที่มีสตริงย่อยที่คั่นด้วยเครื่องหมายจุลภาค
เมื่อเราใช้ฟังก์ชัน FIND_IN_SET() ในส่วนคำสั่ง WHERE มันจะค้นหาสตริงการค้นหาภายในสตริงที่ระบุตามที่ระบุในอาร์กิวเมนต์และดึงข้อมูลคอลัมน์ทั้งหมดจากแถวที่เกี่ยวข้อง ต่อไปนี้เป็นตัวอย่างเพื่อแสดงให้เห็น - ตัวอย่าง ในตัวอย่างนี้ เราได้รับคอลัมน์จากตาราง นักเรียน โดยที่แถวมีค่าของชื่อเป็น Gaurav ที่นี่
ฟังก์ชัน FIND_IN_SET() คืนค่า NULL เป็นเอาต์พุต หากอาร์กิวเมนต์ใดๆ เช่น สตริงการค้นหาหรือรายการสตริงเป็น NULL แน่นอน มันจะส่งคืน NULL หากอาร์กิวเมนต์ทั้งสองเป็น NULL ตัวอย่าง mysql> Select FIND_IN_SET(NULL,'Ram is a good boy') AS Result; +--------+ | Result | +--------+ | NULL | +-