ภาษา SQL หรือ Structured Query Language เป็นภาษาที่ช่วยจัดการงานพื้นฐานของข้อมูล เช่นการจัดเก็บ การปรับปรุงและการลบข้อมูล ซึ่งสามารถใช้งานได้จากทั้งการพิมพ์แบบโต้ตอบที่ทำให้ได้ผลออกมาทันที(ทำในโปรแกรมฐานข้อมูล) หรือทำแบบฝังไว้ในโปรแกรม(แล้วก็ทำปุ่มกดเอา)เอาก็ได้
ประเภทคำสั่ง SQL
มีด้วยกันทั้งหมด 3 ประเภท
1.ภาษานิยามข้อมูล(Data Definition Language, DDL)
เป็นภาษาสำหรับสร้างฐานข้อมูล ประกอบไปด้วยคำสั่งสำหรับสร้างตาราง แก้ไขและลบตาราง สร้าง attribute และกำหนาชนิดข้อมูล (ดูเรื่องการใช้ xampp)
2.ภาษาจัดการข้อมูล(Data Manipulation Language, DML)
เป็นภาษาสำคัญสำหรับเพิ่ม แก้ไข ลบและเรียกดูข้อมูลในฐานข้อมูล ซึ่งมีความสำคัญมากๆและจะได้กล่าวถึงต่อไป
3.ภาษาควบคุมข้อมูล(Data Control Language, DCL)
เป็นคำสั่งสำหรับความปลอดภัยของข้อมูล ใช้สำหรับควบคุมฐานข้อมูลจำกัดคนที่จะเข้าถึงฐานข้อมูล
ภาษาจัดการข้อมูล หรือ DML
ภาษาจัดการข้อมูล คือภาษาสำหรับการจัดการเพิ่ม เปลี่ยนแปลง ลบและค้นหา ซึ่งอย่างที่ได้บอกไปคือฐานข้อมูลสามารถใช้งานได้จากทั้งการพิมพ์แบบโต้ตอบที่ทำให้ได้ผลออกมาทันที(ทำในโปรแกรมฐานข้อมูล)และทำแบบฝังไว้ในโปรแกรม(แล้วก็ทำปุ่มกดเอา) ซึ่งสำหรับการสร้างฐานข้อมูลเราอาจออกใช้การพิมพ์ใน xampp เพื่อความมั่นใจก่อนเอาโค๊ดไปใส่ในโปรแกรมด้วยภาษาที่เขียน ซึ่งจะอยู่ในหน้า SQL
รูป7-1
จะเห็นว่าใน SQL จะมีช่องสำหรับแสดงผลและปุ่มคำสั่งพื้นฐานแต่อย่างไรก็ตามปุ่มคำสั่งพื้นไม่มีครบทุกคำสั่ง ดังนั้นยังจำเป็นที่จะต้องจำคำสั่งหรือเข้าใจคำสั่ง SQL ก่อนเพื่อประสิทธิภาพของการทำงาน
สำหรับการศึกษาโค๊ด SQLจะใช้ตัวอย่างตารางข้อมูลของร้านชาบูชาบู้เป็นตัวอย่าง(ลองสร้างฐานข้อมูลตามนี้แล้วพิมพ์ใน SQL ดู)
CHABUCHABU_EMPLOYEE
chaempID | gender | chaempName | position | branchID | branchAddress |
Cha153 | M | ตอเต่า เต่าตอ | ผู้จัดการ | CB001 | กรุงเทพ |
Cha110 | F | มอม้า คึกคัก | ผู้จัดการ | CB005 | หัวหิน |
Cha393 | M | ปอปลา ตากลม | พนักงาน | CB003 | เชียงใหม่ |
Cha652 | M | ฌอเฌอ คู่กัน | พนักงาน | CB002 | กระบี่ |
Cha758 | F | ชอช้าง อ้วนจัง | ผู้ช่วยผู้จัดการ | CB001 | กรุงเทพ |
Cha405 | F | นอหนู มากมาย | พนักงาน | CB002 | กระบี่ |
Cha223 | M | มอแมว ไม่มอง | พนักงาน | CB005 | ประจวบคีรีขันธ์ |
CHABUCHABU_BRANCH
branchID |
sub_district |
province |
postalCode |
CB001 |
บางรัก |
กรุงเทพ |
10500 |
CB002 |
เมืองกระบี่ |
กระบี่ |
81000 |
CB003 |
ช้างคลาน |
เชียงใหม่ |
50000 |
CB005 |
หัวหิน |
ประจวบคีรีขันธ์ |
77110 |
INSERT
คำสั่งสำหรับการเพิ่มข้อมูลลงในฐานข้อมูล
INSERT INTO ชื่อตาราง
VALUES (‘สิ่งที่ใส่ในฐานข้อมูล 1’, ‘สิ่งที่ใส่ในฐานข้อมูล 2’, … ,‘สิ่งที่ใส่ในฐานข้อมูล n’);
ตัวอย่างเช่น
INSERT INTO CHABUCHABU_BRANCH
VALUES (‘CB004’, ‘ปทุมวัน’, ‘กรุงเทพ’, ‘10330’);
สังเกตว่าการเพิ่มข้อมูลลงในตารางจำเป็นต้องใส่ให้ตรงกับตำแหน่งของตารางในฐานข้อมูล เพราะแต่ละช่องในตารางนั้นจะระบุชนิดของข้อมูลเอาไว้ หากใส่ไม่ตรงกันก็จะไม่ถูกต้องมีการเก็บข้อมูลที่ผิดพลาด
หากมีช่องใดช่องที่ไม่ได้ใส่ค่าอะไรลงไปให้เขียนเป็น NULL เช่นเขียนว่า ปทุมวัน ก็รู้แล้วว่าอยู่กรุงเทพ ก็เลยไม่กรอกตรงกรุงเทพลงไป ก็เลยใส่ NULL
INSERT INTO CHABUCHABU_BRANCH
VALUES (‘CB004’, ‘ปทุมวัน’, NULL, ‘10330’);
หรืออาจทำการระบุไว้ก่อนก็ได้ว่าจะให้ใส่แค่ตารางอะไร
INSERT INTO CHABUCHABU_BRANCH (branchID, sub_district, postalCode)
VALUES (‘CB004’, ‘ปทุมวัน’, ‘10330’);
UPDATE
เป็นคำสั่งสำหรับการปรับปรุงเปลี่ยนแปลงข้อมูล
UPDATE ชื่อตาราง
SET แถวที่1 = ข้อมูลที่ต้องการเปลี่ยน1, แถวที่2 = ข้อมูลที่ต้องการเปลี่ยน2 ...
WHERE เงื่อนไข(เผื่อมีหลายแถวแต่อยากเปลี่ยนข้อมูลแค่แถวเดียว)
ตัวอย่างเช่น
ต้องการปรับฐานเงินเดือนพนักงานขึ้นทุกคน
UPDATE CHABUCHABU_EMPLOYEE
SET salary = salary*0.5
หรืออาจต้องการปรับหน้าที่จากพนักงานเป็นผู้ช่วยผู้จัดการ ก็ต้องใส่เงื่อนไขตรง WHERE
UPDATE CHABUCHABU_EMPLOYEE
SET salary = 20000, position = ‘ผู้ช่วยผู้จัดการ’;
WHERE chaempID = ‘Cha223’;
DELETE
เป็นคำสั่งสำหรับการลบข้อมูลออกจากตาราง
DELETE FROM ชื่อตาราง
WHERE เงื่อนไข
การลบข้อมูลเมื่อใส่ชื่อตารางลงไปแล้ว หากไม่ต้องการลบทั้งตารางอย่าลืมใส WHERE เด็ดขาด !!! ไม่งั้นมันจะหายไปทั้งหมดทั้งตาราง
DELETE FROM CHABUCHABU_BRANCH
WHERE branchID = ‘CB005’;
SELECT
คำสั่งสำหรับการเลือก โดยคำสั่งนี้จะมีวิธีการใช้งานหลายวิธีดังนั้นจึงควรจำให้ดีๆ
1. หากต้องการทั้งหมด ทั้งตาราง
SELECT *
FROM ชื่อตาราง
เครื่องหมาย * หมายถึงเลือกทุกแถวมาแสดง
2. ต้องการเลือกดูบางแถว
SELECT ข้อมูล, ข้อมูล2, … , ข้อมูล n
FROM ชื่อตาราง
ตัวอย่างเช่น
SELECT chaempName, position
FROM CHABUCHABU_EMPLOYEE
chaempName | position |
ตอเต่า เต่าตอ | ผู้จัดการ |
มอม้า คึกคัก | ผู้จัดการ |
ปอปลา ตากลม | พนักงาน |
ฌอเฌอ คู่กัน | พนักงาน |
ชอช้าง อ้วนจัง | ผู้ช่วยผู้จัดการ |
นอหนู มากมาย | พนักงาน |
มอแมว ไม่มอง | พนักงาน |
3. การใช้ DISTINCT
เป็นการไม่เลือกดูข้อมูลซ้ำ เช่นเราอยากรู้ว่าเราจ้างพนักงานมีตำแหน่งอะไรบ้าง ถ้าเรียกดู position ก็จะมีพนักงานๆ ผู้จัดการๆ ปรากฏขึ้นมาซ้ำๆ ก็ใช้ DISTINCT มาช่วย
SELECT DISTINCT position
FROM CHABUCHABU_EMPLOYEE
position |
ผู้จัดการ |
พนักงาน |
ผู้ช่วยผู้จัดการ |
4. การเลือกมาดูพร้อมคำนวณ
สมมติอยากรู้ว่าถ้าเพิ่มเงินเดือนพนักงานจะต้องจ่ายเงินมากขึ้นอีกเท่าไหร่ก็เอามาลองขึ้นดูก่อนได้
SELECT chaempName, position, salary*2
FROM CHABUCHABU_EMPLOYEE
5. การเรียกดูพร้อมมีเงื่อนไข
SELECT chaempName, position, salary
FROM CHABUCHABU_EMPLOYEE
WHERE salary>20000
ใช้ AND, OR, NOT ได้
6. การใช้ BETWEEN/ NOT BETWEEN
เป็นการค้นหาข้อมูลช่วงที่กำหนด
SELECT chaempName, position, salary
FROM CHABUCHABU_EMPLOYEE
WHERE salary BETWEEN 20000 AND 25000
7. การใช้ IN/ NOT IN
เพื่อดูเงื่อนที่สมาชิกอยู่กลุ่มที่กำหนดหรือไม่ได้อยู่ในกลุ่มที่หนด
SELECT chaempName, position
FROM CHABUCHABU_EMPLOYEE
WHERE position NOT IN(‘พนักงาน’);
8. การใช้ LIKE/ NOT LIKE
เอาไว้ค้นหาข้อมูลชนิดตัวอักษร ด้วยเครื่องหมาย %
SELECT chaempName
FROM CHABUCHABU_EMPLOYEE
WHERE chaempName LIKE ‘%ต’ //ชื่อขึ้นต้นด้วยตอเต่า
%ตัวอักษร หมายถึงมีอักษรตัวนี้ขึ้นต้น
ตัวอักษร% หมายถึงมีอักษรตัวนี้ตามท้าย
9. การใช้ NULL
เผื่อบางทีมีคนมาสมัครเป็นพนักงานแต่ยังไม่มีสาขาที่จะลง ก็เลยมี NULL อยู่ในช่องสาขาพอเวลาที่จะหาว่ามีพนักงานคนไหนยังไม่มีสาขาอยู่ก็สามารถค้นหาได้ไม่ต้องมาเลื่อนๆดูพนักงานทุกคน
SELECT chaempName, branchID
FROM CHABUCHABU_EMPLOYEE
WHERE branchID IS NULL
10. การเรียกดูแบบเรียงข้อมูล
SELECT chaempName, salary
FROM CHABUCHABU_EMPLOYEE
ORDER BY salary DESC;
เรียงจากคนที่ได้เงินมากไปหาคนที่ได้เงินน้อย
11. การใช้ ALL
ใช้สำหรับการค้นหาว่าทุกคนที่มีตรงเงื่อนไขมีใครบ้าง
SELECT chaempName, salary
FROM CHABUCHABU_EMPLOYEE
WHERE salary > ALL(SELECT salary
FROM CHABUCHABU_EMPLOYEE
WHERE branchID= ‘CB001’;)
ให้หาทุกคนที่เงินเดือนมากกว่าทุกคน ซึ่งต้องมีแค่คนเดียวเท่านั้นที่จะเงินเดือนมากกว่าทุกคน
12. การใช้ SOME
คล้ายกับ ALL แต่ SOME ต้องการให้แสดงอย่างน้อย1
SELECT chaempName, salary
FROM CHABUCHABU_EMPLOYEE
WHERE salary > SOME(SELECT salary
FROM CHABUCHABU_EMPLOYEE
WHERE branchID= ‘CB001’;)
ให้หาบางคนที่เงินเดือนมากกว่าบางคนซึ่งก็ต้องมีหลายที่มีเงินเดือนมากกว่าบางคน เช่น ผู้จัดการเงินเดือนมากกว่าผู้ช่วย แต่ผู้ช่วยก็เงินเดือนมากกว่าพนักงานดังนั้นก็ต้องแสดงทั้ง ผู้จัดการและผู้ช่วย
13. การใช้ JOIN
เป็นการรวม 2 ตารางเข้าด้วยกัน โดยจะทำการจับคู่แถวที่ตรงกันของตารางมาแสดง โดยใช้คำสั่ง INNER JOIN
SELECT ชื่อตาราง1.ชื่อattribute1, ชื่อตาราง1.ชื่อattribute2
FROM ชื่อตาราง1
INNER JOIN ชื่อตาราง2
ON ชื่อตาราง1.ชื่อ attribute1 = ชื่อตาราง2.ชื่อ attribute1 (ตรวจอันที่ตรงกัน)
ORDER BY เงื่อนไข
ตัวอย่างเช่น
person order
perID |
perName |
|
orID |
orderNumber |
perID |
1 |
James |
|
1 |
5503657 |
2 |
2 |
John |
|
2 |
9902346 |
1 |
3 |
Julia |
|
3 |
2259643 |
1 |
|
|
|
4 |
2243166 |
3 |
มี 2 ตารางได้แก่ตารางชื่อคนและตารางการสั่งซื้อสินค้า ต้องการทราบว่าคนชื่อนี้สั่งสินค้ารหัสอะไร
SELECT person.perName //ในตาราง person เลือกช่อง perName
FROM person
INNER JOIN order
ON person.perID = order.perID // perIDในตาราง person ให้เป็นตัวเดียวกับ perID ใน order
ORDER BY person.perName
Tag ที่น่าสนใจ: sql structured_query_language data_definition_language data_manipulation_language data_control_language ddl dml dcl database_management sql_commands programming sql_tables sql_queries sql_insert database_administration
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM