วันพุธที่ 17 ธันวาคม พ.ศ. 2557

ภาษา SQL (Standard Query Language)

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





 ภาษาที่ใช้สำ หรับนิยามข้อมูล (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 SUPPLIERADD (LAST_SNAME Char(10));

คำ สั่งยกเลิก (Drop) ต่างๆ
การลบโครงสร้างตาราง
DROP TABLE < ชื่อตารางที่ตั้งขึ้น >
ภาษาดังกล่าวคือ ภาษาที่ใช้สร้างฐานข้อมูลลงในคอมพิวเตอร์ หลังจากที่เราได้ออกแบบแล้วว่า
ฐานข้อมูลมีกี่รีเลชั่น แต่ละรีเลชั่นมีความสัมพันธ์อย่างไร จากนั้นการใช้ภาษา DDL นี้แปลงรีเลชั่น
ต่างๆ ให้อยู่ในรูปภาษาสำ หรับนิยามข้อมูล เพื่อป้อนเข้าสู่ระบบฐานข้อมูล เพื่อสร้างฐานข้อมูลที่แท้จริง
ให้เกิดขึ้นในคอมพิวเตอร์ ภาษา DDL สามารถสรุปคำ สั่งต่างๆได้ดังตอไปนี้
คำ สั่ง ความหมาย
CREATE TABLE นิยามโครงสร้างข้อมูลในรูปตารางบนฐานข้อมูล
DROP TABLE ลบโครงสร้างตารางข้อมูลออกจากระบบ
ALTER TABLE แก้ไขปรับปรุงโครงสร้างตาราง

 ภาษาสำ หรับการจัดการข้อมูล (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 --- เป็นคำ สั่งให้ทำ การเรียกดูข้อมูลในคอลัมน์ที่ระบุ ซึ่งอาจจะมากกว่า หนึ่งก็ได้ และถ้ามี
มากกว่าหนึ่งคอลัมน์ต้องคั่นด้วย คอมม่า (,) และนอกจากนี้ยังสามารถใช้เครื่องหมาย
ดอกจัน (*) เพื่อแสดงถึงการขอดูข้อมูลทั้งหมดได้อีกด้วย
บทที่ 8 พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์ 8 - 5
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 <เงื่อนไข>

 ภาษาควบคุม (Control Language)
             ใช้เป็นภาษาที่ใช้ควบคุมระบบรักษาความปลอดภัย ของฐานข้อมูล ประกอบด้วยคำ สั่ง 2 คำ สั่งคือ
คำ สั่ง GRANT เป็นคำ สั่งที่ใช้กำ หนดสิทธิให้กับผู้ใช้แต่ละคนให้มีสิทธกระทำ การใดกับข้อมูลเช่น
การเพิ่มข้อมูล การแก้ไข หรือ การลบข้อมูลในตารางใดบ้าง
คำ สั่ง REVOKE เป็นคำ สั่งให้มีการยกเลิกสิทธนั้นหลังจากที่ได้ GRANT แล้ว
ค่าบูลลีน ( Boolean-Type Data)
• AND
• OR
• NOT
เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานข้อมูล 8 - 6
• =
• > หรือ >=
• < หรือ =<
• <>
• 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 เป็นคำ สั่งให้มีการเรียงลำ ดับข้อมูลในแถวข้อมูลตามคอลัมน์
บทที่ 8 พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์ 8 - 7
โดยข้อมูลที่เหมือนกันจะถูกจัดเรียงจากน้อยไปมาก ถ้าไม่การระบุบ แต่ถ้าระบุบว่าเป็น 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, ดวงกลมสมัย : กรุงเทพฯ, 25

ไม่มีความคิดเห็น:

แสดงความคิดเห็น