วันศุกร์ที่ 22 มกราคม พ.ศ. 2559

SQL Tutorial (Week 2)

SQL Tutorial 
     ฝึกใช้คำสั่งเบื้องต้นในการทำ database โดยเรียนรู้จากเว็บ http://www.w3schools.com/sql/default.asp


SQL Home
     SQLเป็นภาษาพื้นฐานในการเข้าถึงฐานข้อมูล การฝึก SQL ในเว็บ w3schools จะสอนวิธีการใช้ SQL การเข้าถึงและจัดการข้อมูลใน: MySQL, SQL Server, Access, Oracle, Sybase, DB2 และระบบฐานข้อมูลอื่น ๆ

SQL Intro
     SQL คืออะไร? SQL เป็นพื้นฐานมาจากโครงสร้างของ Query Language ช่วยให้เข้าถึงและจัดการข้อมูลได้ง่าย และ เป็นมาตรฐาน ANSI (American National Standards Institute)
    SQL ทำอะไรได้บ้าง?
          1. สามารถสอบถามข้อมูลกับฐานข้อมูล
          2. สามารถดึงข้อมูลจากฐานข้อมูล
          3. สามารถเพิ่มบันทึกลงฐานข้อมูล
          4. สามารถปรับปรุงเปลี่ยนแปลงฐานข้อมูล
          5. สามารถลบข้อมูลบนฐานข้อมูล
          6. สามารถสร้างฐานข้อมูลใหม่
          7. สามารถสร้างตารางใหม่ในฐานข้อมูล
          8. สามารถสร้างกระบวนการการจัดเก็บในฐานข้อมูล
          9. สามารถสร้างมุมมองในฐานข้อมูล
          10. สามารถกำหนดสิทธิ์ในการเข้าใช้ต่างๆ

SQL Syntax

     ใน Database Tables ส่วนใหญ่จะเก็บข้อมูลไว้ 1 ตารางหรือมากกว่า 1 ส่วนในรูปด้านล่างจะเป็นตารางของ Customers


รูปแสดงตารางข้อมูลของตาราง Customers
     ซึ่งในตัวอย่างของ SQL Statements จะมีให้เราเลือกว่าจะดึงข้อมูลจาก tableไหนออกมาดูโดยใช้คำสั่ง SELECT * FROM [tableที่เราต้องการในฐานข้อมูลที่เรามี]; ซึ่งในตัวอย่างจะมี table ให้เลือกอยู่ 8 อย่าง ดังภาพที่แสดงด้านล่าง

ภาพตัวอย่างการดึงข้อมูลจากตารางCategories

SQL Select
     วิธีการเลือกดูหัวข้อของข้อมูลที่เราต้องการจะใช้คำสั่ง
SELECT column_name,column_name
FROM table_name;
     
ภาพแสดงตัวอย่างในการดึงข้อมูลออกมาเพียง 3 Column
     จากภาพจะเห็นว่าเราเลือกมาเพียง 3 Column คือ CustomerID,CustomerName,Address

     ส่วนการใช้ SELECT * FROM table_name; นั้นตัว '*' เป็นตัวบ่งบอกว่าเราจะเอาทุก Column ในตารางนั้นๆ

ภาพแสดงการเลือกทุก Column ในตาราง

SQL Distinct
     เป็นคำสั่งที่ใช้ดึงเฉพาะข้อมูลที่ไม่ซ้ำกันออกมา โดยใช้คำสั่ง
SELECT DISTINCT column_name,column_name
FROM table_name;

ภาพแสดงการดึงเฉพาะข้อมูลที่ไม่ซ้ำจากตาราง Orders
     จากภาพเราต้องการรู้ข้อมูลที่ไม่ซ้ำกันในตารางของ Orders จากหัวข้อ EmployeeID

SQL Where
     เป็นคำสั่งที่ต้องการค้นหาข้อมูลที่ระบุไว้
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

ภาพแสดงการค้นหาคำว่า Mexico
     จากภาพเราต้องการค้นหาคำว่า Mexico ใน Country ข้อมูลที่ได้ก็จะแสดงออกมาแต่ประเทศ Mexico

     ส่วน Operators ที่ใช้ใน Where ก็สามารถใช้ได้หลายรูปแบบดังนี้
ภาพแสดง Operators ที่มีให้เลือกใช้

SQL And & Or
     เป็นคำสั่งที่ใช้แสดงเมื่อเราใส่เงื่อนไขเป็นจริง เช่น

SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';

     เราจะแสดง Customers ที่อยู่ในประเทศ Germany และ เมือง Berlin เท่านั้น ส่วน

SELECT * FROM Customers
WHERE City='Berlin'
OR City='München';

    เราจะแสดง Customers ที่อยู่ในเมือง Berlin หรือเมือง München ทั้ง2เมือง

    หรือเราจะใช้การเขียนผสมกันของ And & Or เช่น

SELECT * FROM Customers
WHERE Country='Germany'
AND (City='Berlin' OR City='München');

  เราจะแสดง Customers ที่อยู่ในประเทศ Germany และ เมือง Berlin หรือ München 


ภาพตัวอย่างการใช้ And และ Or ผสมกัน

SQL Order By

     เป็นคำสั่งที่ไว้ใช้เรียงข้อมูล จากน้อยไปมาก และ จากมากไปน้อยโดยใช้คำสั่ง

SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;

     โดย ASC ย่อมาจาก ascending คือ เรียงจากน้อยไปมาก DESC ย่อมากจาก descending คือ เรียงจากมากไปน้อยแต่ถ้าเราไม่ระบุชนิดของ ORDER BY column_name ASC|DESC ค่าเริ่มต้นที่กำหนดไว้คือ ASC


ภาพตัวอย่างการใช้ ASC และ DESC
     จากภาพด้านบนเราจะใช้การเรียงข้อมูลทั้ง ASC และ DESC โดยเราจะเรียงชื่อ Country ก่อนจากน้อยไปมาก คือ A ถึง Z และ อันดับต่อมาจะให้เรียง CustomerName จากมากไปน้อย คือ Z มา A

SQL Insert Into

     เป็นการเพิ่มข้อมูลเข้าไปในฐานข้อมูลเดิมโดยใช้คำสั่ง

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

     โดยเราจะลองใช้คำสั่ง

INSERT INTO Shippers (ShipperName, Phone)
VALUES ('Test','0123456789');


ภาพแสดงผลลัพธ์ที่ได้จากการใช้คำสั่ง Insert Into
     จากรูปแสดงให้เห็นผลลัพธ์จากการลองใช้คำสั่งด้านบน จะเห็นว่ามีการเพิ่มข้อมูลเข้าไปในฐานข้อมูลเดิม

SQL Update
     เป็นการแก้ไขข้อมูลที่มีอยู่แล้วในฐานข้อมูล โดยใช้คำสั่ง

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

     update ตามด้วยชื่อของตารางที่เราต้องการ , set คือการจะแก้ไขเป็นชื่ออะไร , where เพื่อบอกว่าแก้ไขแทนที่ตรงไหนในฐานข้อมูล
     ข้อควรระวัง ถ้าลืมใส่ where ลงในคำสั่งจะทำให้เกิดการเปลี่ยนแปลงทุก Column ดังภาพด้านล่าง


ภาพแสดงผลลัพธ์ที่ได้เมื่อไม่ใส่ Where

SQL Delete
     เป็นการลบข้อมูลใน row ออกจาก table นั้นๆ โดยใช้คำสั่ง

DELETE FROM table_name
WHERE some_column=some_value;


ภาพแสดงผลลัพธ์ที่ได้จากการใช้คำสั่ง Delete
     จากภาพได้ลองลบ Country Mexico ออกจากฐานข้อมูล ซึ่งจะเห็นได้ว่า แถวที่ 2 3 13 นั้นได้หายไปเพราะเดิมที่ 3 แถวนั้นเก็บข้อมูลประเทศของ Mexico เอาไว้นั้นเอง
     หากต้องการลบข้อมูลทั้ง Table ก็ให้ใช้คำสั่ง DELETE FROM table_name; หรือ DELETE * FROM table_name;
     ข้อควรระวัง หลังจากลบข้อมูลทิ้งไปแล้ว เราไม่สามารถยกเลิกได้

     หลักจากทดลองคำสั่งเบื้องต้นแล้ว ได้ทำการโหลดโปรแกรมการจัดการฐานข้อมูลมาใช้ โดยตัวที่เลือกคือ Mysql เพราะเป็น Open Source License โดย download จาก http://dev.mysql.com/downloads/windows/installer/ เป็น version 5.7.10


     เมื่อลงโปรแกรมเสร็จเรียบร้อยแล้วเราจะเปิดโปรแกรม เป็นแบบ command line ใส่ passwordและเริ่มการใช้งานได้ทันที



รูปภาพหลังจากใส่รหัสผ่านแล้ว

     จากนั้นใช้คำสั่ง CREATE DATABASE movie; จะสร้าง Database ขึ้นมาใหม่ และพิมพ์คำสั่ง show databases; เพื่อให้แสดงข้อมูลใน database ที่เรามี


รูปภาพแสดงข้อมูล database ที่เรามี
  
     เมื่อเราต้องการเข้าไปแก้ไขข้อมูลใน movie ให้ใช้คำสั่ง use movie;
     จากนั้นทำการสร้าง Table โดยใช้คำสั่ง

CREATE TABLE horror (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(50),
time_minutes int,
rate float);

     โดยค่าของ id จะไม่มีทางเป็น NULL และจะเพิ่มขึ้นที่ละ 1
     จากนั้นพิมคำสั่ง show tables; เพื่อดูตารางที่เราสร้าง


รูปภาพแสดงชื่อ Table ใน Database Movie

     เราสามารถดูรายละเอียดของชนิดตัวแปรที่เรากำหนดใน tableได้ด้วยคำสั่ง describe horror;


รูปภาพรายละเอียดของ Table horror

     หลังจากนั้นได้ทดลองใส่ข้อมูล โดยใช้คำสั่ง Insert Into


ผลลัพธ์ที่ได้หลังจากใส่ข้อมูลลง Table

ปัญหาที่พบ
     เนื่องจากเวลาที่เราใส่ข้อมูลลงไปใน Table เลข id จะเพิ่มขึ้นเรื่อยๆที่ละ 1 เมื่อเราลบข้อมูลทิ้งไป เลข id ที่โดนลบไปนั้นจะไม่ถูกแทนที่ด้วยข้อมูลใหม่ ทำให้เลข id นั้นถูกข้ามไปเลย ซึ่งวิธีแก้ไขคือ ตอนเราจะใส่ข้อมูลแทนที่เลข id ที่หายไปนั้น ให้ใช้คำสั่ง

insert into horror (id,name,time_minutes,rate)
value ('เลขที่หายไป','name','time','rate');

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น