MySQL เป็นโมฆะและไม่เป็นโมฆะ บทช่วยสอนพร้อมตัวอย่าง

ใน SQL Null นั้นเป็นทั้งค่าและคีย์เวิร์ด มาดูค่า NULL ก่อน -

MySQL เป็นโมฆะและไม่เป็นโมฆะ

Null เป็นค่า

หากอธิบายอย่างง่าย NULL เป็นเพียงตัวแทนสำหรับข้อมูลที่ไม่มีอยู่ เมื่อดำเนินการแทรกข้อมูลลงในตาราง จะมีบางครั้งที่ค่าฟิลด์บางค่าไม่พร้อมใช้งาน

เพื่อให้เป็นไปตามข้อกำหนดของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ที่แท้จริง MySQL ใช้ NULL เป็นตัวยึดตำแหน่งสำหรับค่าที่ยังไม่ได้ส่ง ภาพหน้าจอด้านล่างแสดงให้เห็นว่าค่า NULL มีลักษณะอย่างไรในฐานข้อมูล

Null เป็นค่า

ตอนนี้เรามาดูข้อมูลพื้นฐานบางประการสำหรับ NULL ก่อนที่เราจะไปอภิปรายกันต่อไป

  • NULL ไม่ใช่ประเภทข้อมูล – นี่หมายความว่าไม่ได้รับการยอมรับว่าเป็น "int", "date" หรือประเภทข้อมูลอื่นใดที่กำหนดไว้
  • การคำนวณทางคณิตศาสตร์ ที่เกี่ยวข้องกับ NULL เสมอ กลับเป็นโมฆะ ตัวอย่างเช่น 69 + NULL = NULL
  • ทั้งหมด ฟังก์ชั่นรวม มีผลเฉพาะแถวที่ไม่มีค่า NULL.

ตอนนี้เรามาสาธิตวิธีที่ฟังก์ชันนับปฏิบัติต่อค่าว่าง มาดูเนื้อหาปัจจุบันของตารางสมาชิกกันดีกว่า-

SELECT * FROM `members`;

เมื่อดำเนินการตามสคริปต์ข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

มานับสมาชิกทุกคนที่อัพเดต contact_number ของตนกันดีกว่า

SELECT COUNT(contact_number)  FROM `members`;

การดำเนินการแบบสอบถามข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้

COUNT(contact_number)
7

หมายเหตุ: ยังไม่รวมค่าที่เป็น NULL

ไม่ใช่อะไร?

ตัวดำเนินการตรรกะ NOT ใช้เพื่อทดสอบเงื่อนไขบูลีน และส่งคืนค่าจริงหากเงื่อนไขเป็นเท็จ ตัวดำเนินการ NOT ส่งคืนค่าเท็จหากเงื่อนไขที่ทดสอบเป็นจริง

เงื่อนไข ไม่ Operaผลลัพธ์ของทอร์
จริง เท็จ
เท็จ จริง

เหตุใดจึงใช้ NOT null

จะมีบางกรณีที่เราจะต้องดำเนินการคำนวณกับชุดผลลัพธ์ของแบบสอบถามและส่งคืนค่าต่างๆ การดำเนินการทางคณิตศาสตร์ใดๆ กับคอลัมน์ที่มีค่า NULL จะส่งกลับผลลัพธ์เป็นค่า null เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าว เราสามารถใช้คำสั่ง NOT NULL เพื่อจำกัดผลลัพธ์ที่ข้อมูลของเราดำเนินการอยู่

ไม่ใช่ค่า NULL

สมมติว่าเราต้องการสร้างตารางที่มีช่องบางช่องซึ่งควรระบุค่าไว้เสมอเมื่อแทรกแถวใหม่ในตาราง เราสามารถใช้คำสั่งย่อย NOT NULL บนฟิลด์ที่กำหนดเมื่อสร้างตาราง

ตัวอย่างที่แสดงด้านล่างนี้จะสร้างตารางใหม่ที่มีข้อมูลของพนักงาน ควรระบุหมายเลขพนักงานเสมอ

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

ตอนนี้เราลองแทรกบันทึกใหม่โดยไม่ระบุชื่อพนักงานแล้วดูว่าจะเกิดอะไรขึ้น

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

ดำเนินการสคริปต์ข้างต้นใน MySQL workbench ให้ข้อผิดพลาดดังต่อไปนี้

ไม่ใช่ค่า NULL

คำหลักที่เป็นโมฆะ

NULL ยังใช้เป็นคำสำคัญได้เมื่อทำการดำเนินการบูลีนกับค่าที่รวมค่า NULL คำสำคัญ “IS/NOT” จะใช้ร่วมกับคำ NULL เพื่อจุดประสงค์ดังกล่าว ไวยากรณ์พื้นฐานเมื่อใช้ค่า null เป็นคำสำคัญมีดังนี้

`comlumn_name'  IS NULL
`comlumn_name' NOT NULL

ที่นี่

  • “เป็นโมฆะ เป็นคำสำคัญที่ทำการเปรียบเทียบแบบบูลีน จะคืนค่าเป็นจริงหากค่าที่ให้มาเป็น NULL และจะส่งคืนค่าเป็นเท็จหากค่าที่ให้มาไม่ใช่ NULL
  • "ไม่เป็นโมฆะ"เป็นคำสำคัญที่ทำการเปรียบเทียบแบบบูลีน มันจะคืนค่าเป็นจริงหากค่าที่ให้มาไม่เป็น NULL และจะส่งคืนค่าเป็นเท็จหากค่าที่ให้มาเป็นโมฆะ

ตอนนี้เรามาดูตัวอย่างเชิงปฏิบัติที่ใช้คีย์เวิร์ด NOT NULL เพื่อกำจัดค่าคอลัมน์ทั้งหมดที่มีค่า Null

ดำเนินการต่อจากตัวอย่างข้างต้น สมมติว่าเราต้องการรายละเอียดของสมาชิกที่มีหมายเลขติดต่อไม่ใช่ค่าว่าง เราสามารถดำเนินการสอบถามเช่น

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

การดำเนินการค้นหาข้างต้นจะให้เฉพาะบันทึกที่หมายเลขติดต่อไม่เป็นค่าว่าง

สมมติว่าเราต้องการบันทึกข้อมูลสมาชิกที่มีหมายเลขติดต่อเป็นค่าว่าง เราสามารถใช้แบบสอบถามต่อไปนี้

SELECT * FROM `members` WHERE contact_number IS NULL;

การดำเนินการแบบสอบถามข้างต้นจะให้ข้อมูลสมาชิกที่มีหมายเลขติดต่อเป็นค่า NULL

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

การเปรียบเทียบค่า Null

ตรรกะสามค่า – การดำเนินการบูลีนบนเงื่อนไขที่เกี่ยวข้องกับค่า NULL สามารถส่งคืน “ไม่ทราบ” “จริง” หรือ “เท็จ”

ตัวอย่างเช่น โดยใช้คีย์เวิร์ด “IS NULL” เมื่อทำการดำเนินการเปรียบเทียบ เกี่ยวข้องกับ NULL สามารถกลับมาได้ จริง or เท็จการใช้ตัวดำเนินการเปรียบเทียบอื่น ๆ จะส่งกลับ “ไม่ทราบ”(โมฆะ)

สมมติว่าคุณเปรียบเทียบหมายเลข 5 กับ XNUMX

SELECT 5 =5;

ผลลัพธ์ของแบบสอบถามคือ 1 ซึ่งหมายถึง TRUE

5 =5
1

มาทำการดำเนินการแบบเดียวกันกับ NULL กัน

SELECT NULL = NULL;
NULL = NULL
NULL

ลองดูอีกตัวอย่างหนึ่ง

SELECT 5 > 5;
5 > 5
0

ผลลัพธ์ของแบบสอบถามคือ 0 ซึ่งหมายถึง FALSE

ลองดูตัวอย่างเดียวกันโดยใช้ NULL

SELECT NULL > NULL;
NULL > NULL
NULL

ลองใช้คีย์เวิร์ด IS NULL

SELECT 5 IS NULL;
5 IS NULL
0

ผลลัพธ์ของแบบสอบถามคือ 0 ซึ่งเป็น FALSE

SELECT NULL IS NULL;

NULL IS NULL
1

ผลลัพธ์ของแบบสอบถามคือ 1 ซึ่งเป็น TRUE

สรุป

  • NULL เป็นตัวยึดตำแหน่งสำหรับเขตข้อมูลตารางเสริม
  • MySQL ถือว่าค่า NULL แตกต่างจากข้อมูลประเภทอื่น ค่า NULL เมื่อใช้ในเงื่อนไขจะประเมินเป็นค่าบูลีนเท็จ
  • การดำเนินการเชิงตรรกะ NOT ใช้เพื่อทดสอบค่าบูลีน และประเมินผลเป็นจริงหากค่าบูลีนเป็นเท็จ และประเมินผลเป็นเท็จหากค่าบูลีนเป็นจริง
  • ส่วนคำสั่ง NOT NULL ใช้เพื่อกำจัดค่า NULL ออกจากชุดผลลัพธ์
  • การดำเนินการทางคณิตศาสตร์กับค่า NULL จะส่งกลับผลลัพธ์เป็น NULL เสมอ
  • ไม่สามารถใช้ตัวดำเนินการเปรียบเทียบเช่น [, =, ฯลฯ] เพื่อเปรียบเทียบค่า NULL ได้