Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
บทท 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 หลายตว มความสามารถใชนยามโครงสราง
ตารางภายในฐานขอมล การจดการขอมล รวมไปถงการควบคมสทธการใชงานฐานขอมล 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
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>;
รปท 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 <ชอคอลมน>]);
ตวอยาง ใหสรางตาราง/รเลชน ชอ 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
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>;
รปท 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]);
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;
รปท 6.10 แสดงผลลพธทไดจากคาสง SQL ในการสรางวว ชอ SCOREVIEW
3.8 คาสงลบวว
รปแบบคาสง
ตวอยาง ตองการลบวว View ชอ scoreview ออกจากฐานขอมล Student_db มคาสงดงน แสดงดง
รปท 6.11
รปท 6.11 แสดงผลลพธทไดจากคาสง SQL ในการลบวว ชอ SCOREVIEW
DROP VIEW <VIEW NAME>;
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>];
ในการเรยกดขอมล ขอมลทใชเรยกดจากตารางตางๆ อาจจะไมมเงอนไขหรอมระบเงอนไขโดย
เงอนไขทระบหลง WHERE สามารถทาไดหลายรปแบบ อาจมเพยงเงอนไขเดยว หรอหลายเงอนไขนอกจากน
ยงสามารถระบเงอนไขโดยเขยนเปนขอคาถามยอย (Sub query) ไดเชนกนรายละเอยดทเกยวของกบการ
เรยกดขอมลมดงน คอ
1) การเรยกดขอมลแบบไมมเงอนไข
การเรยกดขอมลแบบไมมเงอนไข อาจจะเปนการเรยกดขอมลทงตาราง หรอเรยกดเพยงบาง
แอททรบวต หรอการเรยกดขอมลโดยการใหจดเรยงขอมล
ตวอยาง ใหแสดงขอมลทงหมดของตาราง LOGIN
SELECT *
FROM LOGIN;
ผลลพธทได แสดงดงรปท 6.12
รปท 6.12 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบไมมเงอนไข
ตวอยาง ใหแสดง รหสนกศกษา ชอนกศกษา และกลมเรยน
SELECT USER, FULLNAME, ROOM
FROM LOGIN;
ผลลพธทได แสดงดงรปท 6.13
รปท 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
รปท 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
รปท 6.15 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไข AND
โอเปอเรเตอร IN
เปนโอเปอเรเตอรทใชกบเงอนไขของคอลมนทตองการระบเงอนไขเปนกลมของขอมล โดย
โอเปอเรเตอร IN จะแสดงตอทายชอแอททรบวตทถกระบเปนเงอนไข และกลมของขอมลทเปนขอมลเฉพาะ
ของแอททรบวตทเปนเงอนไขน จะอยในวงเลบ ( ) และมเครองหมาย , คน
ตวอยาง ใหแสดงรายละเอยดของ รหสนกศกษา และชอนกศกษา ทกลมวท.สงแวดลอม หรอ วท.
สขภาพ
SELECT USER, FULLNAME
FROM LOGIN
WHERE ROOM IN (‘วท.สงแวดลอม, ‘วท.สขภาพ);
ผลลพธทได แสดงดงรปท 6.16
รปท 6.16 แสดงผลลพธทไดจากคาสง SQL ในการเรยกดขอมลแบบมเงอนไขโอเปอเรเตอร IN
โอเปอเรเตอร LIKE
เปนโอเปอเรเตอรท ใ ชในการคนหาขอมลของคอลมนท เกบขอมลประเภทตวอกษรเทานน
(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 การเชอมโยงขอมลจากหลายตาราง อาจจะเรยกดขอมลแบบมเงอนไขหรอไมม
เงอนไขกได
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
รปท 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>);
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>];
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>];
คาสง ความหมาย
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>
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>