ภาษา SQL กับ MariaDB part 2
สร้างฐานข้อมูล, ลบฐานข้อมูล, สร้างตาราง, ลบตาราง, เพิ่ม column, ลบ column, เปลี่ยนชื่อ column, เปลี่ยนชื่อตาราง และเปลี่ยนชื่อฐานข้อมูล
ความเดิมจาก part ที่ผ่านมา
Data Definition Language
ผมเรียกว่ากลุ่มของผู้สร้าง ไม่ว่าจะสร้างฐานข้อมูล สร้างตาราง รวมถึงการเปลี่ยนแปลงโครงสร้างตาราง กลุ่มของผู้สร้าง แบ่งออกเป็น 3 คำสั่งย่อย ได้แก่
- Create ใช้สร้างฐานข้อมูลและตาราง
- Drop ใช้ลบฐานข้อมูลและตาราง
- Alter ใช้เปลี่ยนแปลงโครงสร้างตาราง
มาเล่นกันเถอะ
Create Databases
สร้างฐานข้อมูลชื่อ school
create database school;
ไหนขอดูฐานข้อมูลทั้งหมดหน่อย
show databases;
Delete Databases
ลบฐานข้อมูลชื่อ school
drop database school;
ง่ายมากเลยใช่ไหม ต่อเลยนะ
สร้างฐานข้อมูลชื่อ university
Create DATAbase university
;
คำสั่งที่เพิ่งผ่านมาเพื่อนๆจะเห็นว่า ตัวพิมพ์ใหญ่หรือพิมพ์เล็กไม่มีผลต่อการทำงานของคำสั่ง เรายังคงได้ฐานข้อมูลชื่อ university สมความอยาก
ลองสร้างซ้ำโดยใช้ U เป็นพิมพ์ใหญ่ แบบนี้
create database University;
มันบอกเลยว่าฐานข้อมูลดังกล่าวมีอยู่แล้ว
Can’t create database ‘University’; database exists
สรุปภาษา SQL ไม่สนใจพิมพ์ใหญ่พิมพ์เล็ก สนแค่ว่าพิมพ์ถูกหรือเปล่า เช่น ต้องจบท้ายคำสั่ง (โดยเฉพาะใน command line) ด้วยเครื่องหมาย ;
Create Tables
จะสร้างตารางได้เราจะต้องเลือกฐานข้อมูลที่ต้องการก่อน ในที่นี้ต้องการสร้างตารางในฐานข้อมูลชื่อ university จึงว่า
use university;
สร้างตารางชื่อ students ให้กับ university
create table students;
มันก็บอกว่าต้องมีอย่างน้อย 1 column
A table must have at least 1 column
งั้นเอาใหม่ ให้ student หนึ่งคนประกอบด้วย id แบบเพิ่มอัตโนมัติกับ first_name ที่ยาวได้เต็มที่ 30 ตัวอักษร โดย id ให้เป็นคีย์หลักซึ่งหมายความว่าไม่ให้ซ้ำกัน
create table students(
id int not null auto_increment,
first_name varchar(30),
primary key(id)
);
ไหนขอดูตารางทั้งหมดหน่อย
show tables;
ไหนขอดูโครงสร้างตารางนี้หน่อย
show columns from students;
Delete Tables
เพิ่งสร้างเสร็จอยากลบตารางทิ้ง ลบตารางก็
drop table students;
Alter Tables
ก่อนจะปรับปรุงเปลี่ยนแปลงตาราง ก็ต้องมีตารางก่อน ให้เพื่อนๆสร้างตาราง students อีกครั้ง จากนั้นเราจะเพิ่ม last_name ให้แก่มัน เราจึงต้องเปลี่ยนแปลงโครงสร้างของมัน
เพิ่ม column
alter table students add column last_name varchar(30);
เอาอีก ขอเพิ่ม nickname ด้วย
alter table students add column nickname varchar(10);
ลบ column
จู่ๆก็อยากลบ nickname ออก ก็ว่า
alter table students drop column nickname;
เปลี่ยนชื่อตาราง
เอ๋ อยากเปลี่ยนชื่อตารางนี้ โดยการตัดตัว s ตรงท้ายออก จาก students เป็น student
alter table students rename to student;
สร้างไปแล้วเกิดอยากเปลี่ยนชื่อฐานข้อมูล
เปลี่ยนชื่อฐานข้อมูล
หลักการเปลี่ยนชื่อฐานข้อมูลในที่นี้อาศัยวิธีการสำรองข้อมูล (backup) โดยการบันทึกข้อมูลทั้งหมดไว้สักแห่งหนึ่งก่อน จากนั้นสร้างฐานข้อมูลใหม่ ต่อด้วยการย้ายข้อมูลทั้งหมดลงฐานข้อมูลใหม่ (transfer) แล้วลบฐานข้อมูลเก่าทิ้งไป (วิธีการดังกล่าวนี้ใช้กับฐานข้อมูลที่มีขนาดไม่ใหญ่มาก)
เปลี่ยนชื่อฐานข้อมูลจาก university เป็น university_courses
ก็ต้องสร้างฐานข้อมูล university_courses ก่อน
create database university_courses;
แล้วออกจาก mariadb command line mode
exit
สำรองข้อมูลจากฐานข้อมูลเก่า ตั้งชื่อไฟล์ว่า university-data.sql
mysqldump -u root -p university > university-data.sql
-u
คือ username โดย default ชื่อ root
-p
คือ password
ย้ายข้อมูลทั้งหมดลงฐานข้อมูลใหม่
mysql -u root -p university_courses < university-data.sql
กลับเข้าไปดูสิ
mysql -u root -p
และ
show databases;
use university_courses;show tables;
show columns from student;
เมื่อได้แล้วจึงลบฐานข้อมูลเก่าทิ้งไป
drop database university;
การบ้าน
ไหนใครสามารถสืบค้นเองได้บ้างว่าเปลี่ยนชื่อ column ของตาราง student จาก first_name เป็น firstname และจาก last_name เป็น lastname ทำได้อย่างไร
คำตอบ
alter table student
change column first_name firstname
varchar(30)
;
แหล่งอ้างอิง
https://chartio.com/resources/tutorials/how-to-rename-a-database-in-mysql/
https://mariadb.com/kb/en/mysqldump/
https://www.techonthenet.com/mariadb/tables/alter_table.php