การสร้างฐานข้อมูลและตารางใน SQL

การสร้างฐานข้อมูล

คุณพร้อมที่จะเริ่มสร้างฐานข้อมูลและตารางด้วย Structured Query Language แล้ว หรือยัง? ในบทความนี้เราจะสำรวจ ขั้นตอนการสร้างตาราง ด้วยตนเองด้วยคำ สั่ง CREATE DATABASE และ CREATE TABLE หากคุณเพิ่งเริ่มใช้ SQL คุณอาจต้องการตรวจสอบบทความ พื้นฐานเกี่ยวกับ SQL ของเราก่อน

ความต้องการทางธุรกิจ

ก่อนที่เราจะนั่งลงที่แป้นพิมพ์เราจำเป็นต้องตรวจสอบให้แน่ใจว่าเรามีความเข้าใจที่มั่นคงเกี่ยวกับความต้องการของลูกค้า วิธีที่ดีที่สุดในการทำความเข้าใจเรื่องนี้คืออะไร? พูดคุยกับลูกค้าแน่นอน! หลังจากนั่งลงกับผู้อำนวยการฝ่ายทรัพยากรบุคคลของ XYZ เราได้เรียนรู้ว่าพวกเขาเป็น บริษัท ขายเครื่องมือและสนใจเป็นหลักในการติดตามข้อมูลเกี่ยวกับพนักงานขายของพวกเขา

XYZ Corporation แบ่งพนักงานขายออกเป็นภาคตะวันออกและตะวันตกโดยแต่ละแห่งจะถูกแบ่งออกเป็นหลายพื้นที่โดยตัวแทนฝ่ายขายแต่ละราย ฝ่ายทรัพยากรบุคคลต้องการติดตามอาณาเขตที่ครอบคลุมโดยพนักงานแต่ละคนรวมทั้งข้อมูลเงินเดือนและโครงสร้างการกำกับดูแลของพนักงานแต่ละคน เพื่อให้เป็นไปตามข้อกำหนดเหล่านี้เราได้ออกแบบฐานข้อมูลประกอบด้วยสามตารางซึ่งแสดงไว้ใน แผนผังแผนผัง Entity-Relationship ในหน้านี้

การเลือกแพลตฟอร์มฐานข้อมูล

เราได้ตัดสินใจใช้ ระบบการจัดการฐานข้อมูล (หรือ DBMS) ที่สร้างขึ้นจาก Structured Query Language (SQL) ดังนั้นคำสั่งสร้างฐานข้อมูลและตารางทั้งหมดควรมีการเขียนด้วย ANSI SQL มาตรฐาน

เป็นประโยชน์เพิ่มเติมโดยใช้ ANSI-compliant SQL จะช่วยให้มั่นใจได้ว่าคำสั่งเหล่านี้จะทำงานบน DBMS ใด ๆ ที่สนับสนุน มาตรฐาน SQL รวมถึง Oracle และ Microsoft SQL Server หากคุณยังไม่ได้เลือกแพลตฟอร์มสำหรับฐานข้อมูลของคุณบทความ Database Software Options จะ นำคุณไปสู่ขั้นตอนการคัดเลือก

การสร้างฐานข้อมูล

ขั้นตอนแรกของเราคือการสร้างฐานข้อมูลเอง ระบบจัดการฐานข้อมูลจำนวนมากมีชุดตัวเลือกเพื่อกำหนดค่าพารามิเตอร์ฐานข้อมูลในขั้นตอนนี้ แต่ฐานข้อมูลของเราอนุญาตให้สร้างฐานข้อมูลได้ง่าย เช่นเดียวกับคำสั่งทั้งหมดของเราคุณอาจต้องการดูเอกสารสำหรับ DBMS ของคุณเพื่อพิจารณาว่าพารามิเตอร์ขั้นสูงที่ระบบของคุณรองรับหรือไม่ตรงกับความต้องการของคุณ ลองใช้คำสั่ง CREATE DATABASE เพื่อตั้งค่าฐานข้อมูลของเรา:

สร้างบุคลากรฐานข้อมูล

จดบันทึกการใช้อักษรตัวพิมพ์ใหญ่ที่ใช้ในตัวอย่างข้างต้น เป็นเรื่องธรรมดาในหมู่นักเขียนโปรแกรม SQL ที่ใช้อักษรตัวพิมพ์ใหญ่ทั้งหมดสำหรับคำหลักของ SQL เช่น "CREATE" และ "DATABASE" ในขณะที่ใช้อักษรตัวพิมพ์เล็กทั้งหมดสำหรับชื่อที่ผู้ใช้กำหนดเช่นชื่อฐานข้อมูล "personal" อนุสัญญาเหล่านี้มีไว้สำหรับการอ่านง่าย

อ่านบทแนะนำนี้ต่อไปเนื่องจากเราสร้างตารางสำหรับฐานข้อมูลของเรา

เรียนรู้เพิ่มเติม

ถ้าคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Structured Query Language โปรดอ่าน บทนำสู่ SQL หรือลงทะเบียนเรียนหลักสูตรอีเลคทรอนิคส์ SQL ฟรี

ขณะนี้เราได้ออกแบบและสร้างฐานข้อมูลของเราแล้วเราพร้อมที่จะเริ่มต้นสร้างตาราง 3 ตารางที่ใช้เก็บข้อมูลบุคลากรของ XYZ Corporation เราจะใช้ตารางที่เราออกแบบไว้ในส่วนก่อนหน้าของบทแนะนำนี้

การสร้างตารางแรกของเรา

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

แอ็ตทริบิวต์ ReportsTo จัดเก็บรหัสผู้จัดการสำหรับพนักงานแต่ละคน จากตัวอย่างบันทึกที่แสดงเราสามารถระบุได้ว่า Sue Scampi เป็นผู้จัดการของทั้ง Tom Kendall และ John Smith อย่างไรก็ตามไม่มีข้อมูลในฐานข้อมูลในผู้จัดการของ Sue ตามที่ระบุ โดยรายการ NULL ในแถวของเธอ

ตอนนี้เราสามารถใช้ SQL เพื่อสร้างตารางในฐานข้อมูลบุคลากรของเรา ก่อนที่เราจะทำเช่นนั้นให้ตรวจสอบว่าเราอยู่ในฐานข้อมูลที่ถูกต้องโดยการออกคำสั่ง USE:

ใช้บุคลากร

หรืออีกทางเลือกหนึ่งคือ "DATABASE personnel" คำสั่งจะทำหน้าที่เหมือนกัน ตอนนี้เราสามารถดูที่คำสั่ง SQL ที่ใช้ในการสร้างตารางพนักงานของเรา:

CREATE TABLE พนักงาน (employeeid INTEGER NOT NULL, lastname VARCHAR (25) NOT NULL, ชื่อ VARCHAR (25) NOT NULL, รายงานเป็น NULL รวม);

เช่นเดียวกับตัวอย่างข้างต้นโปรดทราบว่าการเขียนโปรแกรมกำหนดให้เราใช้ตัวพิมพ์ใหญ่ทั้งหมดสำหรับคำหลัก SQL และตัวพิมพ์เล็กสำหรับคอลัมน์และตารางที่ผู้ใช้ตั้งชื่อ คำสั่งข้างต้นอาจดูสับสนในตอนแรก แต่มีโครงสร้างที่เรียบง่ายอยู่เบื้องหลัง ต่อไปนี้คือมุมมองทั่วไปที่อาจทำให้เกิดความชัดเจนขึ้น:

CREATE TABLE table_name (แอตทริบิวต์ attribute_name ตัวเลือก ... , attribute_name ประเภทข้อมูลตัวเลือก);

แอตทริบิวต์และชนิดข้อมูล

ในตัวอย่างก่อนหน้านี้ชื่อตารางคือพนักงานและเรามีแอตทริบิวต์สี่ตัว ได้แก่ employeeid นามสกุล firstname และ reportsto ประเภทข้อมูลระบุชนิดของข้อมูลที่เราต้องการเก็บไว้ในแต่ละฟิลด์ รหัสพนักงานเป็นจำนวนเต็มแบบง่ายๆดังนั้นเราจึงจะใช้ประเภทข้อมูล INTEGER ทั้งสำหรับฟิลด์ employeeid และ reportsto ชื่อพนักงานจะเป็นสตริงอักขระที่มีความยาวแตกต่างกันและเราไม่คาดหวังให้พนักงานคนใดมีชื่อหรือนามสกุลยาวเกิน 25 ตัวอักษร ดังนั้นเราจะใช้ประเภท VARCHAR (25) สำหรับฟิลด์เหล่านี้

ค่า NULL

นอกจากนี้เราสามารถระบุ NULL หรือ NOT NULL ในฟิลด์ options ของคำสั่ง CREATE นี้ก็บอกฐานข้อมูลว่าค่า NULL (หรือเปล่า) ได้รับอนุญาตสำหรับคุณลักษณะที่เมื่อเพิ่มแถวไปยังฐานข้อมูล ในตัวอย่างของเราแผนกทรัพยากรบุคคลต้องการให้พนักงานและชื่อสมบูรณ์ถูกเก็บไว้สำหรับพนักงานแต่ละคน อย่างไรก็ตามพนักงานทุกคนไม่ได้มีผู้จัดการ - ซีอีโอรายงานไปยังไม่มีใคร! - ดังนั้นเราจึงอนุญาตให้รายการ NULL ในฟิลด์นั้น โปรดทราบว่า NULL เป็นค่าเริ่มต้นและการละเว้นตัวเลือกนี้โดยนัยจะทำให้ค่า NULL ของแอตทริบิวต์

อาคารส่วนที่เหลือ

ตอนนี้ลองมาดูที่ตารางพื้นที่ จากการดูข้อมูลนี้อย่างรวดเร็วเราพบว่าเราต้องเก็บสตริงที่มีความยาวตัวแปรจำนวนเต็มและสองสาย เช่นเดียวกับตัวอย่างก่อนหน้าของเราเราไม่คาดหวังว่า ID พื้นที่จะใช้มากกว่า 25 อักขระ อย่างไรก็ตามบางพื้นที่ของเรามีชื่อยาวขึ้นดังนั้นเราจะขยายความยาวที่อนุญาตของแอตทริบิวต์นั้นเป็น 40 อักขระ ลองดู SQL ที่เกี่ยวข้อง:

สร้างอาณาเขตของตาราง (territoryid INTEGER NOT NULL, คำอธิบายของภูมิภาค VARCHAR (40) NOT NULL, regionized VARCHAR (25) NOT NULL);

สุดท้ายเราจะใช้ตาราง EmployeeTerritories เพื่อเก็บความสัมพันธ์ระหว่างพนักงานและพื้นที่ ข้อมูลรายละเอียดเกี่ยวกับพนักงานและอาณาเขตแต่ละแห่งจะถูกเก็บไว้ในตารางสองตารางก่อนหน้านี้ของเรา ดังนั้นเราจะต้องเก็บหมายเลขประจำตัวผู้สองตัวไว้ในตารางนี้เท่านั้น ถ้าเราต้องการขยายข้อมูลนี้เราสามารถใช้ JOIN ในคำสั่งเลือกข้อมูลของเราเพื่อดูข้อมูลจากหลายตาราง วิธีการจัดเก็บข้อมูลนี้ช่วยลดความซ้ำซ้อนในฐานข้อมูลของเราและช่วยให้มั่นใจได้ว่าจะใช้พื้นที่ในไดรฟ์จัดเก็บข้อมูลได้อย่างเหมาะสม เราจะอธิบายคำสั่ง JOIN ในเชิงลึกในบทแนะนำในอนาคต นี่คือโค้ด SQL ที่จะใช้ตารางสุดท้ายของเรา:

สร้างตารางการจ้างงาน (employeeid INTEGER NOT NULL, territoryid INTEGER NOT NULL);

กลไก SQL ให้การเปลี่ยนแปลงโครงสร้างของฐานข้อมูลหลังจากการสร้าง

หากคุณฉลาดอย่างชาญฉลาดในวันนี้คุณอาจสังเกตเห็นว่าเรา "บังเอิญ" ข้ามข้อกำหนดด้านการออกแบบเมื่อใช้ตารางฐานข้อมูลของเรา ผู้อำนวยการฝ่ายทรัพยากรบุคคลของ XYZ Corporation ขอให้ข้อมูลฐานข้อมูลพนักงานติดตามข้อมูลและเราละเลยที่จะให้ข้อมูลนี้ใน ตารางฐานข้อมูลที่ เราสร้างขึ้น

แต่ทั้งหมดจะไม่สูญหาย เราสามารถใช้คำสั่ง ALTER TABLE เพื่อเพิ่มแอตทริบิวต์นี้ลงในฐานข้อมูลที่มีอยู่ของเรา เราต้องการเก็บเงินเดือนเป็นค่าจำนวนเต็ม ไวยากรณ์ค่อนข้างคล้ายกับคำสั่ง CREATE TABLE นี่คือ:

พนักงาน ALTER TABLE เพิ่มเงินเดือน INTEGER NULL;

ขอให้สังเกตว่าเราระบุว่าค่า NULL จะได้รับอนุญาตสำหรับแอ็ตทริบิวต์นี้ ในกรณีส่วนใหญ่ไม่มีตัวเลือกเมื่อเพิ่มคอลัมน์ลงในตารางที่มีอยู่ เนื่องจากตารางนี้มีแถวที่ไม่มีรายการสำหรับแอตทริบิวต์นี้ ดังนั้น DBMS จะแทรก ค่า NULL โดยอัตโนมัติเพื่อเติมโมฆะ

และที่ครอบคลุมถึงลักษณะของเราที่ฐานข้อมูล SQL และกระบวนการสร้างตาราง โปรดกลับมาตรวจสอบใน งวดใหม่ ในชุดการสอน SQL ของเรา หากคุณต้องการให้มีการแจ้งเตือนทางอีเมลเมื่อมีการเพิ่มบทความใหม่ลงในไซต์ฐานข้อมูลเกี่ยวกับฐานข้อมูลโปรดสมัครสมาชิกจดหมายข่าวของเรา!