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

DBMS : MySQL

DBMS

     DBMS มีหลายตัวให้เลือกใช้ แต่ที่ได้เลือกใช้ คือ mySQL เนื่องจากเป็น open source (คือ ตัว software เป็นแบบฟรีที่ถูกลิขสิทธิ์) และอีกสาเหตุที่เลือกใช้เนื่องจากมีอยู่ในเครื่องคอมพิวเตอร์อยู่แล้วโดยในตอนนั้นลงเป็น appserv ซึ่งจะมี php และ mySQL ติดมาด้วย จึงไม่ต้องทำการดาวน์โหลดใหม่

AppServ : Apache + PHP + MySQL


     เมื่อลงโปรแกรมเสร็จแล้ว ก่อนอื่นจะทำการ log in ก่อน เมื่อทำการ log in เสร็จแล้ว ฝั่งซ้ายมือของแต่ละบรรทัดจะขึ้นต้นด้วย mysql>
     ตัวแปรแกรมจะมีข้อมูลแถมมาให้ด้วย โดยเราสามารถเช็ค DB ได้จาก คำสั่ง SHOW DATABASE;

     ปล. คำสั่ง ตัวอักษรเล็กหรือใหญ่ ไม่ต่างกัน

ภาพแสดง การใช้คำสั่งในการดู DB

     ในภาพ จะเห็นได้ว่ามี DB ทั้งหมด 4 ตัว โดยหลังจากนี้ เราจะทำการเพิ่ม DB ของเราเอง โดยให้ชื่อว่า student ดังนั้นต้องใช้คำสั่งในการสร้าง DB นั่นคือ create database student; 

ภาพแสดง การใช้คำสั่ง ในการสร้าง DB

     หากเราต้องการลบ DB ตัวใด ก็จะใช้คำสั่ง drop database ตามด้วชื่อDB เช่น หากต้องการลบ thaicreate_2013 ก็จะใช้คำสั่ง drop database thaicreate_2013; 

ภาพแสดงตัวอย่างการลบ DB

     เมื่อทำการเช็ค DBทั้งหมด จะเห็นได้ว่าไม่มี thaicreate_2013 แล้ว และได้มี student เพิ่มเข้ามาแทน

ภาพแสดง DB หลังจากการเพิ่มและลบDB

      หากเราต้องการจะทำDB ตัวใด เราต้องทำการเลือก DB ก่อนถึงจะกำหนดชื่อตารางใน DB ได้ โดยใช้คำสั่ง use ตามด้วยชื่อ DB ที่สร้างไว้ เช่น กรณีนี้ ที่เราจะใช้ DB ของ student จึงใช้คำสั่ง use student;
   
ภาพแสดงการเลือก DB

     หากต้องการให้แสดงตารางทั้งหมดในDB นี้ จำใช้คำสั่ง show tables; แต่เนื่องจาก DB student เราพึ่งทำการสร้างใหม่ ทำให้ยังไม่มีตารางหรือข้อมูลใดๆเลย จึงได้แจ้งว่า Empty

ภาพแสดงการใช้คำสั่ง แสดงตาราง

     เราจะมาทำการสร้างตารางกัน โดยใช้คำสั่ง create table ตามด้วยชื่อตาราง(ข้อมูล1 ชนิด1,ข้อมูล2 ชนิด2) ;  เช่น เราอยากจะสร้างตารางที่ชื่อว่า ece โดยเก็บข้อมูล
1) ID student
2) Name
3) Surname
4) Major
     เราจะใช้คำสั่ง create table ece (id_student varchar(13), name varchar(20), surname varchar(20), major varchar(5));

ภาพแสดงการสร้างตารางและคอลัมน์ต่างๆในตาราง

     ข้อผิดพลาดที่พบ โดยในตอนแรกที่พบคือ ตอนสร้างคอลัมน์ในตาราง ตรง id_student ได้กำหนด type เป็น int เนื่องจากคิดว่า id ใส่ได้เพียงแค่ตัวเลขอยู่แล้ว แต่เมื่อทำการใส่ข้อมูลไปแล้ว ถึงพบว่า integer มีขีดจำกัดในตัวเลขต่ำสุดและสูงสุด คือ –2,147,483,648 ถึง 2,147,483,647 ทำให้ข้อมูลที่ใส่ไป กลับเป็นเลข integer ที่สูงสุด จึงได้ทำการแก้ไขเป็นการเก็บค่าโดยใช้ varchar 
     คำสั่งในการเปลี่ยนชื่อคอลัมน์ในตารางคือ 
          ALTER TABLE ece CHANGE id_student  id_student  varchar(13);
        อ้างอิงจาก : http://www.1keydata.com/sql/alter-table-rename-column.html

     หรืออาจทำหารลบตารางและสร้างใหม่ โดยการลบตารางใช้คำสั่ง
          drop table ece;
     ข้อมูลเกี่ยวกับ data type อ้างอิงจากเว็บไซต์ : 
                                        http://code.function.in.th/sqlserver/data-type
                                        http://www.tutorialspoint.com/sql/sql-data-types.htm

     หลังจากการเพิ่มตารางชื่อ ece แล้วทำการเช็คว่าได้เพิ่มแล้วจริงหรือไม่ โดยใช้คำสั่ง show tables; แต่ทีนี้จะไม่แจ้งว่า Empty แล้ว เนื่องจากได้เพิ่มไปแล้ว

ภาพแสดงการชื่อตาราง หลังจากมีเพิ่มตารางเข้าไป

      แต่ถ้าหากจะดูรายละเอียดต่างๆในตาราง เช่น ชื่อคอลัมน์ typeที่ใช้เก็บข้อมูล จะใช้คำสั่ง describe ตามด้วยชื่อตาราง เช่น describe ece; ก็จะเห็นข้อมูลต่างๆในตาราง ตามที่เราได้สร้างไว้ก่อนหน้า

ภาพแสดงการใช้คำสั่งdescribe


     การเพิ่มข้อมูลเข้าไปยังตาราง จะใช้คำสั่ง insert into ดังที่เคยได้ศึกษามาก่อนในเว็บ w3school 

ภาพแสดงตัวอย่าง การใส่ข้อมูลตัวที่ 1

ภาพแสดงตัวอย่าง การใส่ข้อมูลตัวที่ 2

     หากต้องการดูข้อมูลที่ใส่ไปทั้งหมด ในตาราง ece ทำได้โดยใช้คำสั่ง select * from ece; จะเห็นได้ว่ามีข้อมูลทั้งสองตัว ตามที่ได้เพิ่มเข้ามาก่อนหน้า

ภาพแสดงการแสดงข้อมูลทั้งหมดในตาราง

     หลังจากนั้นได้ทำการเพิ่มข้อมูลเข้าไปอีก 3 คน เป็น 5 คน โดยคนที่ 5 สร้างขึ้นเพื่อจะทดลองใช้คำสั่ง delete 

     

ภาพแสดงข้อมูลปัจจุบัน ที่มีจำนวน 5 คนก่อนทำการลบ

ภาพแสดง การลบ ข้อมูลตรงแถวที่ืname มีค่าเป็น love

ภาพแสดงข้อมูลหลังทำการลบ โดยเหลือข้อมูลอยู่ 4 ข้อมูล


     ทดลองทำการอัพเดตค่า โดยเลือกทำการอัพเดตชื่อของ "Noparat" และ "Phairojpattanakul" ให้เป็นตัวอักษรพิมพ์เล็กให้หมด ซึ่งทำได้ดังนี้

ภาพแสดงคำสั่งในการอัพเดตข้อมูลของ noparat

ภาพแสดงการตรวจสอบข้อมูลในตารางหลังการอัพเดต


     ทดลองให้เรียงข้อมูลที่นำมาแสดง ตามชื่อและนามสกุลของนักศึกษา โดยใช้คำสั่ง order by โดยมีรายละเอียดคำสั่งดังรูป

ภาพแสดงการจัดเรียงข้อมูล ตามชื่อและนามสกุลของนักศึกษา

     
อ้างอิงข้อมูลการทำจาก :

วันอาทิตย์ที่ 24 มกราคม พ.ศ. 2559

SQL Tutorial By W3School

SQL Tutorial 

     ที่ได้ทำการทดลอง เป็นการทดลองผ่านเว็บไซต์ http://www.w3schools.com/sql/  เนื่องจากมีการสอนตัวอย่างการทำ และมีตัวอย่าง data เพื่อให้ได้เริ่มทดลอง ไปตามบทเรียนที่ทางเว็บไซต์ ได้จัดสร้างไว้ให้

     โดย SQL คือภาษาที่ใช้ในการเขียนโปรแกรม เพื่อจัดการกับฐานข้อมูลโดยเฉพาะ 
ในสัปดาห์ที่สอง ได้ทำการศึกษาทั้งหมด 8 บทเรียน ได้แก่
บทเรียนที่ 1 (SELECT)
บทเรียนที่ 2 (DISTINCT)
บทเรียนที่ 3 (WHERE)
บทเรียนที่ 4 (AND & OR)
บทเรียนที่ 5 (ORDER BY)
บทเรียนที่ 6 (INSERT INTO)
บทเรียนที่ 7 (UPDATE)
บทเรียนที่ 8 (DELETE)



บทเรียนที่ 1 : SELECT

     จากลิ้ง : http://www.w3schools.com/sql/sql_syntax.asp
     บทเรียนนี้ให้ code ดังนี้มา
             

ภาพตัวอย่าง codeของบทเรียนที่ 1

     โดยเมื่อทำการ run code ดังกล่าว ผลที่ได้คือ การแสดงข้อมูลทุกคอลัมน์ ของ database

ภาพแสดงตารางตาม code ของบทเรียนที่ 1 

     ที่เป็นเช่นนั้นเนื่องจากใน code หลังจาก SELECT เป็น * ซึ่งหมายถึง all คือการเอาทุกคอลัมน์ หากไม่ต้องการให้แสดงทุกคอลัมน์ให้เป็นจาก * เป็นชื่อ คอลัมน์ แทน

ภาพตัวอย่าง code ที่ได้ทำการเปลี่ยนแปลง โดยไม่เอาทุกคอลัมน์แล้ว

ภาพแสดงตารางตาม code ที่ได้ทำการเปลี่ยนแปลง โดยได้เลือกคอลัมน์ CustomerName,City และ Country


บทเรียนที่ 2 : DISTINCT

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_distinct.asp
     หากต้องการให้แสดงข้อมูลของแต่ละคอลลัมน์ที่ไม่ซ้ำกันเลย ให้ใส่คำว่า DISTINCT ระหว่างคำว่า SELECT กับ ชื่อคอมลัมน์ 

ภาพแสดงcodeที่ใส่DISTINCT กับแบบบทเรียนเดิม เรียงจากซ้ายไปขวาตามลำดับ

ภาพแสดงตารางข้อมูลตาม code ที่ใส่ DISTINCT กับแบบบทเรียนเดิม เรียงจากซ้ายไปขวาตามลำดับ

     โดยจะเห็นได้ว่าจ้อมูลที่ได้ในบรรทัดที่ 2 กับ 3 ของตารางทางขวามือ หรือตารางที่ได้จาก code ที่ไม่ได้ใส่คำว่า DISTINCT จะเป็นประเทศ Mexico เหมือนกัน แต่ในตารางทางซ้ายมือจะข้ามการแสดงปนะเทศ Mexico ซ้ำ โดยจะแสดงข้อมูลถัดไปเลย

บทเรียนที่ 3 : WHERE

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_where.asp
     คำสั่ง WHERE เหมือนเป็นการใส่เงื่อนไข 

ภาพแสดง Syntax สำหรับบทเรียนที่ 3 เรื่อง WHERE


     โดยตัวอย่างที่ทางเว็บไซต์ให้ทดลองทำการศึกษา คือ การเลือกข้อมูลในคอลัมน์ Country ที่ชื่อว่า Mexico โดยให้แสดงข้อมูลทุกคอลัมน์ในตาราง (เนื่องจาก SELECT *)

ภาพแสดง code ตัวอย่างสำหรับบทเรียนที่ 3

ภาพแสดงตารางข้อมูลตาม code ตัวอย่างสำหรับบทเรียนที่ 3

     โดยตรงตำแหน่ง Operation ไม่ได้มีแค่เครื่องหมาย = แต่คล้ายกับการเขียนโค้ดโปรแกรม ในภาษาอื่นๆคือ มีน้อยกว่า มากกว่า ใช้่เที่ยบในกรณีเป็นตัวเลข เช่น WHERE CustomerID>1; และมีเครื่องหมายอื่นๆอีก ดังจะแสดงในตาราง

ภาพแสดง operation และความหมายของ operation

บทเรียนที่ 4 : AND & OR

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_and_or.asp

     AND และ OR เป็น operation พื้นฐานที่ใช้เช็คเงื่อนไขทางตรรกศาสตร์ โดยให้ผลลัพธ์ ออกมาเป็น จริงหรือเท็จ เท่านั้น 

     AND


ตารางแสดงผลลัพธ์ ทางตรรกศาสตร์ของ AND


ภาพแสดงตัวอย่างการใช้ AND ในบทเรียนที่ 4

     โดยผลลัพธ์การแสดงข้อมูลที่ได้จาก Code ดังกล่าวคือ เลือกข้อมูลที่มีประเทศเป็นเยอรมันนีและอยู่ที่เมืองเบอลิน โดยให้แสดงข้อมูลทุกคอลัมน์ ซึ่งได้ผลดังนี้

ภาพแสดงตารางข้อมูลตามcode ที่ใช้ AND ในบทเรียนที่ 4

     OR


ตารางแสดงผลลัพธ์ ทางตรรกศาสตร์ของ OR


ภาพแสดงตัวอย่างการใช้ OR ในบทเรียนที่ 4


     โดยผลลัพธ์การแสดงข้อมูลที่ได้จากCode ดังกล่าวคือ เลือกข้อมูลที่มีเมืองเป็น Berlins หรือ München โดยให้แสดงข้อมูลทุกคอลัมน์ ซึ่งได้ผลดังนี้

ภาพแสดงตารางข้อมูลตามcode ที่ใช้ ORในบทเรียนที่ 4

บทเรียนที่ 5 : ORDER BY

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_orderby.asp
     คำสั่ง order by เป็นการบอกให้แสดงข้อมูลโดยเรียงข้อมูลตามตัวอักษร จากA-Z หรือ Z-A หรือมากกว่าไปน้อยกว่า หรือน้อยกว่าไปมากกว่าโดยทำการเรียงข้อมูลใด ก็อยู่ที่เราเลือก โดยมีรูปแบบ syntax ดังนี้
           
ภาพแสดงรูปแบบ syntax ของบทเรียนที่ 5
      

     โดยปกติถ้าไม่เติม ASC หรือ DESC หลังชื่อคอลัมน์ ค่าของมันจะถูกsetให้เป็นการเรียงแบบ ASC คือเรียงจาก A-Z หรือ น้อยไปมาก แต่หากsetให้เป็นการเรียงแบบ DESC จะเป็นการเรียงแบบ Z-A หรือน้อยไปมาก 
    ตัวอย่างในบทเรียนนี้จะเป็นการ set ให้ดูทั้งสองแบบ โดยลำดับของชื่อคอลัมน์ ก็มีความสำคัญ คือ ชื่อคอลัมน์ใดมาก่อน ก็เรียงตัวนั้นก่อน แล้วค่อยเรียงลำดับถัดไป

ภาพแสดงตัวอย่างการเขียน code ในบทเรียนที่ 5


     โดยข้อมูลที่ได้แสดงออกมา จะเห็นได้ว่าจะทำการเรียง ประเทศ จาก A-Z (ASC) ก่อน และถ้ามีชื่อประเทศเดียวกันจะทำการเรียงชื่อลูกค้า โดยเรียงจาก Z-A (DESC) ดังจะแสดงให้เห็นในภาพต่อไปนี้

ภาพแสดงตารางข้อมูลที่ใช้คำสั่ง ORDER BY ตามบทเรียนที่ 5

  

บทเรียนที่ 6 : INSERT INTO

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_insert.asp
     INSERT INTO เป็นการเพิ่มข้อมูลเข้าไปเก็บยัง DB โดย Syntax มี2 แบบคือ ระบุ คอลัมน์ หรือไม่ระบุ หากไม่ระบุ ข้อมูลจะใส่เรียงไล่ไปทีละคอลัมน์ หากใส่ไม่ครบทุกคอลัมน์(ในกรณีไม่ระบุคอลัมน์) จะมีการแจ้งเตือนว่าใส่ไม่ครบ แต่หากระบุชื่อคอลัมน์ หากใส่ไม่ครบทุกคอลัมน์ ข้อมูลส่วนที่ไม่ได้ใส่จะขึ้นเป็น NULL

ภาพแสดงSyntax ของการใช้ INSERT INTO ทั้งสองแบบ


     ในบทเรียนนี้จะลองให้เราเพิ่มข้อมูลใส่ลงไป โดยเราจะลองทำการใส่ข้อมูลที่ตารางที่ชื่อว่า Categories ซึ่งเดิมมีข้อมูลอยู่ 8 ข้อมูล (ใช้คำสั่ง SELECT * FROM Categories ในการดูข้อมูล) 

ภาพแสดงข้อมูลเดิม ก่อนการใช้คำสั่ง INSERT INTO

     จะเห็นได้ว่าจากข้อมูลทั้งหมด ตอนนี้มีอยู่ 8 ข้อมูล โดยข้อมูลสุดท้ายคือ 8-----Seafood-----Seaweed and fish ซึ่งเราจะทำการ เพิ่มข้อมูลที่ 9 ลงไป โดยข้อมูลที่ 9 ที่เราจะเพิ่มคือ Fruit ----- Melons,Apples,Oranges,Grapes and Bananas โดยใช้คำสั่งดังนี้

ภาพแสดง code การเพิ่มข้อมูลโดยใช้คำสั่ง INSERT INTO


     เมื่อทำการรัน code ดังกล่าว จะมีการแจ้งเตือนว่าเราได้ทำการเปลี่ยนแปลง db โดยมีผลกระทบต่อแถวเพียง 1 แถว
ภาพแสดงข้อความที่แจ้ง หลังใช้คำสั่ง INSERT INTO

     จากนั้นทำการเช็คข้อมูล ว่าที่ใส่เพิ่มเข้าไปมีการเปลี่ยนแปลงอย่างไร (โดยใช้คำสั่ง SELECT * FROM Categories) ผลที่ได้คือ มีการเพิ่มเข้ามาแล้ว ดังรูปด้านล่าง

ภาพแสดงข้อมูลตัวที่ 9 ที่ถูกเพิ่มเข้ามาโดยคำสั่ง INSERT INTO

ปล.เนื่องจากข้อมูลของคอลัมน์ CategoryID ถูกset defult ให้บวกเลขเพิ่มทีละ 1 ทำให้ไม่ต้องใส่ข้อมูลก็ได้ หากต้องการให้เลขไล่ไปเรื่อยๆ ตามลำดับ

บทเรียนที่ 7 : UPDATE

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_update.asp
     คำสั่ง UPDATE ใช้ในการเปลี่ยนแปลงค่าของข้อมูลที่มีอยู่แล้วใน db โดยมีรูปแบบ syntax ดังนี้

ภาพแสดงรูปแบบ syntax ในบทเรียนที่ 7 
     คำเตือน  อย่าลืมใส่ WHERE เพราะไม่งั้นจะถือว่าทำการเปลี่ยนแปลงทุกแถวเลย เช่นถ้าเมื่อเรารัน

     UPDATE Customers
     SET ContactName='Alfred Schmidt', City='Hamburg'
     โดยไม่กำหนด WHERE ผลที่ได้คือ

ภาพแสดงข้อมูลหลังจากการ UPDATE โดยไม่ใส่ WHERE
     
     จะเห็นได้ว่าข้อมูลของคอลัมน์ ContactName กับ City จะถูกเปลี่ยนไปตามที่code เขียนไว้ แต่จะถูกเปลี่ยนให้เหมือนกันทุกแถว นี่คือผลเสียที่จะเกิดขึ้นในกรณีที่เราไม่กำหนด WHERE ในการ UPDATE

     ตัวอย่างของการ UPDATE โดยใส่ WHERE โดยจะทำการเปลี่ยน ที่ WHERE CustomerName='Alfreds Futterkiste'; โดยจะเปลี่ยนข้อมูลContactNameเป็น'Alfred Schmidt' และCityเป็น'Hamburg' โดยข้อมูลก่อนการเปลี่ยนแปลงContactNameเป็น 'Maria Anders' และCityเป็น 'Berlin'



ภาพแสดงข้อมูลก่อนการเปลี่ยนแปลง

ภาพแสดงcode ตัวอย่างการ UPDATE
ภาพแสดงข้อมูลหลังการ UPDATE
ปล. การตรวจดูข้อมูลทั้งก่อนและหลังUPDATE จะใช้คำสั่ง
SELECT * FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

บทเรียนที่ 8 : DELETE

     จากลิ้งค์ : http://www.w3schools.com/sql/sql_delete.asp
     คำสั่ง DELETE คือ คำสั่งที่ใช้ในการลบแถวของข้อมูลออก โดยมี Syntax ดังนี้
ภาพแสดง syntax ของบทเรียนที่ 8

    ก่อนที่เราจะทำการลบข้อมูล เราจะเช็คข้อมูลก่อนการลบ โดยใช้คำสั่ง SELECT * FROM Customers ซึ่งผลตารางที่ได้คือ

ภาพแสดงตารางข้อมูลก่อนการdelete

     จะเห็นได้ว่าข้อมูลเรียง จาก 1 ไปเรื่อยๆ โดยไม่ขาดข้อมูลหรือข้ามเลขใดไปเลย จากนั้นเราจะทำการลบ ข้อมูล ที่เกี่ยวกับประเทศ Germany ซึ่งจากในภาพ คือข้อมูลแถวที่ 1 กับแถวที่ 6 (ในความจริงแล้ว มีข้อมูลมากกว่า 7 แถว) ซึ่งใช้คำสั่งในการลบดังนี้

ภาพแสดง code การใช้คำสั่ง DELETE 

     หลังจากการใช้คำสั่ง delete แล้ว ผลที่ได้คือ แถวที่ 1 กับ 6 หายได้ ซึ่งดูได้จาก CustomerID ที่เรียง 2 3 4 5 และ 7 เลย โดยไม่มี  1 กับ 6 ดังรูป

ภาพแสดงตารางข้อมูลหลังจากใช้คำสั่ง DELETE

     หากต้องการลบข้อมูลทุกแถวในตารางเราจะใช้คำสั่ง DELETE * FROM table_name; หรือ DELETE FROM table_name;โดยไม่กำหนด WHERE นั่นเอง