รายวิชาการจัดการฐานข้อมูล (Database Management System) ง30250 สำหรับใช้เป็นสื่อการสอน ยินดีต้อนรับนักเรียนทุกคนนะค่ะ โดย อ.พรหมพร เพิ่มพูล

วันอังคารที่ 17 กันยายน พ.ศ. 2556

หน่วยการเรียนรู้ที่ 4 ภาษา SQL



หน่วยการเรียนรู้ที่ 4

ภาษา SQL

Structured  Query Language ; SQL 

        SQL จัดเป็นภาษามาตรฐานบนระบบฐานข้อมูลเชิงสัมพันธ์  ซึ่งเป็นภาษาที่สามารถใช้งานได้ในคอมพิวเตอร์หลายระดับด้วยกัน  ไม่ว่าจะเป็นระดับเมนเฟรมคอมพิวเตอร์จนถึงไมโครคอมพิวเตอร์  ชุดคำสั่ง หรือ
ภาษา SQL นั้นถูกพัฒนาจากแนวความคิดทางคณิตศาสตร์ คือ Relational Algebra  และ   Relation Calculus  ตามแนวคิดของเทคโนโลยีฐานข้อมูลเชิงสัมพันธ์  ที่ E.F. Codd เป็นผู้คิดค้นขึ้น
เมื่อปี ค.ศ. 1970 และต่อมาบริษัท IBM จึงเริ่มทำการวิจัยพัฒนาเมื่อ ปี ค.ศ. 1974 โดยใช้ชื่อว่า “SEQUEL”  (Structured English  Query  Language) จากนั้นจึงมีการปรับปรุงและเปลี่ยนชื่อมาเป็น SQL  

       หลังจากปี ค.ศ. 1970 เป็นต้นมา ระบบฐานข้อมูล   ORACLE ซึ่งถูกพัฒนาโดยบริษัท ORACLE Corporation และถือเป็นก้าวแรกในเชิงพาณิชย์สำหรับการพัฒนาระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ตั้งอยู่บนพื้นฐานของ SQL และต่อมาก็มีผลิตภัณฑ์อื่นๆ พัฒนาตามมา เช่น INGRESS 

      เมื่อมีผลิตภัณฑ์จากผู้ผลิตต่างๆ มากขึ้น จึงทำให้เกิด SQL หลายๆรูปแบบจากผลิตภัณฑ์ต่างๆ ดังนั้นในราวปี ค.ศ. 1982 ทาง ANSI     จึงได้คิดค้นและร่างมาตรฐานของชุดคำสั่ง SQL เพื่อให้ผู้ผลิตรายต่างๆ สร้างชุดคำสั่งดังกล่าวให้อยู่ภายใต้มาตรฐานเดียวกัน  แต่ในปัจจุบันแต่ละผลิตภัณฑ์ต่างก็มีการเพิ่มคุณสมบัติพิเศษเพิ่มเติมเพื่อให้มีประสิทธิภาพยิ่งขึ้นและถือเป็นจุดขายของผลิตภัณฑ์  แต่ทั้งนี้ โดยหลักการแล้วชุดคำสั่งดังกล่าวยังคงตั้งอยู่บนพื้นฐานที่ทาง ANSI บัญญัติไว้ โดยในปัจจุบันมีระบบการจัดการฐานข้อมูลต่างๆ อาทิเช่น ORACLE , DB2 , SYBASE , Informix , MS-SQL , MS-Access ตลอดจน MS-FoxPro เป็นต้น   ซึ่ง
การใช้งานภาษา SQL ในปัจจุบันมี 2 ลักษณะ คือ แบบโต้ตอบ (Interactive SQL) และ แบบฝังตัวในโปรแกรม (Embedded  SQL) 

วัตถุประสงค์ของ SQL 

1. สร้างฐานข้อมูลและโครงสร้างรีเลชั่น
2. สนับสนุนงานด้านการจัดการฐานข้อมูลพื้นฐาน เช่น การเพิ่ม การปรับปรุง การลบข้อมูลจากรีเลชั่น
3. สนับสนุนการค้นหา สืบถาม หรือคิวรี่ข้อมูลและการแปลงข้อมูลให้อยู่ในรูปสารสนเทศ

ประเภทของคำสั่งภาษา SQL 

1. ภาษานิยามข้อมูล (Data Definition Language : DDL)   เป็นกลุ่มคำสั่งที่ใช้ในการสร้างฐานข้อมูล การกำหนดโครงสร้างข้อมูลว่ามีคอลัมน์หรือแอตตริบิวต์ใด     ชนิดข้อมูลเป็นประเภทใด รวมทั้งการจัดการด้านการเพิ่ม แก้ไข ลบ แอตตริบิวต์ต่างๆในรีเลชั่น และการสร้างดัชนี

2. ภาษาการจัดการข้อมูล (Data Manipulation Language : DML) เป็นกลุ่มคำสั่งที่ถือเป็นแกนสำคัญของภาษา SQL  โดยกลุ่มคำสั่งเหล่านี้จะใช้ในการ  Update   เพิ่ม   ปรับปรุงและการ    Query   ข้อมูลในฐานข้อมูล ซึ่งอาจเป็นชุดคำสั่งในลักษณะ Interactive SQL  หรือ  Embedded SQL ก็ได้

3. ภาษาควบคุมข้อมูล (Data Control Language : DCL)     ซึ่งเป็นกลุ่มคำสั่งที่จะช่วยให้ผู้บริหารฐานข้อมูล    (DBA) สามารถควบคุมฐานข้อมูลเพื่อกำหนดสิทธิการอนุญาต  (Grant)   หรือการยกเลิกการเข้าใช้ (Revoke)  ฐานข้อมูล ซึ่งเป็นกระบวนการป้องกันความปลอดภัยในฐานข้อมูล  รวมทั้งการจัดการทรานแซกชั่น (Transaction Management)
แต่ละ DBMS จะมีการกำหนดชนิดข้อมูลซึ่งประกอบไปด้วยตัวแปรต่างๆ เช่น numeric , string , date , time เป็นต้น

ตารางแสดงชนิดของข้อมูลของ ORACLE7



ภาษานิยามข้อมูล (
Data Definition Language : DDL)
        CREATE  คำสั่งที่ใช้ในการสร้าง  เช่น CREATE TABLE สร้างตาราง ,  CREATE VIEW สร้างวิว
        DROP       คำสั่งที่ใช้ในการลบ เช่น DROP TABLE ลบตาราง  , DROP  VIEW ลบวิว
        ALTER     คำสั่งที่ใช้ในการเปลี่ยนแปลงโครงสร้างตาราง

ภาษาการจัดการข้อมูล (Data Manipulation Language : DML)
        SELECT    คำสั่งที่ใช้ในการคิวรีข้อมูลในฐานข้อมูล
        INSERT     คำสั่งที่ใช้เพิ่มข้อมูลในตาราง
        UPDATE   คำสั่งที่ใช้ปรับปรุงข้อมูล (Update) ในตาราง
        DELETE   คำสั่งที่ใช้ลบข้อมูลออกจากตาราง

Select  Statement 
               คำสั่ง Select เป็นคำสั่งที่ใช้เรียกดูข้อมูลจากตารางข้อมูลตามความต้องการของผู้ใช้ โดยสามารถใช้ร่วมกับ Function ทางคณิตศาสตร์   หรือเงื่อนไขประกอบต่างๆ ใน SQL  Command  ได้    อีกทั้งยังสามารถเรียกดูข้อมูลจากหลายๆตารางพร้อมกัน  ซึ่งประโยค SELECT จะมีรูปแบบการใช้งานดังนี้


              Column_expression  เป็นการแทนค่าชื่อคอลัมน์ หรือ expression , table_name คือชื่อของตารางที่ต้องการเข้าถึงเพื่อวิวข้อมูล และ alias  คือชื่อย่อของตารางที่ใช้แทน table_name โดยลำดับของการประมวลผลชุดคำสั่ง SELECT มีดังนี้

? FROM             กำหนดตารางที่ต้องการใช้งาน
? WHERE          สร้างเงื่อนไขเพื่อการกรอง (filter) แถวที่ต้องการ
? GROUP BY    จัดกลุ่ม แถว ที่มีค่าคอลัมน์เดียวกัน
? HAVING        กรองกลุ่มเนื้อหาในบางเงื่อนไขจาก  GROUP BY
? ORDER BY      กำหนดให้เรียงผลลัพธ์  โดยที่  ASC       คือการเรียงลำดับจากน้อยไปมาก (Default)  และ DESC    คือการเรียงลำดับจากมากไปน้อย

                      ใน  SQL  สามารถใช้เครื่องหมายเปรียบเทียบ (Comparison Operators) ต่างๆ ได้ดังนี้
=   ,  ?  ,   ?    ,  ?  ,  ?   และ   ? ?  หรือ   ?    หรือใช้เครื่องหมายทางตรรกะ (logical  Operators)  ได้แก่  AND , OR , NOT  หรือการใช้เงื่อนไข (Condition) อื่นๆ  เช่น
- BETWEEN  /  NOT BETWEEN   ใช้แสดงข้อมูลเป็นช่วงๆ หรือระหว่างข้อมูล A ถึง B
- IN /  NOT IN                   ใช้แสดงตำแหน่งข้อมูลหรือกำหนดตำแหน่ง
- LIKE / NOT LIKE                        เป็นโอเปอเรเตอร์ที่ใช้ในการค้นหาข้อมูลด้วยตัวอักษรด้วยเครื่องหมาย
  Wildcard เช่น % และ _  คล้ายๆ การใช้ * ใน DOS
- IS NULL / IS NOT NULL            ใช้ค้นหาข้อมูลที่บางคอลัมน์ของตาราง  มี/ไม่มี  ข้อมูล

การใช้ฟังก์ชั่นต่างๆ ใน SQL

- COUNT  เป็นฟังก์ชั่นใช้ในการนับคำนวณ
- SUM       เป็นฟังก์ชั่นหาผลรวม
- AVG       เป็นฟังก์ชั่นหาค่าเฉลี่ย
- MIN        เป็นฟังก์ชั่นหาค่าต่ำสุด
- MAX     เป็นฟังก์ชั่นหาค่าสูงสุด

                  และยังมี การใช้ SQL Command สำหรับการจัดการข้อมูลในลักษณะอื่นๆ อีกมากมาย เช่น  NESTED QUERY การ  JOIN  ,  การ   UNION  , INTERSECT , EXCEPT     ตลอดจนการ      INSERT  DELETE และ UPDATE ข้อมูลในตาราง     ซึ่งสามารถติดตามได้จากหนังสือหรือ คู่มือภาษา  SQL ทั่วๆ  ไป

ภาษาควบคุมข้อมูล (Data Control  Language ; DCL)  
           การควบคุมข้อมูลถือเป็นการควบคุมความปลอดภัยในการใช้งานข้อมูลจากฐานข้อมูล กล่าวคือ ฐานข้อมูลมีวัตถุประสงค์ที่ต้องการให้ผู้ใช้หลายๆคนสามารถเข้าถึงข้อมูลส่วนกลางได้ ซึ่งหากปราศจากควบคุมความปลอดภัยในฐานข้อมูลแล้ว ย่อมก่อให้เกิดปัญหาต่างๆตามมา    ดังนั้นผู้บริหารฐานข้อมูล     จึงจำเป็นต้องทำการกำหนดสิทธิการเข้าใช้งานที่ควรจะเป็นให้แก่ User ในแต่ละระดับ ว่าจะสามารถเข้าถึงข้อมูลได้มากน้อยอย่างไร

           ความปลอดภัยในฐานข้อมูลถือเป็นสิ่งสำคัญที่ไม่ควรมองข้าม   เพราะข้อมูลอาจเกิดความเสียหายได้ถ้าไม่มีการควบคุมความปลอดภัย   ดังนั้นเมื่อมีการควบคุมความปลอดภัย นั่นหมายถึงการป้องกันมิให้ผู้ที่ไม่มีสิทธิในการเข้าถึงข้อมูลจัดการกับข้อมูลในฐานข้อมูลได้ เช่น การกำหนดให้ผู้ใช้งานในแผนกแคชเชียร์สามารถเข้าถึงข้อมูลเพียงแค่เรียกดูราคาสินค้าเท่านั้น  ไม่สามารถปรับปรุงข้อมูลราคาสินค้าเหล่านั้นได้   แต่พนักงานการตลาดที่ดูแลเรื่องราคาสินค้าและโปรโมชั่น มีสิทธิเข้าถึงข้อมูลราคาและเปลี่ยนแปลงราคาสินค้าได้ เป็นต้น การจัดการดังกล่าวจะทำให้ฐานข้อมูลในองค์การมีความปลอดภัยต่อการบุกรุกไม่ว่าจะเป็นการจงใจหรือไม่ตั้งใจก็ตาม    และช่วยลดความเสี่ยงต่อการสูญหายของข้อมูลด้วย

           นอกจากความปลอดภัยในการกำหนดสิทธิการใช้งานของผู้ใช้แล้ว  ยังรวมไปถึงการควบคุมภาวะการเข้าพร้อมกัน (Concurrency Control) ด้วยซึ่งหากปราศจากการควบคุมอาจก่อให้เกิดความผิดพลาดในการ   อัพเดทข้อมูลและส่งผลต่อความเสียหายในข้อมูลได้  เช่น การบันทึกข้อมูลบัญชีของธนาคารแห่งหนึ่ง ซึ่งวันวันหนึ่งมีลูกค้ามากมายหลายคนเข้าใช้บริการตู้ ATM จากหลายๆ สถานที่   ถ้าหากไม่มีการควบคุมภาวะการเข้าถึงข้อมูลพร้อมกัน ลูกค้า ตั้งแต่2 คน ขึ้นไปใช้ATM พร้อมกัน ข้อมูลทางบัญชีอาจรับข้อมูลของลูกค้าคนหนึ่งแต่อีกคนหนึ่งอาจไม่รับ    ทำให้ข้อมูลเสียหายไม่ตรงกับความเป็นจริงได้  จึงต้องมีการควบคุมภาวะการเข้าพร้อมกันด้วยการให้ข้อมูลของฝ่ายใดฝ่ายหนึ่งเกิดการรอ    (wait)   จนกว่ารายการของลูกค้าคนที่เข้าถึงข้อมูลได้ก่อนจะแล้วเสร็จ  แล้วจึงค่อยดำเนินการต่อไป
คำสั่ง GRANT  เป็นคำสั่งที่ใช้ในการกำหนดสิทธิในการเข้าถึงข้อมูลว่าจะให้ผู้ใช้รายใดเข้าถึงฐานข้อมูล  สามารถจัดการข้อมูลในตาราง  หรือวิว ใดบ้าง  เช่น กำหนดให้ผู้ใช้บางคนสามารถ     SELECT   ข้อมูลได้อย่างเดียว   ในขณะที่บางคนสามารถปรับปรุงเปลี่ยนแปลงแก้ไขข้อมูลได้  ด้วยการ INSERT  DELETE เป็นต้น



คำสั่ง REVOKE   เมื่อสามารถกำหนดสิทธิการใช้งานแก่ผู้ใช้ได้ ก็สามารถยกเลิกสิทธิ์บางสิทธิ์ได้






ตัวอย่างโปรแกรมสำเร็จรูปในการจัดการฐานข้อมูล 

 (Microsoft  Access  , Microsoft  SQL Server   และ  MySQL) 

1. โปรแกรม Microsoft Access  

        เป็นโปรแกรมการจัดการฐานข้อมูลในช่วงต้นๆ ของ กลุ่มบริษัทไมโครซอฟท์   ซึ่งออกแบบให้ใช้งานจัดการฐานข้อมูลได้ง่าย  ไม่ซับซ้อน  ซึ่งประกอบไปด้วยองค์ประกอบหลักของแถบเครื่องมือ (tool bar) ตามโครงสร้างของโปรแกรมไมโครซอฟท์ออฟฟิศทั่วไป  ส่วนของการจัดการฐานข้อมูลประกอบไปด้วย ตาราง แบบสอบถาม ฟอร์ม รายงาน แมโครและโมดูล ดังภาพข้างล่าง

        ในภาพแสดงถึงมุมมองหนึ่งใน Microsoft Access ที่แสดงโครงสร้างของข้อมูล Customers ในระบบการจัดการฐานข้อมูลของบริษัท Northwind  ว่าประกอบไปด้วยกลุ่มของ ฟีลด์ข้อมูลใดบ้างและชนิดข้อมูล (Data types) เป็นอย่างไร  พร้อมกับคำอธิบายข้อมูล (Data description)


      
              Microsoft Access มีความสามารถในการแสดงในมุมมองที่หลากหลาย ดังภาพข้างล่างบนเป็นลักษณะการเรียกดูฐานข้อมูลพนักงานในลักษณะที่เรียกว่ามุมมอง ฟอร์ม (Form View) สามารถแสดงข้อมูลที่จำเป็นได้ภายในหน้าจอเดียวกัน และมีรูปแบบสวยงาม ซึ่งมีลักษณะการใช้งานที่ง่ายกว่ามุมมองตารางข้อมูล (Table หรือ Relation) ดังภาพข้างล่าง





             Query     คิวรี่ เป็นองค์ประกอบที่สำคัญมากของระบบการจัดการฐานข้อมูล เพราะหมายถึงการสอบถามหรือเรียกดูข้อมูลตามความต้องการของผู้ใช้  (Customized  data  inquiry)   ซึ่งผู้ใช้สามารถตั้งคำถามได้ตามต้องการเช่น ต้องการทราบยอดขายของสินค้าในปี 1995 ดังตัวอย่างในภาพข้างล่างMicrosoft Access ก็จะแสดงข้อมูลออกมาให้ในตารางขวามือ   ลักษณะการเรียกดูข้อมูลตามวัตถุประสงค์ใช้งานแบบนี้เรียกว่า  “แบบสอบถาม” หรือ  “QUERY

2. Microsoft SQL Server 

        เป็นโปรแกรมการจัดการฐานข้อมูลในตระกูล   Microsoft อีกเช่นกัน   แต่เน้นใช้งานในระบบเครือข่าย Client / Server โดยเฉพาะ  ดังนั้นการใช้งานฐานข้อมูล SQL Server ต้องมีการสร้างระบบเครือข่ายและให้ Sever เป็นฐานข้อมูล  ส่วนที่ Clients จะมีเพียงแต่ตัวโปรแกรมเท่านั้น  เป็นการประหยัดทรัพยากรหน่วยความจำในเครื่อง Clients  และต้องการให้มีศูนย์กลางข้อมูลอยู่เพียงแหล่งเดียวเพื่อการจัดการและควบคุมการเข้าใช้ได้อย่างมีประสิทธิภาพ   โปรแกรม MS-SQL Server  จึงถูกพัฒนาขึ้นภายใต้การใช้ภาษา SQL ที่เป็นสากล  ที่สามารถใช้งานร่วมกับฐานข้อมูลอื่นที่มีโครงสร้างภาษาเดียวกัน เช่น ฐานข้อมูลที่สร้างขึ้นจาก Microsoft Access ก็สามารถใช้งานร่วมกันกับ SQL Server ได้เลย  คำสั่งต่างๆ ที่ใช้ใน SQL Server กับ Access จึงเป็นคำสั่งเดียวกัน   และออกแบบให้งานได้ง่ายด้วยหน้าต่าง
Windows ที่ผู้ใช้ส่วนใหญ่คุ้นเคย  การใช้งาน SQL Server จะต้องอยู่บนสถาปัตยกรรมโครงสร้างฐานข้อมูลแบบ Client /



Server  และมีการเชื่อมต่อ (connect) กับฐานข้อมูลทุกครั้งที่มีการใช้งาน
ภาพแสดงหน้าต่างโปรแกรมการจัดการฐานข้อมูล Microsoft SQL Server 2000

3. MySQL

        โปรแกรม MySQL   เป็นโปรแกรมการจัดการฐานข้อมูลอีกโปรแกรมหนึ่งที่ใช้ภาษา   SQL  เป็นที่นิยมและรู้จักกันในวงการ  DBMS อย่างกว้างขวาง   ซึ่งนักบริหารฐานข้อมูลนิยมใช้กันมากในปัจจุบัน   เพราะใช้งานได้ดีในระบบปฏิบัติการทุกชนิด  โดยเฉพาะอย่างยิ่งในระบบปฏิบัติการลีนุกซ์  ซึ่งรองรับ  My SQL  ได้เป็นอย่างดี MySQL เป็นโปรแกรมบริหารจัดการด้านฐานข้อมูล (Database Management)
               
         MySQL ทำงานในลักษณะฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System : RDBMS)   คำว่า ฐานข้อมูลเชิงสัมพันธ์ ก็คือ ฐานข้อมูลที่แยกข้อมูลไปเก็บเอาไว้ในหน่วยย่อย ซึ่งเรียกว่าตารางข้อมูล   (Table)  แทนที่จะเก็บข้อมูลทั้งหมดรวมกันเอาไว้แห่งเดียว    และแต่ละหน่วยย่อยที่ใช้เก็บข้อมูลต่างมีความสัมพันธ์เชื่อมโยงกันอยู่ ยกตัวอย่างเช่น ข้อมูลสินค้า ซึ่งสามารถจัดเก็บแยกกันได้ แล้วอาศัยรหัสของสินค้าในการเรียกค้นข้อมูลที่จัดเก็บแยกกันเอาไว้ การที่เราจะเข้าไปจัดการกับข้อมูล ต้องอาศัยภาษาคอมพิวเตอร์ที่เรียกว่า  SQL   ซึ่งย่อมาจาก Structure Query Language ชื่อ MySQL ก็สื่อให้ทราบว่าเกี่ยวกับภาษา SQL อยู่แล้ว ดังนั้น MySQL จึงทำงานตามคำสั่งภาษา   SQL  ได้ อันเป็นไปตามมาตรฐานของโปรแกรมทางด้านฐานข้อมูลที่จะต้องมีความสามารถรองรับคำสั่งที่เป็นภาษา SQL
      
        MySQL เป็นโปรแกรมที่เปิดเผยรายละเอียดซอร์สโค้ดต่อบุคคลทั่วไป   (Open Source Software)   ซึ่งหมายความว่า ใครก็ตามที่มีความรู้ทางด้านภาษาคอมพิวเตอร์อย่างดีก็สามารถนำเอาซอร์สโค้ดของโปรแกรม   MySQL  ซึ่งเขียนด้วยภาษา C ไปดัดแปลง ปรับปรุง แก้ไข ให้ตรงกับที่ต้องการได้ทันทีโดยไม่ผิดกฎหมาย ใช้ได้กับระบบปฏิบัติการหลากหลายระบบ เช่น Linux, Solaris,  Mac OS X Server,  OS/2   Warp, Sun OS,  Windows 9x/NT/2000/XP และระบบตระกูล Unix อีกมากมาย ซึ่งทุกระบบปฏิบัติการสามารถเชื่อมโยงและแลกเปลี่ยนข้อมูลกันได้เป็นอย่างดี


ภาพที่ 4.13 ตัวอย่างหน้าต่างของโปรแกรม MySQL  (www.MySQL.com)


    ปัจจัยสำคัญอยู่ที่การออกแบบฐานข้อมูล  ซึ่งผู้ใช้งานต้องเข้าใจถึงโครงสร้างเชิงตรรกะของข้อมูลด้วย  จึงจะนำไปประยุกต์ใช้งานได้อย่างเหมาะสม 



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

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