ภาษา SQL กับ MariaDB part 2

Phai Panda
3 min readJan 5, 2020

--

สร้างฐานข้อมูล, ลบฐานข้อมูล, สร้างตาราง, ลบตาราง, เพิ่ม column, ลบ column, เปลี่ยนชื่อ column, เปลี่ยนชื่อตาราง และเปลี่ยนชื่อฐานข้อมูล

ความเดิมจาก part ที่ผ่านมา

Data Definition Language

ผมเรียกว่ากลุ่มของผู้สร้าง ไม่ว่าจะสร้างฐานข้อมูล สร้างตาราง รวมถึงการเปลี่ยนแปลงโครงสร้างตาราง กลุ่มของผู้สร้าง แบ่งออกเป็น 3 คำสั่งย่อย ได้แก่

  1. Create ใช้สร้างฐานข้อมูลและตาราง
  2. Drop ใช้ลบฐานข้อมูลและตาราง
  3. Alter ใช้เปลี่ยนแปลงโครงสร้างตาราง

มาเล่นกันเถอะ

Create Databases

สร้างฐานข้อมูลชื่อ school

create database school;

ไหนขอดูฐานข้อมูลทั้งหมดหน่อย

show databases;
สร้าง school db

Delete Databases

ลบฐานข้อมูลชื่อ school

drop database school;
ลบ school db

ง่ายมากเลยใช่ไหม ต่อเลยนะ

สร้างฐานข้อมูลชื่อ university

Create DATAbase university
;
สร้าง university db

คำสั่งที่เพิ่งผ่านมาเพื่อนๆจะเห็นว่า ตัวพิมพ์ใหญ่หรือพิมพ์เล็กไม่มีผลต่อการทำงานของคำสั่ง เรายังคงได้ฐานข้อมูลชื่อ 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

--

--

No responses yet