การสร้างตารางอย่างมีความหมาย

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

การสร้างตารางนั้นคล้ายกับการประกาศคลาสใน 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,
);