SQL NULL Values
ที่คำสั่งSQL SELECT พร้อมคำสั่ง WHERE จะเป็นการดึงข้อมูลออกมาจาก DATABASE แต่เมื่อเราทำตามเงื่อนไขแล้วค่าที่ได้จากการทำเป็น NULLNULL Value เป็นค่าที่จะแสดงค่าที่ไม่รู้จักที่หายไป
เป็นค่าเริ่มต้นของคอลัมน์ตารางถือเป็นค่า NULL
ถ้ามีคอลัมน์ตารางแล้วเราเพิ่มเรคอร์ดเข้าไปใหม่หรืออัพเดทเรคอร์ดเดิมโดยปรารศจากการเพิ่มค่าลงในคอลัมน์ จะบันทึกค่าเรคอร์ดที่คอลัมน์นั้นเป็น NULL
How can we test for NULL values?
เราจะไม่ใช้การเปรียบเทียบด้วยเครื่องหมาย Operators เช่น =, >, <
แต่เราจะใช้ IS NULL และ IS NOT NULL แทน
ตัวอย่างการใช้คำสั่ง SQL IS NULL
เลือกใช้ตาราง Categories ที่มีข้อมูลเริ่มต้นที่ 8 เรคอร์ด ทำการ INSERT INTO แล้วตั้งใจเว่นให้ในคอลัมน์ Description ว่าง ดังภาพ
รูปแสดงข้อมูลทั้งหมด(*) ในตาราง Categories
รูปการ INSERT INTO ข้อมูลใหม่ ที่เว้น Description ไว้
รูปแสดงข้อมูลทั้งหมดหลังการเพิ่มเรคอร์ด
ปัญหาที่พบคือเมื่อเรียกใช้คำสั่ง
SELECT CategoryID,CategoryName,Description FROM Categories WHERE Description IS NULL |
แล้วค่าไม่พบข้อมูลที่ค้นหา ทำให้ต้องกลับไปดูเงื่อนไขการเป็น NULL คือต้องไม่ใส่ค่าลงในคอลัมน์นั้นเลย ในก่อนหน้าได้ใช่ค่า ' ' (ช่องว่างไป) จึงได้ทำการ INSERT ค่าใหม่
INSERT INTO Categories (CategoryID,CategoryName) VALUES ('10','wine') |
รูปผลลัพธ์ที่ได้เมื่อทำการ้พิ่มเรคอร์ดเข้าไปและค่า Description แสดงค่า NULL
เมื่อเรียกด้วยคำสั่ง SQL IS NULL อีกครั้ง
รูปแสดงผลที่ได้จากการค้นหาที่ IS NULL
ตัวอย่างการใช้คำสั่ง SQL IS NOT NULL
ข้อมูลที่ไม่ใช่ NULL จะแสดงผลออกมาเมื่อเลือกใช้คำสั่งนี้ที่ WHERE
SELECT CategoryID,CategoryName,Description FROM Categories WHERE Description IS NOT NULL |
รูปผลที่ได้เมื่อใช้คำสั่ง IS NOT NULL
SQL NOT NULL Constraint
เป็นข้อจำกัดที่ห้ามให้ข้อมูลในคอลัมน์นั้นเป็น NULLSQL UNIQUE Constraint
เป็นการระบุที่ให้ข้อมูลในฐานข้อมูลที่คอลัมน์นั้นไม่ซ้ำกัน คล้ายกับ PRIMARY KEY แตกต่างกันที่เราสามารถใช้ UNIQUE Constraint ได้หลายครั้งใน 1 ตาราง แต่ PRIMARY KEY Constraint จะมีแค่ตัวเดียวใน 1 ตารางในการใช้ UNIQUE จะใช้ตั้งแต่เริ่มสร้างตารางหรือแก้ไขหลังสร้างตารางแล้วก็ได้
สามารถตั้งชื่อข้อจำกัด UNIQUE และกำหนดในหลายๆคอลัมน์พร้อมกันได้
ลดข้อจำกัด (Drop) UNIQUE ได้
ALTER TABLE Categories
ADD CONSTRAINT uc_DEKD UNIQUE (CategoryID,CategoryName)
ใช้เมื่อต้องแก้ไขในตารางที่สร้างมาแล้วไม่ได้และการยกเลิกเงื่อนไข UNIQUE ไม่ได้ อาจจะใช้คำสั่งไม่ตรงกับ DBMS ที่ใช้
รูปกล่องข้อความที่ปรากฏขึ้นเมื่อใช้คำสั่ง UNIQUE
SQL DROP INDEX, DROP TABLE and DROP DATABASE
เป็นคำสั่งที่ใช้ลบข้อมูลที่เฉพาะ ข้อมูลทั้งตาราง และ ข้อมูลทั้งฐานข้อมูลทิ้ง
......................................................
ไม่มีความคิดเห็น:
แสดงความคิดเห็น