21
บทท่ 6 ภาษาฐานข้อมูล ภาษา SQL เป็นภาษามาตรฐานท่เป็นท่ยอมรับและมการใชงานกันอยางกวางขวาง ่งเป็นภาษาท่ใช ในการจัดการขอมูลของฐานขอมูลเชงสัมพันธ และเป็นภาษาสอบถามเชงโครงสราง(Structured Query Language) หรอท่เรยกสั นๆ วาเอสควแอล (SQL) ่งรูปแบบของ SQL ่ใชในระบบจัดการฐานขอมูลแตละชนด จะแตกตางกันไป ทั งน เพ่อเป็นการแสดงความสามารถและจุดเดนของระบบจัดการฐานขอมูลของแตละ โปรแกรม หนวยงาน American National Standards Institute (ANSI) งไดกําหนดรูปแบบ SQL มาตรฐานขเพ่อใหเป็นมาตรฐานทั่วไป ภาษา SQL เป็นภาษาท่มรูปแบบเป็นภาษาอังกฤษ ายตอการเรยนรู และการเขยน โปรแกรม ่งเป็นภาษาท่มอยู ใน DBMS หลายตัว เป็นภาษาท่พบไดใน RDBMS (Relational Database Management System) ในบทท6 จะกลาวถงความเป็นมาของภาษา SQL องคประกอบของภาษา SQL คําสั่งสําหรับการ ยามขอมูล (Data Definition Language:DDL) คําสั่งสําหรับการจัดการขอมูล (Data Manipulation Language:DML) และคําสั่งสําหรับการควบคุมขอมูล (Data Control Language: DCL) ่งมรายละเอยดดังน 1. ความเป็นมาของภาษา SQL ในป .1974 ศูนยจัย IBM ไดพัฒนา RDBMS (Relational database Management System) ่ช่อ System R เพ่อทดลองใชงาน และแสดงใหเห็นถงความงายของการใชงานฐานขอมูลเชงสัมพันธ งไดทํา การพัฒนาภาษาท่เรยกวSEQUEL (Structured English Query language) เป็นสวนประกอบของ RDBMS สามารถรองรับการสบคนขอมูลจากหลายตารางและการเขาถงฐานขอมูลโดยผู ใชหลายคน และตอมาไดถูก เปล่ยนช่อเป็น SQL ่งในปัจจุบันได RDBMSหลายตัวถูกสรางขนมา โดยมภาษา SQL เป็นองคประกอบทสําคัญ เน่องจากความหลากหลายของ RDBMS ่ถูกสรางโดยบรษัทตางๆ สถาบันมาตรฐานแหงชาต อเมรกา (American National Standards institute–ANSI) และองคกรมาตรฐานระหวางประเทศ (International Standard Organization–ISO) งไดกําหนดมาตรฐานของภาษา SQL นเพ่อใหทุก DBMS ภาษา SQL ่เป็น มาตรฐานเดยวกัน ในป 1980 งไดเกดภาษา SQL-89 หรอท่เรยกวSQL1 และในป 1992 ก็ไดการ พัฒนาปรับปรุง SQL-89 ใหมความสามารถเพ่มขนอกและพัฒนาเป็นภาษา SQL- 92 หรอ SQL2 ่งเป็นเวอร ชั่นท่กลุ มผู ผลDBMS ใชเป็นมาตรฐาน SQLในปัจจุบัน ในป ..1999 การพัฒนาเป็นภาษา SQL-99 หรอ SQL3 ่มการรวมแนวคดเชงวัตถุ (Object-Oriented Concept) เขาไปดวย แต SQL-99 ก็ไมเป็นท่นยมในกลุ ผู ผลDBMS 2. องค์ประกอบของภาษา SQL ภาษา SQL (Structured English Query language) เป็นภาษาท่มรูปแบบเป็นภาษาอังกฤษงายตอการ เรยนรู และการเขยนโปรแกรม ่งเป็นภาษาท่มอยู ใน DBMS หลายตัว ความสามารถใชยามโครงสราง

บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

บทท 6

ภาษาฐานขอมล

ภาษา SQL เปนภาษามาตรฐานทเปนทยอมรบและมการใชงานกนอยางกวางขวาง ซงเปนภาษาทใช

ในการจดการขอมลของฐานขอมลเชงสมพนธ และเปนภาษาสอบถามเชงโครงสราง(Structured Query

Language) หรอทเรยกสนๆ วาเอสควแอล (SQL) ซงรปแบบของ SQL ทใชในระบบจดการฐานขอมลแตละชนด

จะแตกตางกนไป ทงนเพอเปนการแสดงความสามารถและจดเดนของระบบจดการฐานขอมลของแตละ

โปรแกรม หนวยงาน American National Standards Institute (ANSI) จงไดกาหนดรปแบบ SQL มาตรฐานขน

เพอใหเปนมาตรฐานทวไป ภาษา SQL เปนภาษาทมรปแบบเปนภาษาองกฤษ งายตอการเรยนรและการเขยน

โปรแกรม ซงเปนภาษาทมอยใน DBMS หลายตว เปนภาษาทพบไดใน RDBMS (Relational Database

Management System)

ในบทท 6 นจะกลาวถงความเปนมาของภาษา SQL องคประกอบของภาษา SQL คาสงสาหรบการ

นยามขอมล (Data Definition Language:DDL) คาสงสาหรบการจดการขอมล (Data Manipulation

Language:DML) และคาสงสาหรบการควบคมขอมล (Data Control Language: DCL) ซงมรายละเอยดดงน

1. ความเปนมาของภาษา SQL

ในป ค.ศ 1974 ศนยวจย IBM ไดพฒนา RDBMS (Relational database Management System) ทชอ

วา System R เพอทดลองใชงาน และแสดงใหเหนถงความงายของการใชงานฐานขอมลเชงสมพนธ จงไดทา

การพฒนาภาษาทเรยกวา SEQUEL (Structured English Query language) เปนสวนประกอบของ RDBMS ท

สามารถรองรบการสบคนขอมลจากหลายตารางและการเขาถงฐานขอมลโดยผใชหลายคน และตอมาไดถก

เปลยนชอเปน SQL ซงในปจจบนไดม RDBMSหลายตวถกสรางขนมา โดยมภาษา SQL เปนองคประกอบท

สาคญ

เนองจากความหลากหลายของ RDBMS ทถกสรางโดยบรษทตางๆ สถาบนมาตรฐานแหงชาต

อเมรกา (American National Standards institute–ANSI) และองคกรมาตรฐานระหวางประเทศ (International

Standard Organization–ISO) จงไดกาหนดมาตรฐานของภาษา SQL ขนเพอใหทก DBMS มภาษา SQL ทเปน

มาตรฐานเดยวกน ในป 1980 จงไดเกดภาษา SQL-89 หรอทเรยกวา SQL1 ขน และในป 1992 กไดมการ

พฒนาปรบปรง SQL-89 ใหมความสามารถเพมขนอกและพฒนาเปนภาษา SQL- 92 หรอ SQL2 ซงเปนเวอร

ชนทกลมผผลต DBMS ใชเปนมาตรฐาน SQLในปจจบน ในป ค.ศ.1999 มการพฒนาเปนภาษา SQL-99 หรอ

SQL3 ทมการรวมแนวคดเชงวตถ(Object-Oriented Concept) เขาไปดวย แต SQL-99 กไมเปนทนยมในกลม

ผผลต DBMS

2. องคประกอบของภาษา SQL

ภาษา SQL (Structured English Query language) เปนภาษาทมรปแบบเปนภาษาองกฤษงายตอการ

เรยนรและการเขยนโปรแกรม ซงเปนภาษาทมอยใน DBMS หลายตว มความสามารถใชนยามโครงสราง

Page 2: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

ตารางภายในฐานขอมล การจดการขอมล รวมไปถงการควบคมสทธการใชงานฐานขอมล SQL จะ

ประกอบดวยภาษา 3 รปแบบดวยกน แตละแบบกจะมหนาทเฉพาะแตกตางกนไปแสดงดงรปท 6.1

1. ภาษาสาหรบการนยามขอมล (Data Definition Language: DDL)

2. ภาษาสาหรบการจดการขอมล (Data Manipulation Language: DML)

3. ภาษาสาหรบการควบคมขอมล (Data Control Language: DCL)

รปท 6.1 แสดงองคประกอบของภาษา 3 รปแบบของภาษา SQL

(สมจตร อาจอนทร และงามนจ อาจอนทร, 2540: 35)

3. ภาษาสาหรบการนยามขอมล (Data Definition Language: DDL)

การออกแบบฐานขอมลจะทาใหทราบถงโครงสรางของฐานขอมลวาประกอบดวยรเลชนใดบางแต

ละรเลชนมความสมพนธกนอยางไร คยใดเปนคยหลกของรเลชน ขนตอนตอไปคอการสรางฐานขอมลลงบน

เครองคอมพวเตอร โดยการแปลงรเลชนตางๆ ใหอยในรปของภาษาสาหรบการนยามขอมล หรอ DDL ซง

คาสงตางๆ ในภาษาสาหรบนยามขอมล มดงน

คาสง ความหมาย

CREATE DATABASE สรางฐานขอมลใหม

CREATE TABLE นยามโครงสรางขอมลในตารางทสรางขน

DROP TABLE ลบโครงสรางตารางขอมลออกจากระบบ

ALTER TABLE แกไขปรบปรงโครงสรางตาราง

CREATE INDEX สรางดชนของตารางโดยอาจใช 1 คอลมนหรอมากกวา

DROP INDEX ลบดชนของตารางออกจากระบบ

CREATE VIEW กาหนดโครงสรางววของผใช

DROP VIEW ลบโครงสรางววออกจากระบบ

ภาษานยามขอมล (DDL)

------------------

CREATE

ALTER

DROP

ภาษา SQL (Structured English Query Language)

ภาษาจดการขอมล(DDL)

-------------------

SELECT

UPDATE

INSERT

DELETE

ภาษาควบคมขอมล (DDL)

------------------

GRANT

REVOKE

Page 3: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

3.1 การกาหนดฐานขอมล

หมายถงคาสงในการสรางฐานขอมล และลบฐานขอมล ซงมรปแบบคาสงดงน

1) คาสงในการสรางฐานขอมล

คาสง CREATE DATABASE เปนคาสงทใชสรางฐานขอมล โดยการระบชอฐานขอมลท

ตองการสราง

รปแบบคาสง

Database Name คอ ชอฐานขอมลทตองการสราง

ตวอยาง กาหนดใหสรางขอมลชอ Student_db แสดงดงรปท 6.2

CREATE DATABASE student_db;

ผลลพธทได

รปท 6.2 แสดงผลลพธทไดจากคาสง SQL ในการสรางขอมลใหม

2) คาสงในการลบฐานขอมล

คาสง DROP DATABASE เปนคาสงทใชลบฐานขอมลทเคยสรางไว โดยการระบชอฐานขอมล

ทตองการลบ

รปแบบคาสง

Database Name คอ ชอฐานขอมลทตองการลบ

ตวอยาง กาหนดใหลบฐานขอมลชอ student_db ทเคยสรางไว แสดงดงรปท 6.3

DROP DATABASE student_db;

ผลลพธทได

CREATE DATABASE <Database Name>;

DROP DATABASE <Database Name>;

Page 4: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.3 แสดงผลลพธทไดจากคาสง SQL ในการลบฐานขอมลทเคยสรางไว

3.2 การสรางโครงสรางตาราง

คาสง CREATE TABLE เปนคาสงทใชสรางตาราง/รเลชน โดยการระบชอแอททรบวตตางๆ ขนาด

ความกวางของแอททรบวต ประเภทของขอมลทจดเกบในแอททรบวตนน รวมถงการระบวาแอททรบวตใดเปน

คยหลกหรอคยนอก

รปแบบคาสง

COLUMN NAME คอ เปนชอของแอททรบวตของรเลชน

DATA TYPE คอ ประเภทคาของขอมล ตวอยางประเภทของขอมล มดงน

WIDTH คอ ขนาดความกวางของขอมล

PRIMARY KEY คอ กาหนดคยหลก

FOREIGN KEY คอ กาหนดคยนอก

ชนดขอมล

ชนด ความหมาย

SMALLINT เปนประเภทของขอมลทเปนเลขจานวนเตม

INT เปนประเภทของขอมลทเปนเลขจานวนเตมทมขนาดกวางกวา SMALLINT

NUMBER (X, Y) เปนประเภทของตวเลขทมเครองหมายและจดทศนยมรวม X จานวน และ

Y คอ จานวนเลขหลงจดทศนยม

FLOAT (X, Y) เปนประเภทของตวเลขทกาหนดในรปแบบยกกาลง

CHARACTER (N) เปนสตรงทมขนาดคงทตามทระบ

VARCHAR สตรงขนาดไมคงท

DATE เปนขอมลประเภท เดอน/วน/ป

LOGICAL เปนขอมลทมคาเปนตรรกะทเปน “T” (True) หรอ “F” (False)

CREATE TABLE < Table Name>

(<Column Name> < Data Type> [<Width>],

…..

[PRIMARY KEY <ชอคอลมน>]

[FOREIGN KEY <ชอคอลมน>]);

Page 5: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

ตวอยาง ใหสรางตาราง/รเลชน ชอ login ในฐานขอมลชอ student_db แสดงดงรปท 6.4

รปท 6.4 แสดงโครงสรางตาราง login

ตาราง/รเลชน login คาสงทใชดงน แสดงดงรปท 6.5

CREATE TABLE ‘login’ (

‘user’ varchar(20) NOT NULL,

‘pass’ varchar(20) NOT NULL,

‘fullname’ varchar(60) NOT NULL,

‘room’ varchar(20) NOT NULL,

‘teach’ varchar(60) NOT NULL,

‘score’ int(3) NOT NULL,

PRIMARY KEY (‘user’) ) ENGINE=MyISAM DEFAULT CHARSET=tis620;

รปท 6.5 แสดงผลลพธทไดจากคาสง SQL ในการสรางโครงสรางตาราง Login

Page 6: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

3.3 คาสงการเปลยนแปลงโครงสรางตาราง

คาสง ALTER TABLE เปนคาสงทใชในการเปลยนแปลงโครงสรางทมการนยามไวแลวเชน อาจ

ตองการเพมแอททรบวตหรอคอลมนในตาราง หรอตองการเปลยนประเภทของขอมล รวมไปถงการ

เปลยนแปลงคาสงควบคมความคงสภาพ โดยมรปแบบของคาสง ดงน

รปแบบคาสง

ตวอยาง ตองการเพมแอททรบวตชอ AGE เพมอกหนงแอททรบวตลงในตาราง LOGIN โดย ใหม

ลกษณะเปนตวเลขทมความยาว 2 ตว คาสงทใชมดงน แสดงดงรปท 6.6

ALTER TABLE ‘login’ ADD ‘age’ INT(2) NOT NULL AFTER ‘fullname’;

รปท 6.6 แสดงผลลพธทไดจากคาสง SQL ในการเปลยนแปลงโครงสรางตาราง LOGIN

3.4 การลบโครงสรางตาราง

คาสง DROP TABLE เปนคาสงทใชในการลบตาราง มรปแบบดงน

รปแบบคาสง

ตวอยาง ตองการลบโครงสรางตาราง LOGIN ออกจากฐานขอมล คาสงทใชมดงน แสดงดงรปท 6.7

DROP TABLE ‘login’ ;

ALTER TABLE < Table Name>

ADD (<COLUMN NAME><DATA TYPE><WIDTH>[,<COLUMN NAME>

<DATA TYPE>< WIDTH>,…]);

DROP TABLE <TABLE NAME>;

Page 7: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.7 แสดงผลลพธทไดจากคาสง SQL ในการลบโครงสรางตาราง LOGIN

3.5 คาสงสรางดชน

ดชน (Index) มความสาคญตอฐานขอมลเชงสมพนธ เนองจาก DBMS ของฐานขอมลประเภทนจะใช

ดชนในการคนหาแถวขอมลทตองการไดอยางรวดเรว นอกจากนยงสามารถนามาใชในการควบคมคอลมนท

นามาสรางเปนดชนใหมการเกบขอมลไมซากนไดอกดวยคาสง CREATE INDEX เปนคาสงทใชในการสรางดชน

มรปแบบดงน

รปแบบคาสง

ตวอยาง ตองการสรางดชนโดยใชแอททรบวต SCORE ในตาราง LOGIN มคาสงดงน

แสดงดงรปท 6.8

CREATE INDEX SCORENDX

ON LOGIN (SCORE);

รปท 6.8 แสดงผลลพธทไดจากคาสง SQL ในการสรางดชน

CREATE [UNIQUE] INDEX <INDEX NAME>

ON<TABLE NAME><COLUMN NAME> [,COLUMN NAME]);

Page 8: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

3.6 คาสงลบดชน

คาสง DROP INDEX เปนคาสงทใชในการลบ INDEX มรปแบบดงน

รปแบบคาสง

ตวอยาง ตองการลบดชนชอ SCORENDX ในตาราง LOGIN มคาสงดงน แสดงดงรปท 6.9

DROP INDEX `SCORENDX`;

รปท 6.9 แสดงผลลพธทไดจากคาสง SQL ในการลบดชน

3.7 คาสงสรางวว

คาสง CREATE VIEW เปนคาสงทใชในการสราง VIEW มรปแบบดงน

รปแบบคาสง

ตวอยาง ตองการสรางววจากตาราง LOGIN โดยแสดงขอมลเฉพาะทม SCORE มากกวา 50 มคาสง

ดงน แสดงดงรปท 6.10

CREATE VIEW SCOREVIEW

AS SELECT USER, FULLNAME, ROOM, TEACH, SCORE

FROM LOGIN

WHERE SCORE>50;

DROP INDEX <INDEX NAME>;

CREATE VIEW <VIEW NAME>

AS SELECT Statement;

Page 9: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.10 แสดงผลลพธทไดจากคาสง SQL ในการสรางวว ชอ SCOREVIEW

3.8 คาสงลบวว

รปแบบคาสง

ตวอยาง ตองการลบวว View ชอ scoreview ออกจากฐานขอมล Student_db มคาสงดงน แสดงดง

รปท 6.11

รปท 6.11 แสดงผลลพธทไดจากคาสง SQL ในการลบวว ชอ SCOREVIEW

DROP VIEW <VIEW NAME>;

Page 10: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

4. ภาษาสาหรบการจดการขอมล (Data Manipulation Language: DML)

การใชคา สงสา หรบการนยามขอมล (DDL) ในการสรางโครงสรางของฐานขอมล ทประกอบดวย

ตารางตางๆ และดชนของตาราง ซงตารางทถกสรางนยงไมมขอมล การปอนขอมลเขาไปในตาราง เพมเตม

ขอมล เรยกคนขอมล ลบแถวขอมล จะตองใชคาสงสาหรบการจดการขอมล หรอเรยกยอๆ วา DML คาสง

ตางๆ ทมในภาษาสาหรบการจดการขอมล มดงน

คาสง ความหมาย

SELECT เรยกคนขอมลในตาราง

INSERT เพมแถวขอมลลงไปในตาราง

UPDATE ปรบปรงแถวขอมลในตาราง

DELETE ลบแถวขอมลในตาราง

4.1 คาสงเรยกคนขอมล

คาสง SELECT เปนคาสงทใชในการเรยกขอมลจากฐานขอมลตามทผใชตองการ มรปแบบดงน

รปแบบคาสง

*|DISTINCT เปนการสงใหเลอกขอมลทตองการทงหมด ซงสามารถใช

เครองหมาย * แทนไดแตถาใช DISTINCT จะเลอกขอมลทเปนไปตามเงอนไขเฉพาะ

ทเพลทมขอมลไมซากน

TARGET LIST เปนชอของแอททรบวต และนพจนทตองการใหแสดงคาออกมาตามทตองการ

FROM <TABLE NAME [ALIASES]> เปนการระบถงชอรเลชนทตองการใหดงขอมลออกมา

สวน ALIASES คอชอของรเลชนทตงขนใหม

[WHERE <PREDICATE>] หมายถง เงอนไขทระบขนเพอดงขอมลของทเพลตามทตองการในสวนของ

เงอนไขน

[GROUP BY <COLUMN LIST>] [HAVING PREDICATED] เปนการจดกลมตามเงอนไขทระบและภายใต

การจดกลมกจะมเงอนไขทจะใหแสดงผลทเกดจากการจดกลมโดยใช HAVING

[ORDER BY <COLUMN LIST>] เปนการระบใหเรยงลาดบขอมลตามแอททรบวตทตองการ

ถาม ASC ตอทายชอของแอททรบวตเปนการเรยงจากนอยไปหามากและถาเปน

DESC เปนการเรยงจากมากไปหานอย

SELECT [*|DISTINCT] <TARGET LIST>

FROM <TABLE NAME> [<ALIASES>]

[WHERE PREDICATE]

[GROUP BY <COLUMN LIST>] [HAVING PREDICATE]

[ORDER BY <COLUMN LIST>];

Page 11: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

ในการเรยกดขอมล ขอมลทใชเรยกดจากตารางตางๆ อาจจะไมมเงอนไขหรอมระบเงอนไขโดย

เงอนไขทระบหลง WHERE สามารถทาไดหลายรปแบบ อาจมเพยงเงอนไขเดยว หรอหลายเงอนไขนอกจากน

ยงสามารถระบเงอนไขโดยเขยนเปนขอคาถามยอย (Sub query) ไดเชนกนรายละเอยดทเกยวของกบการ

เรยกดขอมลมดงน คอ

1) การเรยกดขอมลแบบไมมเงอนไข

การเรยกดขอมลแบบไมมเงอนไข อาจจะเปนการเรยกดขอมลทงตาราง หรอเรยกดเพยงบาง

แอททรบวต หรอการเรยกดขอมลโดยการใหจดเรยงขอมล

ตวอยาง ใหแสดงขอมลทงหมดของตาราง LOGIN

SELECT *

FROM LOGIN;

ผลลพธทได แสดงดงรปท 6.12

รปท 6.12 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบไมมเงอนไข

ตวอยาง ใหแสดง รหสนกศกษา ชอนกศกษา และกลมเรยน

SELECT USER, FULLNAME, ROOM

FROM LOGIN;

ผลลพธทได แสดงดงรปท 6.13

Page 12: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.13 แสดงผลลพธเฉพาะรหสนกศกษา ชอนกศกษา และกลมเรยน

2) การเรยกดขอมลแบบมเงอนไข

การเรยกดขอมลแบบมเงอนไข เปนการระบชอแอททรบวตทตองการระบเปนเงอนไขและขอมลเฉพาะ

ในอนประโยค WHERE โดยการระบเงอนไขจะนาโอเปอเรเตอรตางๆ เขามาใชในการแสดงเงอนไข

โอเปอเรเตอรดงกลาวมดงน

(1) การเรยกดขอมลแบบมเงอนไขโดยใชโอเปอเรเตอรทางตรรกะและโอเปอเรเตอรบลน

โอเปอเรเตอรทางตรรกะ (Logical Operator) ใชแสดงการเปรยบเทยบคาของขอมล ซงจะแสดง

อยระหวางชอคอลมนและขอมลเฉพาะทตองการแสดงเปนเงอนไข โอเปอเรเตอรซงประกอบดวย

โอเปอเรเตอร ความหมาย

> มากกวา

< นอยกวา

= เทากบ

>= มากกวา เทากบ

<= นอยกวา เทากบ

<> ไมเทากบ

สวนโอเปอเรเตอรบลน (Boolean Operator) ใชสาหรบการเรยกดขอมลทมเงอนไขมากกวาหนง

เงอนไข เชน AND หรอ OR หรอใชในการปฏเสธเงอนไข เชน NOT

ตวอยาง ใหแสดงรหสนกศกษา และชอนกศกษา สาหรบนกศกษาทมครทปรกษา หรอนกศกษาทม

คะแนนมากกวา 80

SELECT USER, FULLNAME FROM LOGIN

WHERE TEACH = ‘พมรนทร ครนทร’ OR SCORE > 80;

ผลลพธทได แสดงดงรปท 6.14

Page 13: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.14 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไข OR

(2) การเรยกดขอมลแบบมเงอนไขโดยใชโอเปอเรเตอรของ SQL โอเปอเรเตอรของ SQL ทใชในการ

กาหนดเงอนไขของขอมลในอนประโยค WHERE มดงน

โอเปอเรเตอร BETWEEN AND

เปนโอเปอเรเตอรทกาหนดเงอนไขของแอททรบวตเปนคาระหวางสองคา โดยโอเปอเรเตอร

BETWEEN จะแสดงตอจากชอแอททรบวตทถกกาหนดใหเปนเงอนไข

ตวอยาง ใหแสดงขอมลแอททรบวต USER, FULLNAME และ SCORE จากรเลชน LOGIN ทมคะแนน

ระหวาง 75 และ 85

SELECT USER, FULLNAME, SCORE

FROM LOGIN

WHERE SCORE BETWEEN 75 AND 85;

ผลลพธทได แสดงดงรปท 6.15

Page 14: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.15 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไข AND

โอเปอเรเตอร IN

เปนโอเปอเรเตอรทใชกบเงอนไขของคอลมนทตองการระบเงอนไขเปนกลมของขอมล โดย

โอเปอเรเตอร IN จะแสดงตอทายชอแอททรบวตทถกระบเปนเงอนไข และกลมของขอมลทเปนขอมลเฉพาะ

ของแอททรบวตทเปนเงอนไขน จะอยในวงเลบ ( ) และมเครองหมาย , คน

ตวอยาง ใหแสดงรายละเอยดของ รหสนกศกษา และชอนกศกษา ทกลมวท.สงแวดลอม หรอ วท.

สขภาพ

SELECT USER, FULLNAME

FROM LOGIN

WHERE ROOM IN (‘วท.สงแวดลอม, ‘วท.สขภาพ);

ผลลพธทได แสดงดงรปท 6.16

รปท 6.16 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไขโอเปอเรเตอร IN

โอเปอเรเตอร LIKE

Page 15: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

เปนโอเปอเรเตอรท ใ ชในการคนหาขอมลของคอลมนท เกบขอมลประเภทตวอกษรเทานน

(CHARACTER) โดยทยงไมทราบคาทแนนอนทงหมดของขอมลทจะคนหา หรอรเพยงบางอกษรเทานน โดย

โอเปอเรเตอร LIKE จะระบตอทายชอคอลมนทเปนเงอนไข โดยจะใชสญลกษณ ทชวยในการคนหาขอมลเปน

ตวชวยในการคนหาขอมลทเรยกวา “Wide Card” สญลกษณดงกลาวประกอบดวย % และ _ (เครองหมายขด

เสนใต) โดยขอมลบางสวนทใชในการคนหาพรอมกบสญลกษณทงสองน จะตองมเครองหมาย ‘ ’ กากบเสมอ

ความหมายของสญลกษณทงสองเปนดงน

สญลกษณ ความหมาย

% ใชแทนจานวนตวอกษรไดหลายตว

_ ใชแทนตวอกษรทไมทราบคา 1 ตว

เชน นกศกษาทมชอขนตนดวย พ จะเขยนเงอนไขไดดงน

WHERE FULLNAME LIKE %พ%

นกศกษาทมชอขนดวย ก และมความหมายยาวรวม 7 ตวอกษร จะเขยนเงอนไขไดดงน

WHERE FULLNAME LIKE ‘ก_______’

ตวอยาง ใหแสดง ชอกลม ทขนตนดวยอกษร ส

SELECT *

FROM LOGIN

WHERE ROOM LIKE ‘ส%’;

ผลลพธทได แสดงดงรปท 6.17

รปท 6.17 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไขโอเปอเรเตอร LIKE

(3) การเรยกดขอมลจากรเลชนมากกวาหนงรเลชน

คาสง SELECT ยงสามารถใชในการเรยกดขอมลหรอเชอมโยงขอมลจากตารางมากกวาหนง

ตาราง หรอทเรยกวา JOIN การเชอมโยงขอมลจากหลายตาราง อาจจะเรยกดขอมลแบบมเงอนไขหรอไมม

เงอนไขกได

Page 16: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

Equi Join

เปนการเชอมโยงขอมลจากตารางหลายตาราง ซงตารางทจะเชอมโยงกนจะตองมแอททรบวตทจะ

อางองกนได โดยเงอนไขทระบจะเปรยบเทยบกนโดยใชเครองหมาย = (เทากบ)

ตวอยาง ใหแสดงขอมลของรเลชน LOGIN และ TEACHER ทอยแผนกวชาเดยวกน

SELECT L.USER ,L.FULLNAME,L.CODE_TEA , T.CODE_TEA, T.NAME_TEA

FROM LOGIN L , TEACHER T

WHERE L.CODE_TEA=T.CODE_TEA;

ผลลพธทได แสดงดงรปท 6.18

รปท 6.18 แสดงผลลพธทไดจากการเรยกดขอมลจากรเลชนมากกวาหนงรเลชน Equi Join

Non-Equi Join

เปนการเชอมโยงขอมล โดยเงอนไขทแสดงไมใชเครองหมาย = (เทากบ) แตอาจเปน > < >= <= <>

หรอ between and หรอ in เปนตน

ตวอยาง ใหแสดงขอมลของนกศกษา และคะแนนระหวาง 70 ถง 80

SELECT T.CODE_TEA, T.NAME_TEA , L.USER,L.FULLNAME, L.SCORE

FROM TEACHER T, LOGIN L WHERE SCORE BETWEEN 70 AND 80

AND T.CODE_TEA=L.CODE_TEA;

ผลลพธทได แสดงดงรปท 6.19

Page 17: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

รปท 6.19 แสดงผลลพธทไดจากการเรยกดขอมลจากรเลชนมากกวาหนงรเลชน Non-Equi Join

(4) การเรยกขอมลโดยใชฟงกชนทเกยวกบการรวม (Built-in Functions) ฟงกชนทใชใน SQL

ประกอบดวย AVG (คาเฉลย) COUNT (นบจานวน) MAX (คาสงสด) MIN (คาตาสด) และSUM (ผลรวม)

ฟงกชนทงหานสามารถใชในคาสง SELECT หรออนประโยค HAVING

ฟงกชนทางคณตศาสตร (Numeric Functions)

ฟงกชน ผลทไดจากการใชฟงกชน

AVG [*DISTINCT]<column name> หรอ เปนฟงกชนทใชในการหาคาเฉลยของคอลมนหนงๆ

AVG[*DISTINCT]<column expression> ทเกบขอมลประเภทตวเลข

COUNT[*DISTINCT]<column name> เปนฟงกชนทใชในการนบจานวนแถว

MAX [*DISTINCT]<column name> หรอ เปนฟงกชนทใชในการคานวณหาคาสงสดของ

MAX[*DISTINCT]<column expression> คอลมนทกาหนดใหหาคา

MIN[*DISTINCT]<column name> หรอ เปนฟงกชนทใชในการคานวณหาคาตาสดของ

MIN[*DISTINCT]<column expression> คอลมนทกาหนดใหหาคา

SUM[*DISTINCT]<column name> หรอ เปนฟงกชนทใชในการหาผลรวมของคอลมนหนงๆ

SUM[*DISTINCT]<column expression> ทเกบขอมลประเภทตวเลข

4.2 คาสงเพมแถวขอมล

คาสง INSERT เปนคาสงทใชในการใสขอมลทเพลลงในตารางหนง โดยการเพมขอมลจะเพมไดทละ

หนงทเพลตอครง มรปแบบดงน

รปแบบคาสง

INSERT INTO <TABLE NAME>

[<COLUMN LIST>] VALUES (<VALUE LIST>);

Page 18: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

TABLE NAME คอ ชอของตาราง ซงจะมการเพมขอมล

COLUMN LIST คอ ชอของแอททรบวตทตองการเพมขอมลลงไป ถาตารางมมากกวา 1 แอททร-

บวต ใหระบโดยเครอง , คน

VALUE LIST คอ คาของแอททรบวตทตองการเพมเขาไปในรเลชนและถาเปนขอมลประเภท

ตวอกษรจะตองมเครองหมาย ‘ ’ กากบ

ตวอยาง ใหใสขอมลในตาราง teach

INSERT INTO `student_db`.`teacher` (`code_tea`, `name_tea`)

VALUES ('T2058003', 'อ.ศภชย คนเทยง');

ผลลพธทได แสดงดงรปท 6.20

รปท 6.20 แสดงผลลพธทไดจากการเพมแถวขอมลลงในตาราง teach

4.3 คาสงปรบปรงแถวขอมล

คาสง UPDATE เปนคาสงทใชในการเปลยนแปลงขอมลในแตละรเลชน มรปแบบดงน

รปแบบคาสง

TABLE NAME หมายถง ตารางทขอมลตองการเปลยนแปลงเปนคาใหม

COLUMN NAME หมายถง ชอของแอททรบวตทตองการเปลยนคาใหม

UPDATE <TABLE NAME>

SET <COLUMN NAME 1> = <VALUE 1>

[,<COLUMN NAME 2> = <VALUE 2>

…, <COLUMN NAME N> = <VALUE N>]

[WHERE <CONDITIONS>];

Page 19: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

VALUE หมายถง คาใหมของแอททรบวตทจะเปลยนขอมล

CONDITION หมายถง เงอนไขของขอมลทจะนามาปรบปรง

ตวอยาง ปรบคะแนนใหกบนกศกษาเฉพาะนกศกษาทมรายไดระหวางเรยน ปรบคะแนนเปน 85

คะแนน

UPDATE LOGIN SET SCORE = 85 WHERE INCOME > 0;

ผลลพธทได แสดงดงรปท 6.21

รปท 6.21 แสดงผลลพธทไดจากการปรบปรงแถวขอมลในตาราง LOGIN

4.4 คาสงลบแถวขอมล

คาสง DELETE เปนคาสงทใชในการลบขอมลในแตละทเพล มรปแบบดงน

รปแบบคาสง

ตวอยาง ใหลบนกศกษาทมรหส 5332040111

DELETE FROM LOGIN WHERE USER = ‘5332040111’;

ผลลพธทได แสดงดงรปท 6.22

รปท 6.22 แสดงผลลพธทไดจากการลบแถวขอมลในตาราง LOGIN

5. ภาษาสาหรบการควบคมขอมล (Data Control Language : DCL)

การกาหนดสทธในการใชขอมลในตาราง กาหนดระดบของขอมลในการเรยกใช เชน ผใชบางกลม

สามารถดขอมลไดอยางเดยว ไมสามารถแกไขปรบปรงขอมลได หรอผใชบางกลมสามารถแกไขปรบปรง

ขอมลได แตหามลบขอมล เปนตน คาสงในภาษาสาหรบการควบคมขอมล มดงน

DELETE FROM <TABLE NAME> [WHERE <CONDITIONS>];

Page 20: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

คาสง ความหมาย

GRANT กาหนดสทธใหแกผใช

REVOKE ยกเลกสทธแกผใช

5.1 คาสงกาหนดสทธใหแกผใช

คาสง GRANT เปนคาสงกาหนดสทธใหแกผใช มรปแบบดงน

รปแบบคาสง

PRIVILEGE LIST หมายถง สทธในการจดการขอมลหรอตาราง เชน การสบคนขอมล

(SELECT) การเพม (INSERT) การลบ (DELETE) หรอการแกไขปรบปรง

(UPDATE) ฯลฯ

RELATION OR VIEW NAME หมายถง ตารางหรอววทใหสทธในการจดการขอมลในตารางหรอ

ววทกาหนดน

USER LIST หมายถง กลมผใชทถกใหสทธในการจดการขอมลนน

ตวอยาง ตองการกาหนดสทธให pasin ในการเรยกดขอมลจากตาราง LOGIN ไดอยางเดยว จะ

กาหนดสทธไดดวยคาสงตอไปน

GRANT SELECT ON TABLE LOGIN TO PASIN;

ผลลพธทได แสดงดงรปท 6.26

รปท 6.26 แสดงผลลพธทไดจากการกาหนดสทธใหแกผใช

GRANT <PRIVILEGE LIST> ON TABLE

<RELATION OR VIEW NAME> TO <USER LIST>

Page 21: บทที่ 6 ภาษาฐานข้อมูลelearning.psru.ac.th/courses/256/บทที่ 6.pdf · ตารางภายในฐานข อม ล การจ

5.2 คาสงยกเลกสทธแกผใช

คาสง REVOKE เปนคาสงทใชยกเลกสทธใดๆ ทเคยใหแกผใช มรปแบบดงน

รปแบบคาสง

ตวอยาง ตองการยกเลกสทธแก PASIN ในการสบคนขอมลจากตาราง LOGIN ทาได ดวยคาสง

ตอไปน

REVOKE SELECT ON TABLE LOGIN FROM PASIN

สรป

ภาษาเอสควแอล (SQL) ทมชอเตมวา Structured Query Language เปนภาษาทใชในการจดการขอมล

ทอยภายในฐานขอมลเชงสมพนธ สามารถแบงหนาทของภาษา SQLตามองคประกอบหลกของภาษาได 3

องคประกอบ คอ ภาษาสาหรบการนยามขอมล (Data Definition Language:DDL) ภาษาสาหรบการจดการ

ขอมล (Data Manipulation Language:DML) และภาษาสาหรบการควบคมขอมล (Data Control anguage:DCL)

ภาษาสาหรบการนยามขอมล เปนภาษาทผออกแบบฐานขอมลใชในการสรางโครงสรางตารางตางๆ ภายใน

ฐานขอมล ประกอบดวยคาสงทใชในการสรางโครงสรางตาราง การเพมแอททรบวตในตาราง การลบตาราง

การสรางดชน การลบดชน การสรางและลบวว เปนตน ภาษาสาหรบการจดการขอมล เปนภาษาทใชในการ

บนทกขอมลเขาไปเกบไวในตาราง ประกอบดวยคาสงทใชในการเรยกคนขอมล คาสงเพมแถวขอมล คาสง

ปรบปรง และลบแถวขอมล สวนภาษาสาหรบการควบคมขอมลเปนภาษาทใชในการกาหนดสทธในการใช

ขอมลในตาราง และกาหนดระดบของการใชงานประกอบดวยคาสงทใชในการกาหนดสทธใหแกผใช และการ

ยกเลกสทธแกผใช คาสงภาษาฐานขอมลทงหมดในหนวยการเรยนน จะใชระบบจดการฐานขอมล

phpMyAdmin ในการจดการฐานขอมล MySQL

REVOKE <PRIVILEGE> ON TABLE

<RELATION OR VIEW NAME> FROM < USERS LIST>