วันศุกร์ที่ 26 ตุลาคม พ.ศ. 2555

ภาษา SQL (Standard Query Language)
1)            ภาษา Standard relational database Query Language (SQL)
ภาษาที่กลายเป็นภาษามาตรฐานสำ หรับระบบฐานข้อมูลคือ ภาษา Standard relational database
Query Language หรือเอสคิวแอล (SQL) หรือซีควอล (SE-QUEL) ซึ่งเป็นภาษาที่พัฒนาขึ้นมาโดยบริษัท
ไอบีเอ็ม ภาษา SQL (Standard Query Language) เป็นส่วนหนึ่งของระบบฐานข้อมูลแบบรีเลชั่นเนล
(Relational Database) ที่ได้รับความนิยมมากเพราะง่ายต่อความเข้าใจ และอยู่ในรูปภาษาอังกฤษ ภาษา
SQL แบ่งออกเป็น 2 ส่วน คือ
ภาษาที่ใช้สำ หรับนิยามข้อมูล (Data Definition Language-DDL)
ภาษาสำ หรับการจัดการข้อมูล(Data Manipulation Language: DML)
ภาษาควบคุม (Control Language)
ภาษาในการเลือกข้อมูล (Data Query Language)
รูปแบบการใช้คำ สั่ง SQL สามารถใช้ได้เป็น 2 รูปแบบ ดังนี้ คือ
คำ สั่ง SQL ที่ใช้เรียกดูข้อมูลได้ทันที (Interactive SQL)
เป็นการเรียกใช้คำ สั่ง SQL สั่งงานบนจอภาพ เพื่อเรียกดูข้อมูลในขณะที่ทำ งานได้ทันที เช่น
SELECT CITY
FROM SUPPLIER
WHERE SNO = ‘SE’;
คำ สั่ง SQL ที่ใช้เขียนร่วมกันโปรแกรมอื่น ๆ (Embedded SQL)
เป็นคำ สั่ง SQL ที่ใช้ร่วมกับคำ สั่งของโปรแกรมภาษาต่าง ๆ เช่น PL/1 PASCAL ฯลฯ หรือแม้
แต่กับคำ สั่งในโปรแกรมที่ระบบจัดการฐานข้อมูลนั้นมีใช้เฉพาะ เช่น ORACLE มี PL/SQL (Procedural
Language /SQL) ที่สามารถเขียนโปรแกรมและนำ คำ สั่ง SQL มาเขียนร่วมด้วย เป็นต้น
ตัวอย่างการใช้คำ สั่ง SQL ในภาษา PL/1
EXEC SQL SELECT CITY
INTO :XCITY
FROM SUPPLIER
WHERE SNO = ‘S4’;
2)            ภาษาที่ใช้สำ หรับนิยามข้อมูล (Data Definition Language-DDL )
Data Definition Language (DDL) เป็นภาษาที่ใช้นิยามโครงสร้างข้อมูล เพื่อเปลี่ยนแปลง หรือ
ยกเลิกโครงสร้างฐานข้อมูลตามที่ออกแบบไว้ โครงสร้างดังกล่าวคือ สคีมา (Schema) นั้นเอง ตัวอย่างเช่น
การกำหนดให้ฐานข้อมูลประกอบด้วยตารางอะไรบ้าง ชื่ออะไร ประเภทใด มีอินเด็กซ์ (Index)
เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานข้อมูล 8 - 2
ภาษา DDLประกอบด้วย 3 คำ สั่งคือ
คำ สั่งการสร้าง (Create) ได้แก่ การสร้างตารางและอินเด็กซ์
CREATE TABLE <Table name>
( Attribute 1 Type 1,
Attribute 2 Type 2 ,
)
CREATE Unique Index on X<Table name>
เช่น
CREATE TABLE S11
(SNO CHAR(5) Not NULL,
SNAME CHAR(10) ,
STATUS integer
)
CREATE Unique Index XS11 on S11(SNO)
คำ สั่งเปลี่ยนแปลงโครงสร้าง
ALTER TABLE < ชื่อตารางที่ตั้งขึ้น >
<คำ สั่งการเปลี่ยนแปลง> (<ชื่อคอลัมน์ ประเภทข้อมูล>);
ตัวอย่างเช่น
ALTER TABLE SUPPLIER
ADD (LAST_SNAME Char(10));
คำ สั่งยกเลิก (Drop) ต่างๆ
การลบโครงสร้างตาราง
DROP TABLE < ชื่อตารางที่ตั้งขึ้น >
ภาษาดังกล่าวคือ ภาษาที่ใช้สร้างฐานข้อมูลลงในคอมพิวเตอร์ หลังจากที่เราได้ออกแบบแล้วว่า
ฐานข้อมูลมีกี่รีเลชั่น แต่ละรีเลชั่นมีความสัมพันธ์อย่างไร จากนั้นการใช้ภาษา DDL นี้แปลงรีเลชั่น
ต่างๆ ให้อยู่ในรูปภาษาสำ หรับนิยามข้อมูล เพื่อป้อนเข้าสู่ระบบฐานข้อมูล เพื่อสร้างฐานข้อมูลที่แท้จริง
ให้เกิดขึ้นในคอมพิวเตอร์ ภาษา DDL สามารถสรุปคำ สั่งต่างๆได้ดังตอไปนี้
คำ สั่ง ความหมาย
CREATE TABLE นิยามโครงสร้างข้อมูลในรูปตารางบนฐานข้อ
มูล
DROP TABLE ลบโครงสร้างตารางข้อมูลออกจากระบบ
ALTER TABLE แก้ไขปรับปรุงโครงสร้างตาราง
คำ สั่ง ความหมาย
CREATE INDEX สร้างดัชนีของตาราง
DROP INDEX ลบ ดัชนีของตารางออกจากระบบ
CREATE VIEW กำหนดโครงสร้างวิวของผู้ใช้
DROP VIEW ลบโครงสร้างวิวออกจากระบบ
9.2.1 คำ สั่งนิยามโครงสร้างตาราง
การสร้างตารางใน ฐานข้อมูลแบบรีเลชั่นเนล โดยเฉพาะฐานข้อมูลขนาดใหญ่บนระบบ
UNIX จะทำ ด้วยการป้อนคำ สั่งในลักษณะเท็กซ์โหมด (Text Mode) เข้าไปในระบบฐานข้อมูล ดังรูป
แบบต่อไปนี้
CREATE TABLE <ชื่อตาราง>
(<ชื่อคอลัมน์ ประเภทของข้อมูล>[,<ชื่อคอลัมน์ ประเภทของข้อมูล>]....);
9.2.2 ประเภทของข้อมูล
ประเภทของข้อมูลแบ่งเป็น 5 ประเภทใหญ่ๆ ขึ้นอยู่กับซอฟต์แวร์ระบบฐานข้อมูลที่ใช้
ว่าคืออะไร ตัวอย่างเช่น CHAR, INTEGER, DATE ฯลฯ
คำ สั่งการลบโครงสร้างตาราง
DROP TABLE <ชื่อตารางที่ต้องการลบ>
คำ สั่งการเปลี่ยนแปลงโครงสร้างตาราง
ในกรณีที่ต้องการเปลี่ยนแปลงโครงสร้างตารางที่เคยนิยามไว้ สามารถใช้คำ สั่งต่อไปนี้
ALTER TABLE <ชื่อตารางที่ต้องการเปลี่ยนแปลง>
<คำ สั่งการเปลี่ยนแปลง><[,<ชื่อคอลัมน์ ประเภทของข้อมูล>]>
คำ สั่งดัชนี
ดัชนี ( INDEX ) มีความสำคัญมากต่อฐานข้อมูลเชิงสัมพันธ์ เนื่องจาก ระบบฐาน
ข้อมูลแบบรีเลชั่นเนล (RDBMS) จะใช้ดัชนีในการค้นหาระเบียนที่ต้องการได้อย่างรวดเร็ว โดยดัชนีที่
ถูกสร้างขึ้น จะเก็บไว้แยกจากตารางในพื้นที่ต่างหาดของคอมพิวเตอร์ โดยปกติ ถ้าไม่มีการประกาศ
ดัชนี ไว้การค้นหาข้อมูลในตาราง นั้นจะต้องทำ แบบเรียงลำ ดับจากแถวที่หนึ่งจนถึงแถวสุดท้าย การ
สร้างดัชนีสำ หรับตารางใดๆ จะทำ ได้โดยการเลือกคอลัมน์ใดคอลัมน์หนึ่งจากตารางมาเป็นดัชนี และตา
รางหนึ่งๆ สามารถมีได้หลายดัชนี
นอกจากเพิ่มความรวดเร็วในการดึงข้อมูลแล้ว ยังสามารถนำ ไปใช้ในการควบคุม
คอลัมน์ที่นำ มาสร้างเป็นดัชนีให้มีการเก็บข้อมูลที่ไม่ซ้ำกัน(Unique) อีกด้วย
การสร้างดัชนีจะใช้คำ สั่ง CREATE INDEX แล้วตามด้วยชื่อดัชนีที่เราตั้งขึ้น ดังรูปแบบ
ต่อไปนี้
CREATE [UNIQUE] INDEX < ชื่อตารางที่ตั้งขึ้น >
ON (<ชื่อตารางที่สร้างดัชนี> (< ชื่อคอลัมน์ 1> [,< ชื่อคอลัมน์ 2>]…);
การลบดัชนี
เมื่อต้องการลบดัชนีที่สร้างขึ้น ก็สามารถทำ ได้ด้วยคำ สั่ง DROP INDEX แล้วตามด้วย
ชื่อดัชนีที่ต้องการลบ ดังรูปแบบดังนี้
DROP INDEX <ชื่อดัชนี>
3)             ภาษาสำ หรับการจัดการข้อมูล (Data Manipulation Language-DML)
หลังจากที่เราสร้างโครงสร้างฐานข้อมูลขึ้นแล้ว คำ สั่งต่อไปในการป้อนข้อมูลลงในฐานข้อมูล
และเปลี่ยนแปลงข้อมูล ในฐานข้อมูล โดยการใช้ภาษาสำ หรับการจัดการข้อมูล (Data Manipulation
Language-DML) ใช้จัดการข้อมูลภายในตารางภายในฐานข้อมูล และภาษาแก้ไขเปลี่ยนแปลงตาราง
แบ่งออกเป็น 4 Statement คือ
• Select Statement : การเรียกหา (Retrieve) ข้อมูลจาก ฐานข้อมูล
• Insert Statement : การเพิ่มเติมข้อมูลลงใน ตาราง (Table) จาก ฐานข้อมูล
• Delete Statement: การลบข้อมูลลงออกจาก ตาราง (Table) จาก ฐานข้อมูล
• Update Statement: การเปลี่ยนแปลงข้อมูลลงใน ตาราง (Table) จาก ฐานข้อมูล
คำ สั่ง ความหมาย
SELECT เรียกค้นข้อมูลในตาราง
INSERT เพิ่มแถวข้อมูลลงในตาราง
DELETE ลบแถวข้อมูล
UPDATE ปรับปรุงแถวข้อมูลในตาราง
คำ สั่งค้นหาข้อมูล (Query Statement)
คำ สั่ง SELECT เป็นคำ สั่งการเรียกดูข้อมูล หรือ ค้นข้อมูล ตามเงื่อนไขที่ระบุบ เนื่องจากคำ สั่ง
SELECT เป็นคำ สั่งที่มีรูปแบบการใช้งานที่ง่ายเพื่อช่วยในการค้นหาข้อมูลที่ซับซ้อน ดังมีรูปแบบดังนี้
SELECT <ชื่อคอลัมน์ที่ต้องการดูข้อมูล>
FROM <ชื่อตาราง>
WHERE <เงื่อนไขตามที่ระบุบ>
SELECT --- เป็นคำ สั่งให้ทำ การเรียกดูข้อมูลในคอลัมน์ที่ระบุ ซึ่งอาจจะมากกว่า หนึ่งก็ได้ และถ้ามี
มากกว่าหนึ่งคอลัมน์ต้องคั่นด้วย คอมม่า (,) และนอกจากนี้ยังสามารถใช้เครื่องหมาย
ดอกจัน (*) เพื่อแสดงถึงการขอดูข้อมูลทั้งหมดได้อีกด้วย
FROM --- เป็นคำ ส่วนประกอบของคำ สั่งที่บอกถึงตารางที่ต้องการดู ซึ่งอาจจะมีมากกว่าหนึ่งตารางก็
ได้ ที่จะถูกเรียกใช้จากคำ สั่ง SELECT
WHERE--- เป็นส่วนประกอบของคำ ส่ง ที่ใช้บ่งบอกเงื่อนไขที่จะใช้ในการค้นหาข้อมูล ขึ้นมาจากตา
รางใด ๆ ที่อยู่หลัง FROM นี้
การเรียกดูแบบซ้อนกัน (Nested SELECT Statement)
SELECT <ชื่อคอลัมน์>
FROM <ชื่อตาราง>
WHERE <ชื่อคอลัมน์> IN
( SELECT <ชื่อคอลัมน์>
FROM <ชื่อตาราง>
WHERE <ชื่อคอลัมน์> )
คำ สั่งเติมข้อมูล (Insert Statement)
INSERT INTO < ชื่อตาราง >
VALUES (< ชื่อคอลัมน์ 1> [,< ชื่อคอลัมน์ 2>]…);
คำ สั่งแก้ไขและลบแถว (Update Statement )
UPDATE < ชื่อตาราง >
SET <ค่าที่ต้องการ>
WHERE <เงื่อนไข>
4)             ภาษาควบคุม (Control Language)
ใช้เป็นภาษาที่ใช้ควบคุมระบบรักษาความปลอดภัย ของฐานข้อมูล ประกอบด้วยคำ สั่ง 2 คำ สั่งคือ
คำ สั่ง GRANT เป็นคำ สั่งที่ใช้กำ หนดสิทธิให้กับผู้ใช้แต่ละคนให้มีสิทธกระทำ การใดกับข้อมูลเช่น
การเพิ่มข้อมูล การแก้ไข หรือ การลบข้อมูลในตารางใดบ้าง
คำ สั่ง REVOKE เป็นคำ สั่งให้มีการยกเลิกสิทธนั้นหลังจากที่ได้ GRANT แล้ว
ค่าบูลลีน ( Boolean-Type Data)
• AND
• OR
• NOT
• =
• > หรือ >=
• < หรือ =<
• <>
• Bulit-In Function
• COUNT
• SUM
• AVG
• MAX
• MIN
• DISTINCT
ชุดคำ สั่ง GROUP BY, ORDER BY และ HAVING
เนื่องจากข้อมูลที่สนใจมักจะเป็น ผลสรุป หรือ ข้อมูลที่ใช้ในการตัดสินใจ ภาษา SQL จึงได้ออก
แบบให้มี ชุดคำ สั่งพิเศษ ที่ทำ หน้าที่แบ่งออกเป็นกลุ่มๆ ได้แก่
1.1 ชุดคำ สั่ง GROUP BY
GROUP BY เป็นคำ สั่งให้มีการจัดกลุ่มแถวข้อมูลตามคอลัมน์
โดยข้อมูลที่เหมือนกันจะถูกจัดให้อยู่ในกลุ่มเดียวกัน ดังนั้นจากตัวอย่างตาราง S
SELECT S# , MAX( QTY)
FROM SPJ
GROUP BY S#
ผลลัพธ์
S# QTY
S1 700
S2 800
S3 500
S4 300
S5 800
1.2 ชุดคำ สั่ง ORDER BY
ORDER BY เป็นคำ สั่งให้มีการเรียงลำ ดับข้อมูลในแถวข้อมูลตามคอลัมน์
โดยข้อมูลที่เหมือนกันจะถูกจัดเรียงจากน้อยไปมาก ถ้าไม่การระบุบ แต่ถ้าระบุบว่าเป็น DESC
จะเรียงจากมากไปน้อย ดังนั้นจากตัวอย่างต่อไปนี้
SELECT S# , MAX( QTY)
FROM SPJ
GROUP BY S#
ORDER BY 2 DESC
S# QTY
S5 800
S2 800
S1 700
S3 500
S4 300
หมายเหตุ ตัวเลข 2 ที่อยู่หลัง ORDER BY จะเป็น การบอกระบบให้ทำ การเรียงลำ ดับข้อมูล
ตามลำ ดับคอลัมน์ที่ 2 ของคำ สั่ง SQL ซึ่งก็คือ MAX(QTY) นั่นเอง
1.3 ชุดคำ สั่ง HAVING
HAVING เหมือนกับคำ สั่ง WHERE ที่ต้องตามด้วยเงื่อนไข แต่ HAVING จะใช้ในกรณีที่มีการจัดก
ลุ่มหรือการใช้ GROUP BY
สรุปชุดคำ สั่งมาตรฐานของ SQL
1. CREATE TABLE [[database.]owner.]table_name
(column_name datatype [not null | null] IDENTITY [(seed, increment)][constraint]
[, column_name datatype [not null | null IDENTITY [(seed, increment)]]].
[constraint] …)
[ON segment name]
2. DELETE [FROM] table_name
WHERE column_name = “value”
3. ALTER TABLE [[<database.>]<owner.>]<table_name>
ADD <column_name><datatype>NULL [Canstsaint]
[WITH nocmeck]
{drop [ ]
4. UPDATE table_name
SET column_name= value
WHERE column_name =operator_value
5. CREATE VIEW View_name AS
SELECT column
FROM table_1 ….
WHERE table_key_1=table_key_2
หน้งสืออ้างอิง
1. ชนวัฒน์ ศรีสอ้าน, การออกแบบและพัฒนาฐานข้อมูล, มหาวิทยาลัยเทคโนโลยีสุรนารี :
นครราชสีมา, 2542.
2. ศิริลักษณ์ โรจนกิจอำ นวย, ระบบฐานข้อมูล, พิมพ์ครั้งที่ 3, ดวงกลมสมัย : กรุงเทพฯ, 2542