วันพุธที่ 26 พฤศจิกายน พ.ศ. 2557

ฟังก์ชัน PHP

ฟังก์ชันใน PHP



           
     ฟังก์ชันในโปรแกรมส่วนใหญ่ได้รับการเรียกคำสั่งเพื่อทำงานอย่างเดียว สิ่งนี้ทำให้คำสั่งอ่านได้ง่ายและยอมให้ใช้คำสั่งใหม่แต่ละครั้งเมื่อต้องการทำงานเดียวกัน ฟังก์ชันเป็นโมดูลเก็บคำสั่ง
ที่กำหนดการเรียกอินเตอร์เฟซ ทำงานดียวกัน และตัวเลือกส่งออกค่าจากการเรียกฟังก์ชัน คำสั่งต่อไปเป็นการเรียกฟังก์ชันอย่างง่าย การประกาศฟังก์ชันเริ่มต้นด้วยคีย์เวิร์ด function กำหนดชื่อฟังก์ชัน พารามิเตอร์ที่ต้องการ และเก็บคำสั่งที่จะประมวลผล
แต่ละครั้งเมื่อเรียกฟังก์ชันนี้  เริ่มต้นด้วย function ดังนั้นผู้อ่าน
และตัวกระจาย PHP ทราบว่าต่อไปเป็นฟังก์ชันกำหนดเอง 
ชื่อฟังก์ชันคือ my_function การเรียกฟังก์ชันนี้ใช้ประโยคคำสั่งนี้
my_function ();     การเรียกฟังก์ชันนี้จะให้ผลลัพธ์เป็นข้อความ "my function ได้รับการเรียก " บน browser


การตั้งชื่อฟังก์ชัน

      สิ่งสำคัญมากในการพิจารณาเมื่อตั้งชื่อฟังก์ชันคือชื่อต้องสั้น
แต่มีความหมาย ถ้าฟังก์ชันสร้างส่วนตัวของเพจควรตั้งชื่อเป็น pageheader () หรือ page_header ()


ข้อจำกัดในการตั้งชื่อคือ
       ฟังก์ชันไม่สามารถมีชื่อเดียวกับฟังก์ชันที่มีอยู่   ชื่อฟังก์ชันสามารถมีได้เพียงตัวอักษรตัวเลข และ underscore  ชื่อฟังก์ชัน
ไม่สามารถเริ่มต้นด้วยตัวเลขหลายภาษายอมให้ใช้ชื่อฟังก์ชันได้อีก ส่วนการทำงานนี้เรียกว่า function overload อย่างไรก็ตาม PHPไม่สนับสนุน function overload ดังนั้นฟังก์ชันไม่สามารถมีชื่อเดียวกันกับฟังก์ชันภายใน หรือฟังก์ชันกำหนดเองที่มีอยู่
หมายเหตุ ถึงแม้ว่าทุกสคริปต์ PHP รู้จักฟังก์ชันภายในทั้งหมด ฟังก์ชันกำหนดเองอยู่เฉพาะในสคริปต์ที่ประกาศสิ่งนี้หมายความว่า ชื่อฟังก์ชันสามารถใช้ในคนละไฟล์แต่อาจจะไปสู่ความสับสน และควรหลีกเลียง
          การเรียกฟังก์ชันไม่มีผลจากชนิดตัวพิมพ์ ดังนั้นการเรียก function_name (),
Function_Name() หรือ FUNCTION_NAME() สามารถทำได้และมีผลลัพธ์เหมือนกัน แต่แบบแผนการกำหนดชื่อฟังก์ชันใน PHP ให้ใช้ตัวพิมพ์เล็ก   ชื่อฟังก์ชันแตกต่างจากชื่อตัวแปร โดยชื่อตัวแปรเป็นชนิดตัวพิมพ์มีผล ดังนั้น $Name และ$name เป็น 2ตัวแปร แต่ Name () และ name () เป็นฟังก์ชันเดียวกัน
การเรียกฟังก์ชันไม่มีผลจากชนิดตัวพิมพ์ ดังนั้นการเรียก function_name (), Function_Name() หรือFUNCTION_NAME() สามารถทำได้และมีผลลัพธ์เหมือนกัน แต่แบบแผนการกำหนดชื่อฟังก์ชันใน PHPให้ใช้ตัวพิมพ์เล็ก
            ชื่อฟังก์ชันแตกต่างจากชื่อตัวแปร โดยชื่อตัวแปรเป็นชนิดตัวพิมพ์มีผล ดังนั้น $Name และ$name เป็น 2 ตัวแปร แต่ Name () และ name () เป็นฟังก์ชันเดียวกัน

การหยุดประมวลผลภายในฟังก์ชัน

            คีย์เวิร์ด return หยุดการประมวลผลฟังก์ชัน ฟังก์ชันสิ้นสุดได้เพราะประโยคคำสั่งทั้งหมดได้รับการประมวลผล หรือ ใช้คีย์เวิร์ด return การประมวลผลกลับไปยังประโยคคำสั่งต่อจากการเรียกฟังก์ชัน
ถ้าประโยคคำสั่ง return ได้รับการประมวลผล บรรทัดคำสั่งต่อไปในฟังก์ชันจะถูกข้ามไป และกลับไปยังผู้เรียกฟังก์ชันนี้ ในฟังก์ชันนี้ ถ้า y เป็น 0 จะหยุดการประมวลผล ถ้า y ไม่เท่ากับ 0 จะคำนวณผลหาร
สมมติป้อนค่าเป็น
x = 4, y = 0
x = 4
x = 4, y = 2
ผลลัพธ์ของคำสั่ง คือ
x = 4, y = 0 ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = 2 ผลลัพธ์ 2

การเรียกฟังก์ชัน

เมื่อฟังก์ชันได้รับการประกาศหรือสร้างขึ้นแล้ว การเรียกฟังก์ชันสามารถเรียกมาจากที่ใดๆ ภายในสคริปต์ หรือ จากไฟล์ที่มีการรวมด้วยประโยคคำสั่ง include() หรือ require()
            พารามิเตอร์ที่ส่งไปยังฟังก์ชันแยกกันเครื่องหมายจุลภาคภายในวงเล็บ โดยสามารถส่งเป็นนิพจน์สำหรับแต่ละพารามิเตอร์ด้วย ตัวแปร ค่าคงที่ ผลลัพธ์จากการคำนวณ รวมถึงการเรียฟังก์ชัน   scope ของพารามิเตอร์จำกัดภายในฟังก์ชัน ถ้าชื่อตัวแปรเหมือนกับตัวแปรใน scope ระดับอื่น พารามิเตอร์นี้ "ระบุเป็นตัวแปรภายในที่ไม่มีผลกับตัวแปรภายนอกฟังก์ชัน

การส่งผ่านโดยค่า(By Value)

ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน

การส่งผ่านโดยค่า(By Value)

ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน

การส่งผ่านโดยการอ้างอิง (By Reference)
ตามตัวอย่างฟังก์ชัน new_value ถ้าต้องการให้ฟังก์ชันเปลี่ยนแปลงค่าได้ มีวิธีหนึ่งในการแก้ไขคือ ประกาศ $value ในฟังก์ชันเป็น global แต่หมายความว่าในการใช้ฟังก์ชันนี้ ตัวแปรที่ต้องการเพิ่มค่าต้องตั้งชื่อเป็น $value แต่มีวิธีดีกว่าคือ ใช้การส่งผ่านโดยการอ้างอิง
การอ้างอิงไปตัวแปรต้นทางแทนที่มีค่าของตัวเอง การปรับปรุงไปยังการอ้างอิงจะมีผลกับตัวแปรต้นทางด้วย
การระบุพารามิเตอร์ที่ใช้การส่งผ่านโดยการอ้างอิงให้วาง ampersand (&) หน้าชื่อพารามิเตอร์ในข้อกำหนดฟังก์ชัน
คำสั่งทดสอบฟังก์ชัน ให้พิมพ์ 10 ก่อนการเรียก increment () และ 11 ภายหลัง
ในการส่งค่าโดยการอ้างอิงต้องส่งเป็นตัวแปรไม่สามารถกำหนดค่าคงที่โดยตรง

จำนวนตัวแปรของพารามิเตอร์

การส่งผ่านพารามิเตอร์ไปยังฟังก์ชันนั้น การควบคุมของ PHP ได้กำหนดฟังก์ชันจำนวนหนึ่งให้ยอมรับจำนวนตัวแปรของพารามิเตอร์ ได้แก่ func_num_args, func_get_arg และ func_get_args
func_num_args() บอกจำนวนพารามิเตอร์ไปยังฟังก์ชันที่เรียก func_get_arg() แสดงค่าของพารามิเตอร์ตามดัชนี และ func_get_args() ส่งออก array ของพารามิเตอร์


ตัวแปรระดับ global

ถ้าต้องการนำตัวแปรระดับ global มาใช้ภายในฟังก์ชันต้องประกาศด้วยคีย์เวิร์ด global ก่อนประโยคคำสั่งที่ใช้ตัวแปรนั้น ตัวอย่าง ฟังก์ชัน show_value() ใช้ $newline จากภายนอกฟังก์ชัน
global $newline;


ตัวแปรสถิตย์

การประกาศตัวแปรสถิตย์ใช้ คีย์เวิร์ด static เมื่อมีการเรียกใช้ฟังก์ชัน โปรแกรมจะกำหนดค่าตัวแปรตามที่ระบุเพียงครั้งเดียว ถ้าเรียกซ้ำอย่างต่อเนื่องค่านี้จะเปลี่ยนแปลงตามการคำนวณ
ผลลัพธ์
6 7 8 9
ค่าของตัวแปรสถิตย์ได้รับการตั้งทุกครั้งเมื่อเรียกใช้ในครั้งต่อไป


การส่งออกค่าจากฟังก์ชัน

            การส่งค่าออกจากฟังก์ชันใช้คีย์เวิร์ด RETURN เช่นเดียวกับการออกจากฟังก์ชันได้ ถ้าไม่มีการระบุส่งออกฟังก์ชันจะส่งค่า NULL    ฟังก์ชันที่ทำงานอาจเดียว แต่ไม่จำเป็นต้องส่งออกค่า มักจะส่งออก TRUE หรือ FALSE เพื่อระบุความสำเร็จหรือล้มเหลว ค่า TRUE หรือ FALSE สามารถได้รับการแสดงแทนด้วย 1 หรือ 0

RECURSION
            RECURSION ได้รับการสนับสนุนใน PHP ฟังก์ชันชนิดนี้เป็นการเรียกตัวเองและเป็นประโยชน์กับการบังคับโครงสร้างข้อมูลไดนามิคส์ เช่น รายการเชื่อมโยงและโครงสร้างต้นไม้ (TREE)
โปรแกรมประยุกต์เว็บจำนวนไม่มากต้องการโครงสร้างข้อมูลซับซ้อนมากและจำกัดการใช้ เนื่องจากRECURSION ช้ากว่าและใช้หน่วยความจำมากกว่าการทำงานวนรอบ ดังนั้นควรเลือกการทำงานแบบวนรอบปกติ ถ้าเป็นไปได้   รายการคำสั่งของ 2 ฟังก์ชันนี้จะพิมพ์ข้อความย้อนกลับ ฟังก์ชัน WORD_REVERSE_R เป็นRECURSION ฟังก์ชัน WORD_REVERSE_I เป็นการวนรอบ    ฟังก์ชัน WORD_REVERSE_R ใช้ข้อความเป็นพารามิเตอร์ เมื่อมีการเรียกฟังก์ชันนี้ จะเกิดการเรียกตัวเองแต่ละครั้งส่งผ่านตัวอักษรที่ 2 ไปถึงตัวอักษรสุดท้าย    การเรียกฟังก์ชันแต่ละครั้งจะทำสำเนาใหม่ของคำสั่งในหน่วยความจำของแม่ข่าย แต่ด้วยพารามิเตอร์ต่างกัน ดังนั้นจึงเหมือนกับการเรียกคนละฟังก์ชัน

วันอังคารที่ 11 พฤศจิกายน พ.ศ. 2557

ฐานข้อมูล

ความหมายของระบบฐานข้อมูล

             ฐานข้อมูล (Database)

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

             องค์ประกอบของระบบฐานข้อมูล

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

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

             ระบบจัดการฐานข้อมูล
ระบบจัดการฐานข้อมูล หมายถึง กลุ่มโปรแกรมหรือซอฟต์แวร์ชนิดหนึ่ง ที่สร้างขึ้นมาเพื่อทำหน้าที่บริหารฐานข้อมูลโดยตรง ให้มีประสิทธิภาพมากที่สุด เป็นเครื่องมือที่ช่วยอำนวยความสะดวกให้ผู้ใช้สามารถเข้าถึงข้อมูลได้ โดยที่ผู้ใช้ไม่จำเป็นต้องรับรู้เกี่ยวกับรายละเอียดภายในโครงสร้างฐานข้อมูล พูดง่าย ๆ ก็คือ DBMS นี้เป็นตัวกลางในการเชื่อมโยงระหว่างผู้ใช้ และโปรแกรมต่างๆ ที่เกี่ยวข้องกับระบบฐานข้อมูล ตัวอย่างของ DBMS ที่นิยมใช้ในปัจจุบัน ได้แก่ Microsoft Access, FoxPro, SQL Server, Oracle, Informix, DB2 เป็นต้น

             ดาต้าเบสเซิร์ฟเวอร์
เป็นคอมพิวเตอร์ที่คอยให้บริการการจัดการฐานข้อมูล ซึ่งก็คือเครื่องคอมพิวเตอร์ที่ระบบจัดการฐานข้อมูลทำงานอยู่นั่นเอง เพราะฉะนั้นควรเป็นคอมพิวเตอร์ที่มีความรวดเร็วในการทำงานสูงกว่าคอมพิวเตอร์ที่ใช้งานโดยทั่วไป

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

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

หน้าที่ของระบบจัดการฐานข้อมูล

            1.กำหนดมาตรฐานข้อมูล
            2. ควบคุมการเข้าถึงข้อมูลแบบต่าง ๆ
            3.ดูแล-จัดเก็บข้อมูลให้มีความถูกต้องแม่นยำ
            4.จัดเรื่องการสำรอง และฟื้นสภาพแฟ้มข้อมูล
            5. จัดระเบียบแฟ้มทางกายภาพ (Physical Organization)
            6. รักษาความปลอดภัยของข้อมูลภายในฐานข้อมูล และป้องกันไม่ใช้ข้อมูลสูญหาย
            7. บำรุงรักษาฐานข้อมูลให้เป็นอิสระจากโปรแกรมแอพพลิเคชันอื่น ๆ
            8. เชื่อมโยงข้อมูลที่มีความสัมพันธ์เข้าด้วยกัน เพื่อรองรับความต้องการใช้ข้อมูลในระดับต่าง ๆ

ประโยชน์ของระบบฐานข้อมูล

             ลดความซ้ำซ้อนของข้อมูล
เนื่องจากการใช้งานระบบฐานข้อมูลนั้นต้องมีการออกแบบฐานข้อมูลเพื่อให้มีความซ้ำซ้อนของข้อมูลน้อยที่สุด จุดประสงค์หลักของการออกแบบฐานข้อมูลเพื่อการลดความซ้ำซ้อน

             รักษาความถูกต้องของข้อมูล
เนื่องจากระบบจัดการฐานข้อมูลสามารถตรวจสอบกฎบังคับความถูกต้องของข้อมูลให้ได้ โดยนำกฎเหล่านั้นมาไว้ที่ฐานข้อมูล ซึ่งถือเป็นหน้าที่ของระบบจัดการฐานข้อมูลที่จะจัดการเรื่องความถูกต้องของข้อมูลให้แทน

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

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

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


Credit : http://mpnn2551.net46.net/Subjects/DBMS32042014/dataBaseIntro.html
           : http://kwangmju.wordpress.com/2012/07/13

Oracle


       Oracle คือ โปรแกรมจัดการฐานข้อมูล ผลิตโดยบริษัทออราเคิล ซึ่งเป็นโปรแกรมจัดการฐานข้อมูลเชิงสัมพันธ์ หรือ DBMS (Relational Database Management System) ตัวโปรแกรมนี้จะทำหน้าที่เป็นตัวกลางคอยติดต่อ ประสาน ระหว่างผู้ใช้และฐานข้อมูล ทำให้ผู้ใช้งานสามารถใช้งานฐานข้อมูลได้สะดวกขึ้น เช่นการค้นหาข้อมูลต่างๆภายในฐานข้อมูลที่ง่ายและสะดวก โดยผู้ใช้ไม่จำเป็นต้องทราบถึงโครงสร้างภายในของฐานข้อมูลก็สามารถเข้าใช้ฐานข้อมูลนั้นได้





ข้อดีของ Oracle

1.เทคโนโลยี Rollback Segment ถูกนำมาใช้ในโปรแกรม Oracle ประโยชน์ Rollback Segment คือ สามารถจัดการกับข้อมูลในกรณีที่เกิดการล้มเหลวของระบบ หรือภาวะระบบไม่สามารถให้บริการได้ ด้วยเทคโนโลยีRollback Segment จะจัดการ Instance Recovery ข้อมูลไม่ให้เกิดความเสียหายอันเนื่องมาจาก การล้มเหลวของระบบ ได้อย่างดีมาก

2. Oracle ยังมีส่วนที่เรียกว่า Timestamp ทำงานเกี่ยวข้องกับ Concurrency Control เป็นส่วนที่จัดการการทำงานกับหลาย ๆ Transaction ในเวลาเดียวกัน โดยทุก ๆ Transaction จะมี Timestamp เป็นตัวกำหนดเวลาเริ่มต้นของการประมวลผล (Process) ซึ่งช่วยในการขจัดปัญหาหลักของ Concurrency Problems

3.Oracle ใช้ได้กับฐานข้อมูลกว่า 80 แพลตฟอร์ม ซึ่งครอบคลุมเกือบทุกแพลตฟอร์มที่มีอยู่ในปัจจุบัน เริ่มตั้งแต่เครื่องคอมพิวเตอร์บนเมนเฟรม, มินิคอมพิวเตอร์, พีซี บนระบบปฏิบัติการตั้งแต่ Window 9x, NT, Window CE, UNIX, SOLARIS, LINUX  โดยที่ในทุกพอร์ตมีโครงสร้างการเหมือนกันๆหมด คำสั่งที่ใช้ก็เป็นแบบเดียวกัน สามารถทำงานร่วมกันได้ สามารถนำข้อมูลจากพอร์ตหนึ่งไปพอร์ตอื่นได้อย่างไม่มีปัญหา

ประเภทของ Oracle
1. Personal Oracle
2. Oracle Server

ทั้ง 2 แบบนี้มีลักษณะการใช้งานและคำสั่งเหมือนกัน แต่ต่างกันที่ Personal Oracle คือฐานข้อมูลที่เมื่อติดตั้งบนเครื่องคอมพิวเตอร์แล้ว ผู้ใช้จะต้องนั่งทำงานกับ Oracle นี้ที่หน้าเครื่องท่านั้น ส่วนของ Oracle Server คือ ฐานข้อมูลในลักษณะเซิร์ฟเวอร์ คือเครื่องคอมพิวเตอร์ที่ติดตั้งโปรแกรมของ Oracle Server ไว้ และยอมให้ผู้ใช้งานเรียกฐานข้อมูล หรือจัดการกับข้อมูลจากเครื่องคอมพิวเตอร์อื่น ๆ ได้(เรียกเครื่องอื่นๆ เป็นไคลเอนต์) ดังนั้นถ้าต้องการให้มีผู้เรียกใช้ข้อมูลจากฐานข้อมูลหลาย ๆ คนได้ ก็ควรต้องเลือกแบบที่เป็น Oracle Server

SQL Server


        SQL Server เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (relational database management system หรือ RDBMS) จาก Microsoft ที่ได้รับการออกแบบสำหรับสภาพแวดล้อมวิสาหกิจ SQL Server เรียกใช้บน T-SQL (Transact -SQL) ชุดของส่วนขยายโปรแกรมจาก Sybase และ Microsoft ที่เพิ่มหลายส่วนการทำงานจาก SQL มาตรฐาน รวมถึงการควบคุมทรานแซคชัน, exception และการควบคุมความผิดพลาด, การประมวลผลแถว และการประกาศตัวแปร

         Yukon เป็นชื่อรหัสในการพัฒนา SQL Server 2005 ได้รับการเผยแพร่ในเดือนพฤศจิกายน 2548 ผลิตภัณฑ์ 2005 ได้รับการกล่าวว่าให้ความยืดหยุ่น ความสามารถเชิงปริมาณ ความน่าเชื่อถือ และความปลอดภัยกับการประยุกต์ฐานข้อมูล และทำให้สร้างและจัดวางง่ายขึ้น ดังนั้น จึงลดความซับซ้อนและความน่าเบื่อเกี่ยวกับการจัดการฐานข้อมูล SQL Server 2005 รวมการสนับสนุนการบริหารมากขึ้นด้วย

         ต้นกำเนิดคำสั่ง SQL Server ได้รับการพัฒนาโดย Sybase ในปลายทศวรรษ 1980 Microsoft, Sybase และ Ashton-Tate รวมมือในการผลิตเวอร์ชันแรกของผลิตภัณฑ์นี้เวอร์ชันแรก SQL Server 4.2 สำหรับ OS/2 นอกจากนี้ ทั้ง Sybase และ Microsoft เสนอผลิตภัณฑ์ SQL Server โดย Sybase เปลี่ยนชื่อผลิตภัณฑ์ของพวกเขาเป็น Adaptive Server Enterprise


MySql

 
            MySql คือ ระบบจัดการฐานข้อมูลที่มีหน้าที่เก็บข้อมูล  เพื่อใช้ในการเก็บข้อมูลที่ได้จากระบบงานที่โปรแกรมเมอร์ได้สร้างขึ้น  โดยใช้ภาษา SQL  (SQLคือภาษาที่ใช้ในการจัดการกับฐานข้อมูลโดยเฉพาะ เช่น สร้างฐานข้อมูล เพิ่มข้อมูล แก้ไขข้อมูล ลบข้อมูล เป็นต้น )โดย MySql จะทำหน้าที่เป็นตัวกลางระหว่างผู้ใช้กับฐานข้อมูล ซึ่ง MySQL เป็นระบบจัดการฐานข้อมูล (database management system DBMS) สำหรับฐานข้อมูลเชิงสัมพันธ์ โดยเราสามารถติดต่อกับ MySQL โดยการเขียนโปรแกรมภาษาต่าง ๆ ได้เช่น PHP, Perl, Java, C#, C, Ruby, C++ เป็นต้น

MySQL เป็นโปรแกรมที่เปิดเผยรายละเอียดซอร์สโค้ด(Opensource)
หมายความว่า ใครที่สนใจพัฒนา MySql และสามารถเขียนโปรแกรมด้วยภาษา C ได้ ก็สามารถนำเอาซอร์สโค้ด ของโปรแกรม MySQL ซึ่งเขียนด้วยภาษา C ไปดัดแปลง ปรับปรุง แก้ไข ให้ตรงกับที่ต้องการได้ทันทีโดยไม่ผิดกฎหมาย ใช้ได้กับทุกระบบปฏิบัติการ

ข้อดี ข้อเสีย ของ MySQL เมื่อเปรียบเทียบกับ Access และ Sql Server

ข้อดี
-สามารถเอาซอร์โค้ดโปรแกรมมาพัฒนาต่อยอดได้
-สามารถนำไปใช้ได้กับทุกระบบทุกแพลตฟอร์ม ใช้กับ ASP,JSP ก็ได้ แต่ที่เรานิยมเอามาใช้งานร่วมกับ PHP ก็เพราะว่า MySQL กับ PHP เป็น Open Source เหมือนกัน มีความน่าเชื่อถือสูง สามารถทำงานร่วมกันได้อย่างเสถียรมากที่สุด รองรับการใช้งานหลายแพลตฟอร์ม และค่าใช้จ่ายน้อย

-  เนื่องจากเป็นที่นิยมจึงสามารถ หาข้อมูลการใช้งานได้ง่าย (หาง่ายกว่า Access , SQL server )
-  ใช้ทรัพยากรเครื่องน้อย performance สูง
-  มีผู้ให้บริการServerส่วนใหญ่ รองรับฐานข้อมูล MySql มากกว่าฐานข้อมูลแบบอื่น

ข้อเสีย
-  ใช้งานยากกว่าสองตัวข้างต้น ซึ่งจะเป็นการสร้างฐานข้อมูลด้วย Command line แบบพิมพ์คำสั่ง                
แต่ก็ในปัจจุบันมี เครื่องมือช่วยออกแบบฐานข้อมูลแบบมีหน้าจอGUI  ที่เรียกว่า phpmyadmin                  
ที่ช่วยในการสร้างMySql ได้อย่างง่ายขึ้น ซึ่งสามารถโหลดเพิ่มเติมได้
-  เครื่องมือให้ใช้ได้น้อยกว่า(SqlServer,Access)ซึ่ง Mysqlจะเหมาะสำหรับใช้งานในระบบงานขนาดเล็กถึงขนาดกลาง และจะใช้งานได้ดีมากๆถ้าเขียนโปรแกรมติดต่อMySql ด้วยภาษา PHP และติดตั้งลงบน OS Unix platform ซึ่งนอกจากจะไม่เสียตังแล้วยังมีความปลอดภัยสูงอีกด้วย

ความสามารถของ MySQl

        MySQL จะมีความความสามารถครอบคลุมทุกความต้องการของผู้ใช้ในระบบงานขนาดเล็กถึงขนาดกลาง
นั่นหมายความว่า ถ้าฐานข้อมูลประเภทอื่นเช่น Sql Server ,Access ,oracle  ในงานขนาดเล็กหรือขนาดกลาง
จะทำให้ได้รับความสามารถต่างๆของระบบฐานข้อทูล ที่เกินความจำเป็น  ซึ่งถือเป็นการสิ้นเปลืองงบประมาณ
โดย MySql มีความสามารถเด่น ๆ ดังนี้

-MySQL สามารถใช้คำสั่ง SQL ในการสั่งงาน
-ใช้ Kernel Threads ในการทำงานแบบ Multi - threaded
-สนับสนุน  API ต่าง ๆ มากมาย เพื่อใช้ในการพัฒนาระบบ
-MySQL สามารถรันได้ในหลายระบบปฏิบัติการ
-สนับสนุน Group by และ Order by clauses และ Group Fune
-สนับสนุน  Rihgt outer Join และ Left outer Ioin
-มีความยืดหยุ่นสูง ในการกำหนดสิทธิและรหัสผ่านให้มีความปลอดภัย
-สามารถรับรองข้อมูลขนาดใหญ่ ได้ระดับล้านระเบียน
และอื่นๆ


Office Access

      ไมโครซอฟท์แอคเซส (Microsoft Access) คือ โปรแกรมเพื่อพัฒนาระบบฐานข้อมูล มีตารางเก็บข้อมูลและสร้างแบบสอบถามได้ง่าย มีวัตถุคอนโทลให้เรียกใช้ในรายงานและฟอร์ม สร้างมาโครและโมดูลด้วยภาษาเบสิก เพื่อประมวลผลตามหลักภาษาโครงสร้าง สามารถใช้โปรแกรมนี้เป็นเพียงระบบฐานข้อมูลให้โปรแกรมจากภายนอกเรียกใช้ก็ได้ ไมโครซอฟท์แอคเซส (Microsoft Access) ต่างกับ วิชวลเบสิก (Visual Basic) หรือ วิชวลเบสิกดอทเน็ต (Visual Basic .Net) เพราะ วิชวลเบสิกไม่มีส่วนเก็บข้อมูลในตนเอง แต่สามารถพัฒนาโปรแกรมได้หลากหลาย เช่น พัฒนาโปรแกรมควบคุมอุปกรณ์ โปรแกรมประยุกต์ทางวิทยาศาสตร์ เกมส์ หรือเชื่อมต่อกับระบบฐานข้อมูลภายนอก เป็นภาษาที่เหมาะกับการพัฒนาโปรแกรมประยุกต์ (Application) ส่วนไมโครซอฟท์แอคเซสเหมาะสำหรับนักพัฒนาระบบฐานข้อมูลที่ไม่ต้องการโปรแกรมที่ซับซ้อน ความสามารถของโปรแกรมที่สำคัญคือสร้างตาราง แบบสอบถาม ฟอร์ม หรือรายงานในแฟ้มเดียวกันได้ ด้วยคุณสมบัติพื้นฐานและวิซซาร์ดจึงอำนวยให้พัฒนาโปรแกรมให้แล้วเสร็จได้ในเวลาอันสั้น มีเครื่องมือที่อำนวยความสะดวกในการพัฒนาระบบฐานข้อมูลอย่างครบถ้วน

การใช้ Access จะทำให้คุณสามารถ
1.  เพิ่มข้อมูลใหม่ลงในฐานข้อมูล เช่น รายการใหม่ในสินค้าคงคลัง
2.  แก้ไขข้อมูลที่มีอยู่ในฐานข้อมูล เช่น การเปลี่ยนตำแหน่งที่ตั้งปัจจุบันของรายการ
3.  ลบข้อมูล ถ้ารายการถูกขายออกหรือละทิ้งแล้ว
4   จัดระเบียบและดูข้อมูลด้วยวิธีต่างๆ
5.  ใช้ข้อมูลร่วมกันกับผู้อื่นผ่าานทางรายงาน ข้อความอีเมล อินทราเน็ต หรืออินเทอร์เน็ต

      Access ประกอบด้วย

      -Table ทำหน้าที่ในการเก็บข้อมูล และเป็นแหล่งข้อมูล (Data source) ของอ๊อบเจคอื่น ได้แก่ คิวรี่ ฟอร์ม และรายงาน
      -คิวรี่ (Query) เป็นอ๊อบเจคที่สำคัญมาก นอกจากจะเป็นแหล่งข้อมูลให้กับฟอร์ม และรายงาน คิวรี่ มีชุดคำสั่งในการประมวลผล เช่น การเรียงลำดับ การหาผลรวม การคำนวณด้วยฟังก์ชัน การกำหนดเงื่อนไขคัดเลือกข้อมูล รวมถึงการแสดงผล โดยเรียกข้อมูลจากหลายๆ Table ที่สัมพันธ์กัน ออกมาเป็นกลุ่มข้อมูลเดียวกัน (Recordset)
      -ฟอร์ม(Form) เป็นอ๊อบเจคที่ทำหน้าที่เป็นส่วนติดต่อ กับผู้ใช้ผ่านจอภาพ ทำหน้าที่ได้ทั้งการป้อนข้อมูล และแสดงผล โดยเฉพาะการป้อนข้อมูล จะทำหน้าที่ได้ดีกว่า Table และคิวรี่ เพราะมีเครื่องมือต่างๆ อำนวยความสะดวก ในการป้อนข้อมูล และการควบคุมความถูกต้องของค่า
      -รายงาน (Report) เป็นการแสดงผลลัพธ์ที่ได้ทำการประมวลแล้วออกมาทางเครื่องพิมพ์
      -มาโคร (Macro) เป็นชุดคำสั่งแบบสำเร็จรูป เพื่อจัดการและบริหารอ๊อบเจคของ Access เป็นส่วนที่ทำให้มีความสะดวกกับผู้พัฒนาโปรแกรม ในการสร้างชุดคำสั่งอย่างมาก
      -โมดูล (Module) เป็นส่วนที่ให้ผู้พัฒนาโปรแกรม เขียนชุดคำสั่งได้เอง ด้วยภาษา Visual Basic เพื่อใช้ เป็นคำสั่งควบคุม การคำนวณ และฟังก์ชันในการคำนวณ
      -เพจ (Access data page) เป็นอ๊อบเจคที่ทำหน้าที่เป็น ส่วนติดต่อกับผู้ใช้ในแบบ Home page เพื่อใช้งานกับเว็บ ซึ่งมีลักษณะคล้ายกับฟอร์ม

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


ชนิดของฟิลด์


DATETIME : เป็นฟิลด์ชนิดที่เหมาะสมกับการเก็บข้อมูลวันที่ และเวลา สมดังชื่อของมันนั่นแหละ โดยจะเก็บได้ตั้งแต่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถึง 31ธันวาคม ค.ศ. 9999 เวลา 23:59:59 โดยรูปแบบการแสดงผล เวลาที่ทำการสืบค้น (query) ออกมา จะเป็น YYYY-MM-DD HH:MM:SS

TIMESTAMP[(M)] : เอาไว้เก็บเวลาเช่นกัน แต่จะเก็บในรูปแบบของ YYYYMMDDHHMMSS หรือ YYMMDDHHMMSS หรือ YYYYMMDD หรือYYMMDD แล้วแต่ว่าเราจะระบุค่า M เป็น 14, 12, 8 หรือ 6 ตามลำดับ โดยความเห็นส่วนตัวของผมแล้ว การเก็บค่า วันเดือนปี และเวลา ในรูปแบบนี้มันเอาไปใช้งานสะดวกดี เราสามารถเก็บได้ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 ไปจนถึงแถวๆ ปี ค.ศ.2037

TIME : อันนี้เอาไว้เก็บเวลา มีค่าได้ตั้งแต่ -838:59:59 ไปจนถึง 838:59:59 โดยจะแสดงผลออกมาในรูปแบบ HH:MM:SS

YEAR[(2/4)] : อันนี้ก็สมดังชื่อ คือเอาไว้เก็บปี ในรูปแบบ YYYY หรือ YY แล้วแต่ว่าจะเลือก 2 หรือ 4 (หากไม่ระบุ จะถือว่าเป็น 4 หลัก) โดยหากเลือกเป็น 4 หลัก จะเก็บค่าได้ตั้งแต่ ค.ศ. 1901 ถึง 2155 แต่หากเป็น 2 หลัก จะเก็บตั้งแต่ ค.ศ. 1970 ถึง 2069

CHAR : เป็นข้อมูลประเภท string แบบที่ถูกจำกัดความกว้างเอาไว้คือ 255 ตัวอักษร ไม่สามารถปรับเปลี่ยนได้เหมือนกับ VARCHAR หากเราทำการสืบค้นโดยเรียงตามลำดับ มันก็จะเรียงข้อมูลแบบ case-sensitive คือ คำนึงถึงตัวอักษรเล็ก และใหญ่ เว้นเสียแต่เราจะกำหนดแอตทริบิวต์เป็น BINARY ที่จะทำให้การเรียงข้อมูลเป็นแบบ non case-sensitive คือ ตัวอักษรใหญ่ และเล็ก มีค่าเท่ากัน

TINYBLOB : ฟิลด์ชนิด BLOB นั้นจะมีไว้เพื่อเก็บข้อมูลประเภทไบนารี พูดง่ายๆ คือพวก ไฟล์ข้อมูลต่างๆ, ไฟล์รูปภาพ, ไฟล์มัลติมีเดีย เป็นต้น คือไฟล์อะไรก็ตามที่อัพโหลดผ่านฟอร์มอัพโหลดไฟล์ในภาษา HTML ประมาณนั้น (จะกล่าวถึงภายหลังแน่นอน ตอนที่จะลองประยุกต์พัฒนาเว็บแอปพลิเคชันสักตัว) โดย TINYBLOB นั้นจะมีเนื้อที่ให้เก็บข้อมูลได้ 256 ไบต์

TINYTEXT : ในกรณีที่ข้อความยาวๆ หรือต้องการที่จะค้นหาข้อความ โดยอาศัยฟีเจอร์ FULL TEXT SEARCH ของ MySQL (จะกล่าวถึงในตอนประยุกต์การพัฒนาเว็บบอร์ด) เราอาจจะเลือกที่จะไม่เก็บข้อมูลลงในฟิลด์ประเภท VARCHAR ที่มีข้อจำกัดแค่ 256 ตัวอักษร แต่เราจะเก็บลงฟิลด์ประเภท TEXT แทน (ต้องขออภัยที่ผมลืมอธิบายส่วนนี้ ตอนที่พูดถึง TEXT)... TINYTEXT นี้ จะให้เราเก็บข้อมูลได้ 256 ตัวอักษร ซึ่งมองเผินๆ ก็ไม่ต่างกับเก็บลงฟิลด์ประเภท CHAR หรือ VARCHAR(255) เลย แต่จริงๆ มันต่างกันตรงที่ มันทำ FULL TEXT SEARCH ได้

BLOB : เหมือน TINYBLOB แต่สามารถเก็บข้อมูลได้ 64KB

MEDIUMBLOB : เหมือน TINYBLOB เช่นกัน แต่เก็บข้อมูลได้ 16MB

MEDIUMTEXT : เหมือน TEXT  แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร 

LONGBLOB : เหมือน TINYBLOB เช่นกัน แต่เก็บข้อมูลได้ 4GB

LONGTEXT : เหมือน TEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร

MEDIUMINT : เช่นเดียวกับ SMALLINT แต่จะมีขนาดใหญ่ขึ้นมาอีก ก็คือ 24 บิต นั่นก็หมายความว่าสามารถเก็บข้อมูลตัวเลขได้ตั้งแต่ -8388608 ไปจนถึง 8388607 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 16777215 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) แน่นอน สามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

INT : เช่นเดียวกับ SMALLINT เช่นกัน แต่งานนี้จะเป็นขนาดปกติคือ 32 บิต หรือสามารถเก็บข้อมูลได้ตั้งแต่ -2147483648 ไปจนถึง 2147483647 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 4294967295 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) แน่นอน สามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

BIGINT : ในกรณีที่ต้องการเก็บค่าตัวเลขแบบเยอะสุดๆ ก็ใช้นี่เลย เก็บข้อมูลแบบ 64บิต สามารถเก็บข้อมูลได้ตั้งแต่ -9223372036854775808 ไปจนถึง9223372036854775807 เลยทีเดียว (แบบคิดเครื่องหมาย) หรือ 0 ถึง18446744073709551615 สามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT 

FLOAT[(M,D)] : ที่กล่าวถึงไปทั้งหมด ในตระกูล INT นั้นจะเป็นเลขจำนวนเต็ม หากเราบันทึกข้อมูลที่มีเศษทศนิยม มันจะถูกปัดทันที ดังนั้นหากเราต้องการจะเก็บค่าที่เป็นเลขทศนิยม เราต้องเลือกชนิดขอฟิลด์เป็น FLOAT อันนี้จะเก็บข้อมูลแบบ 32 บิต คือมีค่าตั้งแต่ -3.402823466E+38 ไปจนถึง -1.175494351E-38, 0 และ 1.175494351E-38 ถึง3.402823466E+38...

DOUBLE[(M,D)] : ในกรณีที่ต้องการเก็บเลขทศนิยมในระดับที่ละเอียดแบบสุดๆ ไปเลย ก็ต้องเลือกชนิดนี้ เพราะจะเก็บข้อมูลแบบ 64 บิต  สามารถเก็บได้ตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0 และ2.2250738585072014E-308 ถึง 1.7976931348623157E+308 

DECIMAL[(M,D)] : อันนี้ต้องสารภาพตามตรงว่าอ่านจากข้อมูลที่หามาได้ แล้วก็งง คือเขาบอกว่า เป็นข้อมูลชนิดตัวเลขแบบ unpacked คือ อนุญาตให้สามารถเก็บข้อมูลตัวอักษรเข้าไปได้ด้วย แต่จากการที่ผมลองใช้งานดู มันก็ไม่แตกต่างอะไรไปจาก ฟิลด์ชนิด DOUBLE เลย สามารถเก็บข้อมูลได้เท่ากัน และมีการใช้งานที่เหมือนกัน... ผมลองกรอกข้อมูลแบบเป็นตัวเลขปนตัวอักษรไป มันก็ไม่นับตัวอักษร และตัวเลขใดๆ ที่อยู่ตามหลังตัวอักษร

VARCHAR : เอาไว้เก็บข้อมูลประเภทตัวอักษร ทุกครั้งที่เลือกชนิดของฟิลด์เป็นประเภทนี้ จะต้องมีการกำหนดความยาวของข้อมูลลงไปด้วย ซึ่งสามารถกำหนดได้ตั้งแต่ 1 - 255 ฟิลด์ชนิดนี้ เหมาะสำหรับการเก็บข้อมูลสั้นๆ เช่น ชื่อ นามสกุล หรือหัวข้อต่างๆ เป็นต้น... ในส่วนฟิลด์ประเภทนี้ จะสามารถเลือก "แอตทริบิวต์" เป็นBINARY ได้ ปกติแล้วการจัดเรียงข้อมูลเวลาสืบค้น (query) สำหรับ VARCHAR จะเป็นแบบ case-sensitive (ตัวอักษรใหญ่ และเล็กมีความหมายแตกต่างกัน) แต่หากระบุ "แอตทริบิวต์" เป็น BINARY ปุ๊บ การสืบค้นจะไม่คำนึงตัวอักษรว่าจะเป็นตัวใหญ่ หรือตัวเล็ก

TINYINT : ข้อมูลประเภทตัวเลข แต่มีขนาดสูงสุดได้แค่ 8 บิต... ข้อมูลประเภทนี้เราสามารถกำหนดเพิ่มเติมในส่วนของ "แอตทริบิวต์" ได้ว่าจะเลือกเป็น UNSIGNEDหรือ UNSIGNED ZEROFILL

TEXT : เอาไว้เก็บข้อมูลประเภทตัวอักษร แต่สามารถเก็บได้มากขึ้น โดยสูงสุดคือ65,535 ตัวอักษร หรือ 64KB เหมาะสำหรับเก็บข้อมูลพวกเนื้อหาต่างๆ ที่ยาวๆ

DATE : เอาไว้เก็บข้อมูลประเภทวันที่ โดยเก็บได้จาก 1 มกราคม ค.ศ. 1000 ถึง 31ธันวาคม ค.ศ. 9999 โดยจะแสดงผลในรูปแบบ YYYY-MM-DD