24. ภาษา SQL

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

24. ภาษา SQL

 

            ภาษา 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

 

 

แผนผังการเรียนเขียนโปรแกรม

 

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

 

ใส่ความเห็น