การสร้างตารางอย่างมีความหมาย
ในการบรรยายครั้งก่อน เราได้ทำความคุ้นเคยกับแบบสอบถามสำหรับการสร้างตารางมาบ้างแล้ว ตอนนี้ได้เวลาเจาะลึกลงไปแล้ว
การสร้างตารางนั้นคล้ายกับการประกาศคลาสใน Java และมีรูปแบบดังนี้
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
ตัวอย่างเช่น ลองเขียนแบบสอบถามที่สร้างตารางกับผู้ใช้:
CREATE TABLE user (
id INT,
name VARCHAR(100),
level INT,
created_date DATE,
);
มันดูง่ายมากเพราะไม่มีการระบุความแตกต่างมากมายที่นี่
ขั้นแรก ตารางอาจมีการตั้งค่าเพิ่มเติม
และประการที่สอง แต่ละคอลัมน์สามารถมีการตั้งค่าเพิ่มเติมได้
และเราจะเริ่มต้นด้วยการตั้งค่าสำหรับการสร้างคอลัมน์
คีย์ในตาราง
นอกจากชื่อและชนิดข้อมูลแล้ว คอลัมน์ของตารางยังสามารถมีการตั้งค่าต่อไปนี้ได้อีกด้วย:
คีย์หลัก | คอลัมน์คือคีย์ของตาราง |
คีย์ที่ไม่ซ้ำใคร | ค่าคอลัมน์ทั้งหมดต้องไม่ซ้ำกัน |
ค่าเริ่มต้น | ค่าเริ่มต้น |
ไม่เป็นโมฆะ | ข้อห้ามในการรับค่า NULL |
AUTO_INCREMENT | SQL Server จะเพิ่มค่าโดยอัตโนมัติเมื่อมีการเพิ่มระเบียนใหม่ลงในตาราง |
สร้าง | เขตข้อมูลจากการคำนวณ |
พื้นที่จัดเก็บ | ตำแหน่งที่จะเก็บข้อมูล: บนดิสก์หรือในหน่วยความจำ |
ความคิดเห็น | ความคิดเห็นของคอลัมน์ เช่น ชื่อเรื่องในภาษาท้องถิ่น |
ด้านล่างเราจะดูบางส่วนของพวกเขา
อย่าง แรกคือPRIMARY KEY
บ่อยที่สุด นี่คือคอลัมน์แยกต่างหากที่มีรหัสชื่อและประเภท INT นี่คือสิ่งที่เรียกว่า "มาสเตอร์คีย์" ของตาราง และแถวทั้งหมดมีค่าเฉพาะสำหรับคีย์นี้ ใช้เป็นหลักเพื่อให้ตารางอื่นสามารถอ้างอิงถึงบันทึกของตารางของเราและชี้ไปที่บันทึกเฉพาะของตารางนั้น
ประการที่สองคือUNIQUE KEY
ในบางแง่ จะคล้ายกับคีย์หลัก แม้ว่าภาระทางความหมายจะแตกต่างไปจากเดิมอย่างสิ้นเชิง หากคอลัมน์มีแอตทริบิวต์ UNIQUE ค่าทั้งหมดในคอลัมน์นั้นจะต้องไม่ซ้ำกัน ตัวอย่างที่ดีของความแตกต่างระหว่าง UNIQUE KEY และ PRIMARY KEY คือรายชื่อบุคคลในสำนักงานหนังสือเดินทาง
หมายเลขภาษีคือคีย์หลัก ซึ่งใช้เพื่อให้ง่ายต่อการอ้างอิงถึงบุคคลที่ถูกต้องจากตารางอื่นๆ
หมายเลขหนังสือเดินทางเป็นรหัสเฉพาะ คนสองคนไม่สามารถมีหมายเลขหนังสือเดินทางเดียวกันได้ อย่างไรก็ตามหมายเลขหนังสือเดินทางสามารถเปลี่ยนได้ เช่น เมื่อเปลี่ยนนามสกุล และหมายเลขภาษีจะอยู่กับคุณตลอดไป นี่คืองานหลักของ PRIMARY KEY ตัวอย่างของแบบสอบถามที่ระบุคีย์หลัก:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(100),
level INT,
created_date DATE,
);
การตั้งค่าประเภทข้อมูล
มีแอตทริบิวต์ที่สำคัญน้อยกว่าแต่มีประโยชน์
ค่า DEFAUL
เมื่อแทรกข้อมูล (เพิ่มแถวใหม่) ลงในตาราง คุณสามารถละเว้นค่าของบางคอลัมน์ได้หากมีค่าเป็นค่าเริ่มต้น ในกรณีนี้เซิร์ฟเวอร์ SQL จะตั้งค่าของคอลัมน์เอง
เริ่มต้นด้วย MySQL เวอร์ชัน 8 คุณสามารถระบุนิพจน์เป็นค่าได้
ไม่เป็นโมฆะ
หากคุณระบุแอตทริบิวต์ที่ไม่เป็น NULL สำหรับคอลัมน์เมื่อสร้างตาราง SQL Server จะตรวจสอบให้แน่ใจว่าไม่สามารถเก็บค่า NULL ในคอลัมน์นี้ได้ ตามค่าเริ่มต้น คอลัมน์ใดๆ สามารถมีค่า NULL แม้แต่คอลัมน์ INT ซึ่งไม่ชัดเจนสำหรับโปรแกรมเมอร์ Java
AUTO_INCREMENT
โดยปกติจะใช้สำหรับรหัสคอลัมน์ เมื่อคุณเพิ่มแถวใหม่ลงในตาราง คุณต้องการให้เซิร์ฟเวอร์ SQL กำหนด ID สำหรับรายการนี้ ใครดีกว่าเซิร์ฟเวอร์รู้ว่าเขามีกี่แถวในตาราง โดยเฉพาะอย่างยิ่งหากคำขอจากไคลเอ็นต์ที่แตกต่างกันไปที่เซิร์ฟเวอร์ SQL เดียวกัน
นี่คือสิ่งที่แอตทริบิวต์ AUTO_INCREMENT ทำ เมื่อเพิ่มแถวใหม่ เราจะไม่ส่งต่อสิ่งใดเป็นรหัส และเซิร์ฟเวอร์ SQL จะระบุ ID ที่ถูกต้องสำหรับเรกคอร์ดนี้: มันจะใช้ ID ของเรกคอร์ดที่มีอยู่ล่าสุดและเพิ่มทีละ 1 คุณลักษณะนี้สามารถเป็นได้เท่านั้น ใช้กับประเภทจำนวนเต็มและจำนวนจริง และแน่นอน เรามาสร้างตัวอย่างการสร้างตารางดังกล่าว:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
level INT DEFAULT 1,
created_date DATE NOT NULL,
);