วิธีสร้างฐานข้อมูลใน MySQL (สร้าง MySQL ตาราง)

⚡ สรุปอย่างชาญฉลาด

การสร้างฐานข้อมูลใน MySQL ดำเนินการตามสองเส้นทางที่ได้รับการพิสูจน์แล้ว ได้แก่ การเรียกใช้คำสั่ง CREATE DATABASE หรือการสร้างสคีมาทางกายภาพจากแบบจำลอง ER ผ่านทาง MySQL การออกแบบเชิงวิศวกรรมแบบก้าวหน้าของเวิร์กเบนช์ ทั้งสองวิธีให้ผลลัพธ์เป็นตารางที่เหมือนกันและพร้อมใช้งานสำหรับการผลิต

  • 🗄️ การสร้างฐานข้อมูล: เรียกใช้คำสั่ง CREATE DATABASE หรือ CREATE SCHEMA ซึ่ง MySQL ถือว่าเป็นคำพ้องความหมาย
  • 🛡️ การฉายซ้ำอย่างปลอดภัย: เพิ่มคำสั่ง IF NOT EXISTS เพื่อให้สคริปต์ที่ทำงานซ้ำข้ามการสร้างไฟล์แทนที่จะแสดงข้อผิดพลาดชื่อซ้ำ
  • 🌐 ชุดอักขระ: เลือก utf8mb4 พร้อม utf8mb4_0900_ai_ci สำหรับข้อมูลหลายภาษา และ latin1 พร้อม latin1_swedish_ci เหมาะสำหรับสคีมาภาษาอังกฤษแบบเดิม
  • 🧱 การสร้างตาราง: คำสั่ง CREATE TABLE กำหนดชื่อฟิลด์ ชนิดข้อมูล คีย์หลัก และเอนจินจัดเก็บข้อมูล ซึ่งโดยปกติคือ InnoDB
  • 🔢 ประเภทข้อมูล: ประเภทของคอลัมน์แบ่งออกเป็นกลุ่มตัวเลข ข้อความ และวันที่หรือเวลา รวมถึงรูปแบบ ENUM, SET, BOOL และไบนารี
  • ⚙️ วิศวกรรมไปข้างหน้า: MySQL Workbench จะแปลงโมเดล ER ที่ได้รับการอนุมัติให้เป็นสคริปต์ SQL ที่สามารถเรียกใช้งานได้ และส่งสคริปต์เหล่านั้นไปยังเซิร์ฟเวอร์จริง

ขั้นตอนการสร้างฐานข้อมูลใน MySQL

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

1) โดยการดำเนินการค้นหา SQL อย่างง่าย

2) โดยใช้วิศวกรรมส่งต่อค่ะ MySQL ม้านั่งทำงานของช่างเครื่อง

As ผู้เริ่มต้น SQLมาดูวิธีการสืบค้นกันก่อน

วิธีสร้างฐานข้อมูลใน MySQL

นี่คือวิธีการสร้างฐานข้อมูลใน MySQL:

CREATE DATABASE คือคำสั่ง SQL ที่ใช้สำหรับสร้างฐานข้อมูล MySQL.

ลองนึกภาพว่าคุณต้องการสร้างฐานข้อมูลชื่อ “ภาพยนตร์” คุณสามารถสร้างฐานข้อมูลได้ใน MySQL โดยการเรียกใช้คำสั่ง SQL ต่อไปนี้

CREATE DATABASE movies;

หมายเหตุ: คุณสามารถใช้คำสั่ง CREATE SCHEMA แทนคำสั่ง CREATE DATABASE ได้เช่นกัน

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

หากไม่มีอยู่

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

หากไม่มีอยู่ สั่งสอน MySQL เซิร์ฟเวอร์จะตรวจสอบฐานข้อมูลที่มีชื่อเดียวกันก่อนที่จะสร้างฐานข้อมูลนั้น ฐานข้อมูลจะถูกสร้างขึ้นก็ต่อเมื่อชื่อนั้นว่างอยู่เท่านั้น หากไม่มีเงื่อนไขนี้... MySQL พ่นข้อผิดพลาด

CREATE DATABASE IF NOT EXISTS movies;

เมื่อชื่อฐานข้อมูลปลอดภัยแล้ว ขั้นตอนต่อไปคือการตัดสินใจว่าจะทำอย่างไร MySQL ควรจัดเก็บและเปรียบเทียบข้อความที่อยู่ภายในนั้น

การจัดเรียงและชุดอักขระ

A ชุดตัวอักษร ตัดสินใจว่าคอลัมน์นั้นสามารถจัดเก็บอักขระใดได้บ้าง ในขณะที่ การตรวจทาน เป็นชุดของ กฎที่ใช้ในการเปรียบเทียบ และการเรียงลำดับ ทั้งสองอย่างสามารถกำหนดได้ในสี่ระดับ ได้แก่ เซิร์ฟเวอร์ ฐานข้อมูล ตาราง และคอลัมน์

การเรียงลำดับที่คุณเลือกขึ้นอยู่กับชุดอักขระ ตัวอย่างเช่น ชุดอักขระ latin1 ใช้การเรียงลำดับแบบใด latin1_swedish_ci การเรียงลำดับ ซึ่งเป็นการเรียงลำดับแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กของสวีเดน

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET latin1 COLLATE latin1_swedish_ci;

สำหรับภาษาท้องถิ่น เช่น ภาษาอาหรับหรือภาษาจีน ให้เลือก Unicode utf8mb4 ชุดอักขระ ซึ่งจัดเก็บอักขระยูนิโค้ดทุกตัว รวมถึงอิโมจิด้วย ใน MySQL 8.0, utf8mb4 เป็นชุดอักขระเริ่มต้นและ utf8mb4_0900_ai_ci การเรียงลำดับเริ่มต้น

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

คุณสามารถดูรายการการเปรียบเทียบและชุดอักขระทั้งหมดได้ Good Farm Animal Welfare Awards.

คุณสามารถดูรายชื่อฐานข้อมูลที่มีอยู่ได้โดยเรียกใช้คำสั่ง SQL ต่อไปนี้

SHOW DATABASES;

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

วิธีสร้างตารางใน MySQL

คำสั่ง CREATE TABLE ใช้สำหรับสร้างตารางในฐานข้อมูล

สร้างตารางใน MySQL

ดังที่แผนภาพแสดงไว้ ตารางทุกตารางเป็นของฐานข้อมูลหนึ่งฐานข้อมูล ตารางถูกสร้างขึ้นด้วย สร้างตาราง คำสั่งดังกล่าวมีไวยากรณ์ดังต่อไปนี้

CREATE TABLE [IF NOT EXISTS] `TableName` (`fieldname` dataType [optional parameters]) ENGINE = storage Engine;

ที่นี่

  • คำสั่ง “CREATE TABLE” มีหน้าที่สร้างตารางในฐานข้อมูล
  • “[IF NOT EXISTS]” เป็นตัวเลือกเสริม และจะสร้างตารางขึ้นมาก็ต่อเมื่อไม่พบชื่อตารางที่ตรงกันเท่านั้น
  • “`fieldName`” คือชื่อของฟิลด์ และ “data Type” กำหนดลักษณะของข้อมูลที่จัดเก็บอยู่ในฟิลด์นั้น
  • "[พารามิเตอร์เสริม]" คือข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์ เช่น "AUTO_INCREMENT" หรือ NOT NULL
  • "Storage Engine" ทำหน้าที่จัดการตารางข้อมูล ซึ่งโดยปกติจะเป็น InnoDB ที่รองรับธุรกรรมและคีย์ต่างประเทศ

MySQL สร้างตัวอย่างตาราง

ด้านล่างคือ MySQL ตัวอย่างการสร้างตารางในฐานข้อมูล:

CREATE TABLE IF NOT EXISTS `MyFlixDB`.`Members` (
  `membership_number` INT AUTO_INCREMENT ,
  `full_names` VARCHAR(150) NOT NULL ,
  `gender` VARCHAR(6) ,
  `date_of_birth` DATE ,
  `physical_address` VARCHAR(255) ,
  `postal_address` VARCHAR(255) ,
  `contact_number` VARCHAR(75) ,
  `email` VARCHAR(255) ,
  PRIMARY KEY (`membership_number`) )
ENGINE = InnoDB;

หมายเหตุ ที่ถูกต้อง MySQL คีย์เวิร์ดคือ AUTO_INCREMENT โดยมีเครื่องหมายขีดล่างกำกับอยู่ AUTOINCREMENT เป็นของ SQLite และทำให้เกิดข้อผิดพลาดทางไวยากรณ์ใน MySQL.

แต่ละคอลัมน์มีชนิดข้อมูล ดังนั้นควรเลือกอย่างระมัดระวัง อย่าประเมินช่วงของข้อมูลที่คาดหวังต่ำหรือสูงเกินไป

MySQL ประเภทข้อมูล

ชนิดข้อมูลกำหนดลักษณะของข้อมูลที่สามารถจัดเก็บได้ในคอลัมน์ใดคอลัมน์หนึ่งของตาราง

MySQL มี 3 ประเภทข้อมูลหลัก ได้แก่:

  1. เป็นตัวเลข
  2. ข้อความ
  3. วันเวลา

ประเภทข้อมูลตัวเลข

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

เล็กๆ น้อยๆ( ) -128 ถึง 127 ปกติ
0 ถึง 255 ไม่ได้ลงนาม
สมอลลินท์( ) -32768 ถึง 32767 ปกติ
0 ถึง 65535 ไม่ได้ลงนาม
ปานกลาง( ) -8388608 ถึง 8388607 ปกติ
0 ถึง 16777215 ไม่ได้ลงนาม
อินท์( ) -2147483648 ถึง 2147483647 ปกติ
0 ถึง 4294967295 ไม่ได้ลงนาม
บิ๊กอินท์( ) -9223372036854775808 ถึง 9223372036854775807 ปกติ
0 ถึง 18446744073709551615 ไม่ได้ลงนาม
ลอย ตัวเลขประมาณเล็กๆ ที่มีจุดทศนิยมลอยตัว
สองเท่า( , ) จำนวนมากที่มีจุดทศนิยมลอยตัว
ทศนิยม( , ) ค่า DOUBLE ที่จัดเก็บในรูปแบบสตริง ซึ่งอนุญาตให้มีจุดทศนิยมคงที่ เหมาะสำหรับการจัดเก็บค่าสกุลเงิน

ประเภทข้อมูลข้อความ

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

ถ่าน( ) ส่วนที่คงที่มีความยาวตั้งแต่ 0 ถึง 255 อักขระ
วาร์ชาร์( ) ส่วนตัวแปรมีความยาวตั้งแต่ 0 ถึง 255 อักขระ
ข้อความเล็กๆ สตริงที่มีความยาวสูงสุด 255 อักขระ
TEXT สตริงที่มีความยาวสูงสุด 65535 อักขระ
หยด สตริงที่มีความยาวสูงสุด 65535 อักขระ
ข้อความขนาดกลาง สตริงที่มีความยาวสูงสุด 16777215 อักขระ
ขนาดกลาง สตริงที่มีความยาวสูงสุด 16777215 อักขระ
ข้อความยาว สตริงที่มีความยาวสูงสุด 4294967295 อักขระ
ลองบล็อบ สตริงที่มีความยาวสูงสุด 4294967295 อักขระ

ประเภทข้อมูลวันที่และเวลา

ประเภทข้อมูลวันที่และเวลาจะจัดเก็บค่าปฏิทินและนาฬิกาในรูปแบบคงที่ ซึ่งทำให้การเรียงลำดับและการเปรียบเทียบมีความน่าเชื่อถือ

วัน YYYY-MM-DD
วันเวลา ปปปป-ดด-วว HH:MM:SS
การประทับเวลา yyyymmddhhmmss
เวลา ฮช:ดด:สส

ประเภทข้อมูลอื่นๆ

นอกเหนือจากที่กล่าวมาข้างต้นแล้ว ยังมีประเภทข้อมูลอื่นๆ อีกใน MySQL.

อีนัม เพื่อจัดเก็บค่าข้อความที่เลือกจากรายการค่าข้อความที่กำหนดไว้ล่วงหน้า
ตลาดหลักทรัพย์ นอกจากนี้ยังใช้สำหรับจัดเก็บค่าข้อความที่เลือกจากรายการค่าข้อความที่กำหนดไว้ล่วงหน้า สามารถมีได้หลายค่า
บูล คำพ้องสำหรับ TINYINT(1) ใช้เพื่อจัดเก็บค่าบูลีน
ไบนารี่ คล้ายกับ CHAR แต่ต่างตรงที่ข้อความถูกจัดเก็บในรูปแบบไบนารี
วาร์บินารี่ คล้ายกับ VARCHAR แต่ต่างตรงที่ข้อความถูกจัดเก็บในรูปแบบไบนารี

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

CREATE TABLE `all_data_types` (
    `varchar` VARCHAR( 20 )  ,
    `tinyint` TINYINT  ,
    `text` TEXT  ,
    `date` DATE  ,
    `smallint` SMALLINT  ,
    `mediumint` MEDIUMINT  ,
    `int` INT  ,
    `bigint` BIGINT  ,
    `float` FLOAT( 10, 2 )  ,
    `double` DOUBLE  ,
    `decimal` DECIMAL( 10, 2 )  ,
    `datetime` DATETIME  ,
    `timestamp` TIMESTAMP  ,
    `time` TIME  ,
    `year` YEAR  ,
    `char` CHAR( 10 )  ,
    `tinyblob` TINYBLOB  ,
    `tinytext` TINYTEXT  ,
    `blob` BLOB  ,
    `mediumblob` MEDIUMBLOB  ,
    `mediumtext` MEDIUMTEXT  ,
    `longblob` LONGBLOB  ,
    `longtext` LONGTEXT  ,
    `enum` ENUM( '1', '2', '3' )  ,
    `set` SET( '1', '2', '3' )  ,
    `bool` BOOL  ,
    `binary` BINARY( 20 )  ,
    `varbinary` VARBINARY( 20 )
) ENGINE = MYISAM;

แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้าง MySQL ฐานข้อมูล

มีหลักการพื้นฐานบางประการที่จะช่วยให้สคริปต์ของคุณอ่านง่าย:

  • ใช้ตัวพิมพ์ใหญ่สำหรับคำหลักของ SQL เช่น “DROP SCHEMA IF EXISTS `MyFlixDB`;”
  • ปิดท้ายคำสั่ง SQL ทั้งหมดด้วยเครื่องหมายเซมิโคลอน
  • หลีกเลี่ยงการใช้ช่องว่างในชื่อสคีมา ตาราง และฟิลด์ ให้ใช้เครื่องหมายขีดล่างแทนเพื่อแยกชื่อสคีมา ตาราง หรือฟิลด์
  • ควรเลือกใช้ InnoDB มากกว่า MyISAM สำหรับตารางใหม่ เนื่องจาก InnoDB รองรับธุรกรรม การล็อกระดับแถว และคีย์ต่างประเทศ

วิธีการค้นหาเสร็จสมบูรณ์แล้ว เส้นทางที่สองเข้าถึงฐานข้อมูลเดียวกันโดยใช้โมเดลภาพแทนการเขียน SQL ด้วยมือ

วิธีการสร้าง MySQL แผนภาพ ER ของเวิร์กเบนช์ วิศวกรรมไปข้างหน้า

MySQL ม้านั่งทำงานของช่างเครื่อง มีสาธารณูปโภคที่รองรับวิศวกรรมก้าวหน้า วิศวกรรมไปข้างหน้า เป็นศัพท์ทางเทคนิคที่ใช้อธิบายกระบวนการของ การแปลงแบบจำลองเชิงตรรกะไปสู่การใช้งานจริงโดยอัตโนมัติ.

เราสร้าง แผนภาพเอ้อ ความละมุนของ การสร้างแบบจำลอง ER บทเรียนนี้ เราจะใช้แบบจำลอง ER นั้นเพื่อสร้างสคริปต์ SQL ที่จะใช้สร้างฐานข้อมูลของเรา

การสร้างฐานข้อมูล MyFlix จากโมเดล MyFlix ER

ขั้นตอนที่ 1) เปิดโมเดล ER ของฐานข้อมูล MyFlix ที่คุณสร้างไว้ก่อนหน้านี้

ขั้นตอนที่ 2) เลือกวิศวกรส่งต่อ

คลิกที่เมนูฐานข้อมูล แล้วเลือก Forward Engineer

เลือกวิศวกรแนวหน้าใน MySQL ม้านั่งทำงานของช่างเครื่อง

ขั้นตอนที่ 3) ตัวเลือกการเชื่อมต่อ

หน้าต่างถัดไปจะช่วยให้คุณสามารถเชื่อมต่อกับอินสแตนซ์ของ MySQL เซิร์ฟเวอร์ คลิกที่รายการดรอปดาวน์การเชื่อมต่อที่บันทึกไว้ แล้วเลือก localhost จากนั้นคลิก Execute

ตัวเลือกการเชื่อมต่อในตัวช่วยสร้างวิศวกรส่วนหน้า

ขั้นตอนที่ 4) เลือกตัวเลือกที่แสดงด้านล่าง

เลือกตัวเลือกที่แสดงด้านล่างในตัวช่วยสร้างที่ปรากฏขึ้น จากนั้นคลิก ถัดไป

ตัวเลือกทางวิศวกรรมขั้นสูงสำหรับฐานข้อมูล MyFlix

ขั้นตอนที่ 5) คงค่าเริ่มต้นของการเลือกไว้ แล้วคลิก ถัดไป

หน้าจอถัดไปแสดงสรุปของวัตถุในแผนภาพ EER ของเรา ฐานข้อมูล MyFlix ของเรามี 5 ตาราง ให้คงการเลือกไว้ตามค่าเริ่มต้นแล้วคลิกถัดไป

สรุปรายละเอียดของวัตถุต่างๆ ในแผนภาพ EER ของ MyFlix

ขั้นตอน 6) Revดูสคริปต์ SQL

หน้าต่างด้านล่างแสดงตัวอย่างสคริปต์ SQL ที่ใช้สร้างฐานข้อมูลของเรา บันทึกสคริปต์เป็นไฟล์ *.sql หรือคัดลอกไปยังคลิปบอร์ด จากนั้นคลิก ถัดไป

ตัวอย่างสคริปต์ SQL ที่สร้างขึ้น

ขั้นตอนที่ 7) บันทึกความคืบหน้า

หน้าต่างด้านล่างจะปรากฏขึ้นเมื่อสร้างฐานข้อมูลบนเครื่องที่เลือกเรียบร้อยแล้ว MySQL อินสแตนซ์เซิร์ฟเวอร์ ตารางจากโมเดล ER ตอนนี้มีอยู่จริงบนเซิร์ฟเวอร์แล้ว

หน้าต่างความคืบหน้าการยืนยันการวิศวกรรมไปข้างหน้า

ฐานข้อมูลพร้อมข้อมูลจำลองแนบมาด้วยแล้ว เราจะใช้ฐานข้อมูลนี้ในบทเรียนต่อไป เพียงแค่ทำการนำเข้าฐานข้อมูลเข้าไป MySQL โต๊ะทำงานสำหรับเริ่มต้นใช้งาน

คลิกที่นี่เพื่อดาวน์โหลด MyFlixDB

คำถามที่พบบ่อย

ไม่มีความแตกต่างใน MySQLคำสั่ง CREATE SCHEMA เป็นชื่อเรียกอีกชื่อหนึ่งของ CREATE DATABASE และทั้งสองคำสั่งสร้างวัตถุเดียวกัน ในระบบอื่นๆ เช่น Oracleแต่โครงสร้างข้อมูลและฐานข้อมูลยังคงเป็นแนวคิดที่แยกจากกัน

เรียกใช้คำสั่ง DROP DATABASE IF EXISTS movies; จากฝั่งไคลเอ็นต์หรือจาก MySQL ม้านั่งทำงานของช่างเครื่องคำสั่งนี้จะลบฐานข้อมูลและตารางทั้งหมดในนั้นอย่างถาวร ดังนั้นโปรดสำรองข้อมูลก่อน

บัญชีผู้ใช้จำเป็นต้องมีสิทธิ์ CREATE ในระดับสากล ผู้ดูแลระบบจะให้สิทธิ์นี้ด้วยคำสั่ง GRANT CREATE ON *.* TO 'user'@'localhost'; หากไม่มีสิทธิ์นี้ เซิร์ฟเวอร์จะแสดงข้อผิดพลาด "ปฏิเสธการเข้าถึง"

ใช่แล้ว ผู้ช่วย AI จะแปลงคำอธิบายธรรมดาของเอนทิตีของคุณให้เป็นสคริปต์ CREATE TABLE พร้อมคีย์และประเภทข้อมูล ตรวจสอบประเภท ความยาว และข้อจำกัดที่สร้างขึ้นเสมอก่อนที่จะเรียกใช้สคริปต์บนเซิร์ฟเวอร์ใช้งานจริง

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

สรุปโพสต์นี้ด้วย: