หน้าแรก
หน้าแรก
MySQL ช่วยให้เราสามารถเพิ่มข้อจำกัดของ FOREIGN KEY ในหลายคอลัมน์ในตาราง เงื่อนไขคือแต่ละ Foreign Key ในตารางย่อยต้องอ้างอิงถึงตารางหลักที่แตกต่างกัน ตัวอย่าง สมมติว่าเรามีตาราง customer2 ซึ่งมีข้อ จำกัด ของคีย์หลักในฟิลด์ cust_unq_id ดังนี้ - mysql> describe customer2; +-------------+-----------
ตามที่เราทราบดีว่า MySQL รองรับคีย์ต่างประเทศสำหรับความสมบูรณ์ของการอ้างอิง แต่ไม่รองรับข้อจำกัด CHECK แต่เราสามารถเลียนแบบได้โดยใช้ทริกเกอร์ สามารถอธิบายได้โดยใช้ตัวอย่างด้านล่าง - ตัวอย่าง สมมติว่าเรามีตารางชื่อ car ซึ่งสามารถมีหมายเลขทะเบียนไวยากรณ์การแก้ไขได้ เช่น อักษรสองตัว ขีดกลาง สามหลัก ขี
การตอบสนองของ MySQL เมื่อพบนอกช่วงหรือวันที่ที่ไม่ถูกต้องจะขึ้นอยู่กับ SQL MODE หากเราเปิดใช้งานโหมด ALLOW_INVALID_DATES แล้ว MySQL จะแปลงค่านอกช่วงเป็นศูนย์ทั้งหมด (เช่น 0000:00:00 00:00:00) และจัดเก็บค่าเดียวกันในตารางโดยไม่ทำให้เกิดข้อผิดพลาดหรือคำเตือน ตัวอย่างเช่น เราสามารถเปลี่ยน SQL MODE ได้
ในการระบุ ZEROFILL สำหรับคอลัมน์ตัวเลข MYSQL จะเติมค่าที่แสดงของฟิลด์โดยอัตโนมัติด้วยค่าศูนย์จนถึงความกว้างของการแสดงผลที่ระบุไว้ในคำจำกัดความของคอลัมน์ ตัวอย่างเช่น เราสร้างตาราง showzerofill และใส่ค่าดังนี้ − , ,,,;แบบสอบถามตกลง 5 แถวได้รับผลกระทบ (0.03 วินาที)บันทึก:5 รายการซ้ำ:0 คำเตือน:0 ตอนน
เราสามารถลบข้อจำกัดของ FOREIGN KEY ออกจากคอลัมน์ของตารางที่มีอยู่ได้โดยใช้คีย์เวิร์ด DROP ร่วมกับคำสั่ง ALTER TABLE ไวยากรณ์ ALTER TABLE table_name DROP FOREIGN KEY constraint_name ชื่อข้อจำกัดในที่นี้คือชื่อของข้อจำกัดของคีย์ต่างประเทศที่เรานำไปใช้ขณะสร้างตาราง หากไม่มีการระบุชื่อข้อจำกัด MySQL
เราสามารถปิดการตรวจสอบคีย์ต่างประเทศโดยใช้คำสั่งต่อไปนี้ - mysql> Set foreign_key_checks = 0; Query OK, 0 rows affected (0.00 sec) และเราสามารถเปิดใช้งานได้ด้วยความช่วยเหลือของคำสั่งต่อไปนี้ − mysql> Set foreign_key_checks = 1; Query OK, 0 rows affected (0.00 sec) ข้อดีบางประการของการปิดใช้งา
เมื่อสองตารางเชื่อมต่อกับ Foreign key และข้อมูลในตารางหลักจะถูกลบออก ซึ่งมีระเบียนอยู่ในตารางย่อยด้วย วิธีต่อไปนี้คือวิธีการรักษาความสมบูรณ์ของข้อมูล - เมื่อลบ Cascade ตัวเลือกนี้จะลบบันทึกออกจากตารางลูกด้วย หากค่าของ Foreign Key นั้นถูกลบออกจากตารางหลัก เมื่อลบค่า Null ตัวเลือกนี้จะตั้งค่าทั้งหมด
ทั้ง CHAR และ NCHAR เป็นประเภทข้อมูลสตริงที่มีความยาวคงที่ มีความแตกต่างดังต่อไปนี้ - ประเภทข้อมูล CHAR ประเภทข้อมูล NCHAR ชื่อเต็มคือ CHARACTER ชื่อเต็มคือ NATIONAL CHARACTER มันใช้ชุดอักขระ ASCII มันใช้ชุดอักขระ Unicode และข้อมูลจะถูกจัดเก็บในรูปแบบ UTF8 ใช้พื้นที่ 1 ไบต์สำหรับอักขร
CHAR และ VARCHAR เป็นทั้งประเภทข้อมูลอักขระ ASCII และเกือบจะเหมือนกัน แต่จะต่างกันในขั้นตอนการจัดเก็บและดึงข้อมูลจากฐานข้อมูล ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง CHAR และ VARCHAR ใน MySQL - ประเภทข้อมูล CHAR ประเภทข้อมูล VARCHAR ชื่อเต็มคือ CHARACTER ชื่อเต็มคือ VARIABLE CHARACTER มันเก็บค
จริงๆ แล้ว ข้อมูลทั้งสองประเภทนี้ใน MySQL เก็บสตริงและสามารถตั้งค่าให้มีความยาวสูงสุดได้ การใช้ประเภทข้อมูลเหล่านี้ล้วนขึ้นอยู่กับความต้องการ ต่อไปนี้เป็นบางประเด็นที่จะทำให้เราชัดเจนว่าเมื่อใดควร CHAR และเมื่อ VARCHAR - สมมติว่าถ้าเรามีขนาดข้อมูลตายตัว เช่น แฟล็ก Y และ N ควรใช้ CHAR มากกว่า VARCHA
ตารางต่อไปนี้จะให้ความแตกต่างระหว่าง PRIMARY KEY และ UNIQUE constraint - คีย์หลัก UNIQUE Constraint 1. สามารถสร้างคีย์หลักได้เพียงคีย์เดียวเท่านั้นในตาราง 1. คุณสามารถเพิ่ม UNIQUE Constrains ลงในตารางได้มากกว่าหนึ่งข้อ 2. คีย์หลักสร้างดัชนีคลัสเตอร์โดยค่าเริ่มต้น 2. UNIQUE Constraint สร
ดังที่เราทราบใน MySQL ค่า VARCHAR จะถูกเก็บไว้เป็นคำนำหน้าความยาว 1 ไบต์หรือ 2 ไบต์พร้อมข้อมูล คำนำหน้าความยาวนี้ชี้ให้เห็นจำนวนไบต์ในค่าของข้อมูล ค่าข้อมูลเองจะตัดสินว่าเมื่อใดที่ประเภทข้อมูล VARCHAR จะใช้ 1 ไบต์และเมื่อนำหน้าความยาว 2 ไบต์ คอลัมน์ใช้ความยาว 1 ไบต์หากค่าต้องการไม่เกิน 255 ไบต์ คอล
คำสั่ง MySQL SHOW CREATE TABLE จะให้ข้อ จำกัด ที่ใช้กับตารางใดตารางหนึ่งพร้อมกับรายละเอียดอื่น ๆ เกี่ยวกับตารางนั้น ไวยากรณ์จะเป็นดังนี้ − ไวยากรณ์ SHOW CREATE TABLE table_name; ในที่นี้ table_name คือชื่อของตารางที่เราอยากเห็นข้อจำกัด ตัวอย่าง ในตัวอย่างนี้ เราได้รับรายละเอียดของตารางชื่อ พนักงาน
เราสามารถตั้งค่าข้อจำกัด PRIMARY KEY ในหลายคอลัมน์ของตารางที่มีอยู่โดยใช้คีย์เวิร์ด ADD ร่วมกับคำสั่ง ALTER TABLE ตัวอย่าง สมมติว่าเรามีตาราง Room_allotment ดังนี้ - mysql> Create table Room_allotment(Id Int, Name Varchar(20), RoomNo Int); Query OK, 0 rows affected (0.20 sec) mysql> Describe
เราสามารถลบข้อจำกัด PRIMARY KEY แบบผสมออกจากหลายคอลัมน์ของตารางที่มีอยู่โดยใช้คีย์เวิร์ด DROP ร่วมกับคำสั่ง ALTER TABLE ตัวอย่าง สมมติว่าเรามีตาราง Room_allotment ที่มีข้อจำกัดคีย์หลักแบบผสมในคอลัมน์ ID และ RoomNo ดังนี้ − mysql> describe room_allotment; +--------+-------------+------+-----+-----
ที่จริง FOREIGN KEY คือคอลัมน์หรือชุดค่าผสมของคอลัมน์ที่สามารถใช้เพื่อตั้งค่าการเชื่อมโยงระหว่างข้อมูลในสองตาราง กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าข้อจำกัดของ FOREIGN KEY เกี่ยวข้องกับสองตาราง นอกจากนี้ยังใช้เพื่อปรับปรุงความสมบูรณ์ของข้อมูลเนื่องจาก PRIMARY KEY ของตารางเชื่อมโยงกับ FOREIGN KEY ของ
เราสามารถเพิ่มข้อจำกัดของ FOREIGN KEY ให้กับคอลัมน์ของตาราง MySQL ที่มีอยู่โดยใช้คำสั่ง ALTER TABLE ไวยากรณ์ ALTER TABLE table_name ADD FOREIGN KEY (colum_name) ตารางอ้างอิงที่มีคีย์หลัก (column_name); ตัวอย่าง สมมติว่าเราต้องการเพิ่มข้อจำกัดของ FOREIGN KEY ในตาราง Orders1 ที่อ้างอิงถึงตาราง Custo
MySQL ช่วยให้เราสามารถเพิ่มข้อจำกัดของ FOREIGN KEY ได้มากกว่าหนึ่งฟิลด์ในตาราง เงื่อนไขคือแต่ละ Foreign Key ในตารางย่อยต้องอ้างอิงถึงตารางหลักที่แตกต่างกัน ตัวอย่าง สมมติว่าเรามีตาราง customer2 ซึ่งมีข้อ จำกัด ของคีย์หลักในฟิลด์ cust_unq_id ดังนี้ - mysql> describe customer2; +-------------+----
ความสัมพันธ์ระหว่างตารางหลักและตารางย่อยคือความสัมพันธ์แบบหนึ่งต่อกลุ่ม สามารถเข้าใจได้ด้วยตัวอย่างสองตารางชื่อ ลูกค้า และ คำสั่งซื้อ ที่นี่ ลูกค้า คือตารางหลักและ คำสั่งซื้อ คือตารางย่อย ความสัมพันธ์เป็นแบบหนึ่งต่อ—หลายรายการ เนื่องจากลูกค้าสามารถมีคำสั่งซื้อได้มากกว่าหนึ่งรายการ สามารถแสดงให้เห็นไ
อันที่จริง คีย์ภายนอกบังคับใช้ความสมบูรณ์ของการอ้างอิงที่ช่วยให้เรารักษาความสอดคล้องและความสมบูรณ์ของข้อมูลโดยอัตโนมัติ สามารถเข้าใจได้ด้วยตัวอย่างสองตารางชื่อ ลูกค้า และ คำสั่งซื้อ ที่นี่ ลูกค้า คือตารางหลักและ คำสั่งซื้อ คือตารางย่อย เราไม่สามารถสร้างคำสั่งซื้อสำหรับลูกค้าที่ไม่มีอยู่จริงได้ สามาร