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

SQL and DBMS

SQL and DBMS (1st content)

 


เกริ่นนำ: เนื้อหาหลักๆใน Blog นี้ขอทำเป็นภาษาไทยให้คนไทยได้อ่านบ้างนะครับ (Blog ก่อนๆเน้น English เยอะไปหน่อย) ถ้าหากมีบางส่วนที่ใช้ Eng อยู่ ก็ขอประธานอภัยด้วย (Eng มันพิมพ์ง่ายและสั้นดี+อธิบายเป็นภาษาไทย คนอื่นเขาเข้าใจผมยาก 555+)


Cover Content เนื้อหาภายใน Content นี้

  • Part 1: Introduces of SQL เริ่มต้นรู้จักกันด้วย SQL  

  • Part 2: TBC: The Basically Commands คำสั่งที่เป็นพื้นฐานของ SQL

  • Part 3: What's "DBMS" อะไรคือ "DBMS" 

     

Part 1: Introduces of SQL เริ่มต้นกันด้วย SQL

    What's "SQL" อะไรคือ SQL ??
SQL: Structured Query Language แปลภาษาไทยคงจะประมาณว่า "ภาษาโครงสร้างการคิวรี่" (นี่แปลแล้วหรอ??)

เอาเป็นว่ามันเป็นภาษาหนึ่งในทางคอมพิวเตอร์ ที่มันจะใช้ร่วมกับ Database ซึ่งเราจะทำการเขียนและใช้มันในวันนี้!!

โดยการที่เราจะได้ทดลองใช้ภาษา SQL เราจะอ้างอิงจากการศึกษาจากเว็บไซต์ w3schools.com นะครับ ซึ่งเขาก็จะมี SQL Editor ให้ได้ลอง Try it yourself! กัน

หน้าตาเว็บไซต์ w3schools.com

 

 มาเริ่มต้นกันที่หน้า SQL Home เลย

SELECT * FROM Customers; 

 คำสั่งแรกในการจะทดลองใช้ SQL จะแบ่งเป็น 4 ส่วน
1. SELECT ส่วนการเลือก
2. * การเลือก (Rows) ทั้งหมดเลย
3. FROM เลือกจากข้อมูล...
4. Customers อันนี้เป็นส่วนของ Data เน้อ ซึ่งจะเป็นเหมือนตัวแปรให้เราเลือกมาแสดงนั่นเอง

นี่ลองดู Example แบบนี้ใน Try it yourself ! ดิ Copy Code ไปลองรันดูความแตกต่างระหว่าง 2 Code ได้เลย

    Before
SELECT * FROM Shippers;

    After
SELECT Phone FROM Shippers;

ถึงจุดนี้ เห็นความแตกต่างหรือยัง ว่าแต่ละส่วน หมายถึงการทำงาน หรือ ผลลัพธ์ส่วนใดบ้าง ซึ่งนั่นก็คือ "SQL" ของเรานั่นเองงงงง


Part 2: TBC: The Basically Commands คำสั่งที่เป็นพื้นฐานของ SQL

มาต่อกันเลยที่ Part 2 โดย part นี้จะพูดถึง The Most Important SQL Commands เน้อ ยกตัวอย่างเลยก็แล้วกัน
  • SELECT - extracts data from a database
  • UPDATE - updates data in a database
  • DELETE - deletes data from a database
  • INSERT INTO - inserts new data into a database
  • CREATE DATABASE - creates a new database
  • ALTER DATABASE - modifies a database
  • CREATE TABLE - creates a new table
  • ALTER TABLE - modifies a table
  • DROP TABLE - deletes a table
  • CREATE INDEX - creates an index (search key)
  • DROP INDEX - deletes an index
 โดยในบทความนี้จะสอนถึงในส่วนของ Delete นะครับ (เพราะถ้าเขียนไปรอบเดียวบทความคงเยอะและยาวมากกกก)

1] เริ่มกันเล๊ยย "SELECT" คำสั่งนี้คุ้นๆไหม ... นั่นคือคำสั่งที่เราได้ลองใช้ใน Part 1 ไง โดยหลัก Syntax ในการใช้ จะเป็นแบบนี้

SELECT column_name,column_name
FROM table_name;

สังเกตตรง column_name จะสามารถมีได้หลาย column เน้อ ซึ่งถ้าเราไม่กำหนด column ไหนเลยเราอาจจะใช้ * ในการแทนความหมายว่าเอา column data มันมาทั้งหมดน่ะแหละ และตรง table_name ก็จะเป็นส่วนของชื่อของตารางที่อยู่ใน database เรานั่นเอง

2] ถัดต่อมา "DISTINCT" โดยถ้าใช้ร่วมกับ SELECT ก็จะเป็นคำสั่งที่ใช้ในการเลือก column data นั่นๆ ซึ่งคล้ายๆกับ SELECT ไปดูตัวอย่าง Syntax ข้างล่างได้เลย



SELECT DISTINCT column_name,column_name
FROM table_name;

แต่!! มันมี feature ที่ extra มาก็คือการเลือกมาโดย ตัดตัวซ้ำกันออก และ เรียงลำดับตามตัวอักษร ให้เราด้วย เจ๋งมะๆ :D ในส่วนคำสั่ง DISTINCT นั้นจะวางอยู่ในตำแหน่งหลัง SELECT โดยที่คำสั่งอื่นๆ ก็ใช้รูปแบบคล้ายกับ Syntax ของ SELECT เลย

3] ถัดต่อมาเป็น "WHERE" เป็นคำสั่งที่เหมือนกับการ Filter หรือเป็นการกรอง Data ของเรานั่นเองโดยที่จะต้องมี ตัวแปรที่จะกรอง และ สิ่งที่เป็นตัวกรอง เสมอ ตัวอย่าง Syntax



SELECT * FROM Customers
WHERE City='berlin';

ข้อสังเกต คำสั่ง "WHERE" จะใช้หลังจากเราเลือก table data จาก FROM แล้ว โดยที่ "City" เป็นตัวแปร (ชื่อใน Column ของตาราง Customers) และ 'berlin' เป็นสิ่งที่เป็นตัวกรองนั่นเอง
 

[Hint: ตรงส่วนตรง 'berlin' จะไม่คิดถึงเรื่อง Capital Character เด้อ ประมาณว่าใช้ 'Berlin' หรือ 'BERLIN" ก็ได้ผลลัพธ์เหมือนกัน]

 และนอกจากการ filter ด้วย text แล้ว เรายังจะ filter ได้อีกหลายรูปแบบ ตัวอย่างเช่นการ filter ด้วยค่าตัวเลข


SELECT * FROM Products 
WHERE ProductID=1;

โดยเมื่อลองใช้กับ Try it yourself! แล้วจะได้มา 1 Entry เอง เพราะ filter เฉพาะ ProductID ที่มีค่าเท่ากับ 1 ซึ่งเท่านั้นยังไม่พอสำหรับการศึกษาคำสั่งนี้ เพราะโดยปกติเรามี Operator หลายตัว ถูกไหม ซึ่งจะมีดังตารางนี้เลย

Operator Description
= Equal
<> Not equal. Note: In some versions of SQL this operator may be written as !=
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN To specify multiple possible values for a column

จากตารางก็สามารถนำเอา Operator ไปเลือกใช้เพื่อการ Filter ได้เล๊ยยยย

Q: แล้วถ้าเราอยากได้ Filter มากกว่า 1 Filter ล้ะ เช่น เอาค่าที่มากกว่า 2 แต่ไม่เกิน 4 แบบนี้ล้ะ จะทำอย่างไร????
A: ไม่ต้องห่วง เพราะเรามีคำสั่ง "AND" และ "OR" ให้ใช้ด้วย

4] คำสั่ง "AND" และ "OR" จะเป็นเหมือนตัวช่วยให้เราสามารถเลือก Filter ได้หลายรูปแบบมากขึ้น ตัวอย่าง Syntax ก็คือ

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

ก็จากใน Syntax ถ้าลองกด Try it yourself! ดูก็จะพบว่า เอาส่วนของ Query Country ที่ตรงกับ Germany และ City ที่ตรงกับ Berlin ออกมา

แล้วถ้าเป็น Code นี้หล่ะ จะเป็นอย่างไร

SELECT * FROM Customers
WHERE Country='Germany'
AND Country='Mexico';

อ่า....ไม่ออกเลยสัก Entry =,.=" เอ้าก็ไป Filter มันทั้งสองประเทศ ที่มีค่า Country เดียวกัน แถมใช้ "AND" อีก มันจะมีไหมในโลกนี้ ถ้าอยากให้ได้ผลลัพธ์ทั้งสองประเทศต้อง Code นี้เลย

SELECT * FROM Customers
WHERE Country='Germany'
OR Country='Mexico';

สังเกตถึงความแตกต่าง ... เห็น "AND" แทนที่ด้วย "OR" ไหมหล่ะ เอ้อออออ ตรงนั้นแหละที่จะสามารถเอาทั้ง Country 'Germany' และ Country 'Mexico' ทั้งสองได้อ่ะ

EXTRA CODE แถมๆๆ การ Filter ที่ Advance ขึ้นมานิดนึง (Try it yourself!)

5] ต่อๆๆ ส่วนของ "ORDER BY" กันเลย ชื่อก็บอกแล้วว่ามันทำไรได้บ้าง นั่นคือการ เรียงลำดับนั่นเอง โดยการเรียงเนี่ยบอกเลยว่า Default ของมันคือการเรียงแบบ Ascending เด้อ ถ้าอยากเรียงถอยหลังแบบ Descending ก็แค่เติม DESC ต่อท้ายคำสั่งเท่านั้นเองงงงง

การเรียงแบบ Ascending [default]

SELECT * FROM Customers
ORDER BY Country; 

การเรียงแบบ Descending

SELECT * FROM Customers
ORDER BY Country DESC;

หลักง่ายๆ ในการใช้ก็แค่ ใส่ "ORDER BY" หลังจากที่เราเลือก table data ด้วยคำสั่ง FORM แล้ว ก็แค่นั้นเองแหละ ส่วนตรง Country ก็คือ Column ที่เราต้องการจะ Order หรือ Sorting มันนั่นแหละฮะ

Extra Code แถมๆๆ การ Order แบบสลับไปสลับมา (ตัวนึง Ascending อีกตัว Descending) (Try it yourself!)

6] ถัดต่อมาก็จะเป็นคำสั่ง "INSERT INTO" โดยขั้นตอนในการใช้งาน ก็จะต้องวางคำสั่งไว้ตำแหน่งแรกสุดเลยน้ะ ตัวอย่าง Syntax


INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

หลักๆแล้ว ก็จะอ้างถึง Table data ก่อน แล้วตามด้วย () ของ Column ต่างๆ คั่นด้วยสัญลักษณ์ลูกน้ำ "," (Comma) ซึ่งหลังจากนั้นจะเป็นการ Add Values เข้าไป โดยจะต้องตรงกับ Column ที่เราเขียนไว้ข้างต้นด้วย เรามา Try it yourself! กัน

Q: Code เมื่อสักครู่ไม่มีการใส่ CustomerID หนิ แต่ทำไม CustomerID มีการเพิ่มขึ้นในตารางหล่ะ ??
A: การเพิ่มแบบอัตโนมัติแบบนี้เราเรียกว่า "auto_increment" ครับผม แต่ถ้าไม่ใส่ส่วนอื่นที่ไม่ได้ประกาศ auto_increment ใน Model DB ไว้ก็จะเป็น Null แทนครับ

ซึ่งถ้าลองกด Run แล้วใครเกิด Error ก็ถือว่า Code ไม่ได้ผิดเน้อ เพราะจะมี Browser บาง Browser (ex. Firefox) ที่ไม่ support WebSQL ซึ่งเจ้าของบล็อกก็ใช้ Firefox เลยไม่ได้ลองจริงเลย -,.-'

WebSQL support (Chrome, Safari, or Opera)

7] คำสั่งถัดมาเป็นคำสั่ง "UPDATE" ซึ่งเป็นคำสั่งที่ตรงกับความหมายเลยคือ การอัพเดทค่า นั่นเองลองดู Syntax เลย


UPDATE Customers
SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';

ในตรงนี้ เราจะทำการเลือก Table Data ก่อน ในที่นี้คือ Customers แล้วถัดมาคือ คำสั่ง "SET" โดยเราจะทำการเลือก Column และตามด้วยค่าที่ต้องการจะเปลี่ยนให้เป็น โดยสามารถเปลี่ยนได้หลาย Column โดยการคั่นด้วยเครื่องหมาย "," (Comma) และที่สำคัญที่สุดเลย!! คือการ Filter ด้วยคำสั่ง "WHERE" ซึ่งถ้าเกิดว่า เราไม่ได้ Filter ตรงนี้ "ทุกช่อง" จะถูก SET ทั้ง Table Data เลย ย้ำๆๆๆๆๆๆๆ ลอง Try it yourself! ได้เลยจ้าาา

8] และคำสั่ง Basically สุดท้ายก็คือ "DELETE" ก็เป็นอีกคำสั่งที่ ความหมายตรงตัวเป๊ะเลยก็คือการลบออกไปนั่นเอง ลองดู Syntax เลยนะ


DELETE FROM table_name
WHERE some_column=some_value; 

ลำดับการเรียกใช้ก็คือ การพิมพ์ว่า DELETE แล้วตามด้วย Table Data ที่เราต้องการจะลบ จากนั้นก็จะเป็นส่วนของการ Filter เช่นเดิม ที่เราจะต้อง Filter เอาดูว่า จะลบส่วนไหนออกไป ซึ่งเมื่อรันคำสั่งแล้ว ก็จะลบทั้ง Entry นั้นๆออกไปเลย ลอง Try it yourself! ได้เลยคร้าบบบบบ ซึ่งข้อควรระวังก็เหมือนเดิม คือการที่จะใช้คำสั่งแล้วไม่ทำการ Filter ผลลัพธ์ก็จะลบ Data มันทั้งหมดเลยเหมือนกัน และที่สำคัญกว่านั้น...Undo ไม่ได้นะจ้ะ

หรือถ้าใครต้องการที่จะลบ Data เหล่านั้นจริงๆ ก็จะสามารถใช้คำสั่งได้ 2 คำสั่งนั้นก็คือ


DELETE FROM table_name;

or

DELETE * FROM table_name;

จบแล้วนะคร้าบ สำหรับการใช้งานคำสั่ง Basic ต่างๆ ที่จะมาบอกเล่ากันในวันนี้ ซึ่งถ้าไม่เข้าใจในคำสั่งส่วนไหน Comment ไว้ด้านล่างได้เลยนะครับ จะพยายามรีบตอบให้ไวที่สุดครับผม

Part 3: What's "DBMS" อะไรคือ "DBMS"

part สุดท้ายนี้ก็จะกล่าวถึง DBMS นะครับ ซึ่ง DBMS มันย่อมาจาก Database Management System กล่าวคือมันเป็นตัว Management นั่นเอง ซึ่งในปัจจุบันถือกำเนิดมาเยอะมากๆ ให้ผู้ใช้ได้ใช้ รวมไปถึง Administrator, Programmer ได้เลือกใช้อย่างหลากหลาย ยกตัวอย่างเช่น 
  • Oracle
  • IBM DB2
  • Microsoft SQL Server
  • Sybase
  • Cache'
  • PostgreSQL
  • Progress
  • MySQL
  • Interbase
  • Firebird
  • Pervasive SQL
  • SAP DB
  • Microsoft Office Access
  • SQLite
 ซึ่งเห็นไหม ว่ามันเยอะมากๆเลย ซึ่งในการเลือกใช้ก็ต้องลองดูว่า เราจะชอบ/ถนัดกับ DBMS ตัวไหน ซึ่งการใช้งาน UI ก็จะแตกต่างกันไม่ค่อยมากเสียเท่าไหร่

Thank for Credits:

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

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