วันอังคารที่ 16 ธันวาคม พ.ศ. 2557

คำสั่ง sql

คำสั่ง sql


สร้าง DATABASE

mysql > create database  <ชื่อdatabase>;
 เช่น create database world;

การลบ table ใช้คำสั่ง

 mysql > DELETE FROM <ชื่อtable>;

ก้ไขข้อมูลได้

 mysql > UPDATE <ชื่อtable> 
  SET <ชื่อข้อมูล> = <ข้อมูลใหม่>
  WHERE <เงื่อนไขอื่นๆ>;
 เช่น UPDATE human SET name = ‘HeyGirl’ WHERE name = ‘HeyFemale’;

การสืบค้นข้อมูล หรือการดูข้อมูล

 SELECT <สิ่งที่ต้องการ>
 FROM   <ชื่อtable>
 WHERE <เงื่อนไขอื่นๆ>

 ORDER BY เรียงลำดับข้อมูล การจัดกลุ่มข้อมูล
เรียงลำดับจากมากไปน้อย (descending order)
เช่น SELECT *
 FROM   human
 ORDER BY name;

LEFT JOIN

 คือการ JOIN โดยใช้ตัวทางซ้ายเป็นหลักคือ จะแสดงตัวทางซ้ายทุกตัวและนำข้อมูลขวามาเชื่อม
 SELECT *
 FROM Ltable LEFT JOIN Rtable ON Ltable.id = Rtable.id;

RIGHT JOIN

 คือการ JOIN โดยใช้ตัวทางขวาเป็นหลักคือ จะแสดงตัวทางขวาทุกตัวและนำข้อมูลขวามาเชื่อม
 SELECT *
 FROM Ltable RIGHT JOIN Rtable ON Ltable.id = Rtable.id;

คำสั่งใช้ใหม่และฟังก์ชัน

6. คำสั่งใช้ใหม่และฟังก์ชัน



                  คำสั่งใช้ใหม่ (reuse code) นำไปสู่ความตรงกัน ความน่าเชื่อถือ การบำรุงรักษาได้สะดวก โดยเริ่มจากเทคนิคแบบโมดูลและคำสั่งใช้ใหม่  เริ่มต้นการใช้ require () และ include () เพื่อใช้คำสั่งเดียวกันบนมากกว่าหนึ่งเพจ นี่เป็นคำอธิบายความเหนือกว่าของ server side include
คำสั่งใช้ใหม่

                   เป้าหมายหนึ่งของวิศวกรซอฟต์แวร์คือ การใช้คำสั่งใช้ใหม่ แทนที่การเขียนคำสั่งใหม่ เนื่องจากคำสั่งใช้ใหม่ ลดต้นทุน เพิ่มความน่าเชื่อถือ และปรับปรุงความตรงกันได้สะดวก ในทางทฤษฏี โครงงานใหม่ได้รับการสร้างขึ้นมาโดยการรวมส่วนชุดคำสั่งที่มีอยู่มาใช้ใหม่ และด้วยการพัฒนาน้อยที่สุด

การจัดกลุ่มคำสั่งเข้าสู่ไฟล์


ขั้นตอนแรกในการใช้คำสั่งใหม่คือ กำหนดปัจจัยในพิจารณาเลือกสิ่งที่ควรรวมและแยก มีข้อพิจารณา

จัดกลุ่มการทำงานร่วม


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

                       ฟังก์ชันในโปรแกรมส่วนใหญ่ได้รับการเรียกคำสั่งเพื่อทำงานอย่างเดียว สิ่งนี้ทำให้คำสั่งอ่านได้ง่ายและยอมให้ใช้คำสั่งใหม่แต่ละครั้งเมื่อต้องการทำงานเดียวกัน

                     ฟังก์ชันเป็นโมดูลเก็บคำสั่งที่กำหนดการเรียกอินเตอร์เฟซ ทำงานเดียวกัน และตัวเลือกส่งออกค่าจากการเรียกฟังก์ชัน คำสั่งต่อไปเป็นการเรียกฟังก์ชันอย่างง่าย
my_function ();

คำสั่งเรียกฟังก์ชันชื่อ my_function ที่ไม่ต้องการพารามิเตอร์ และไม่สนใจค่าที่อาจจะส่งออกโดยฟังก์ชันนี้


                      ฟังก์ชันจำนวนมากได้รับการเรียกด้วยวิธีนี้ เช่น ฟังก์ชัน phpinfo () สำหรับแสดงเวอร์ชันติดตั้งของ PHP สารสนเทศเกี่ยวกับ PHP การตั้งค่าแม่ข่ายเว็บ ค่าต่างๆ ของ PHP และตัวแปร ฟังก์ชันนี้ไม่ใช้พารามิเตอร์และโดยทั่วไปไม่สนใจค่าส่งออก ดังนั้นการเรียก phpinfo () จะประกอบขึ้นดังนี้

การควบคุมข้อความ และนิพจน์ปกติ

5. การควบคุมข้อความ และนิพจน์ปกติ




                การประยุกต์กับข้อความของ PHP สำหรับการจัดรูปแบบและควบคุมข้อความ จะกล่าวถึงการใช้ฟังก์ชันข้อความ หรือฟังก์ชันนิพจน์ปกติ (regular expression) เพื่อค้นหาคำ วลี หรือรูปแบบอื่นภายในข้อความ

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

5.1ชุดตัวอักษรและ Unicode

                  ตามปกติ PHP นำเสนอข้อความเป็นตัวอักษร 8 บิตตาม ISO-8859-1 ซึ่งสามารถแสดงได้ 256 ตัวอักษร ดังนั้นจึงไม่สามารถแสดงพยัญชนะที่ต้องการมากกว่านี้ได้ เช่น จีนหรือญี่ปุ่นได้

              PHP มีส่วนขยาย mbstring ช่วยแก้ไขปัญหานี้ ก่อนอื่นควรเรียนรู้เกี่ยวกับ "ชุดตัวอักษร" (Character Set หรือ charset) และการทำงานของคอมพิวเตอร์กับพยัญชนะต่างๆ

5.2การจัดรูปแบบข้อความ


ตามปกติต้องมีการปรับข้อความของผู้ใช้เล็กน้อย (จาก ฟอร์ม HTML) ก่อนการใช้

การตัดข้อความ

              ขั้นตอนแรกในการปรับคือการตัด whitespace ส่วนเกินจากข้อความ ถึงแม้ว่าสิ่งนี้ไม่สำคัญแต่มีประโยชน์ถ้ากำลังเก็บข้อมูลในไฟล์หรือฐานข้อมูล หรือเปรียบเทียบข้อความ
PHP มี 3 ฟังก์ชันสำหรับวัตถุประสงค์นี้ ฟังก์ชัน trim () ใช้ปรับปรุงข้อมูลนำเข้าดังนี้
$name = trim($name);

              ฟังก์ชัน trim () ตัด whitespace จากเริ่มต้นและท้ายข้อความ จากนั้นส่งออกข้อความผลลัพธ์ ตัวอักษรที่ถูกตัดคือ บรรทัดใหม่ (\n) และช่องว่าง

              ฟังก์ชัน ltrim () กำจัด whitespace เฉพาะจากเริ่มต้นข้อความ ฟังก์ชัน chop() กำจัด whitespace จากท้ายข้อความ

5.3การทำงานกับข้อความ


                  PHP มีหลายฟังก์ชันในการควบคุมและประมวลผลข้อความ รวมทั้งมีหลายฟังก์ชันได้รับการ overload เมื่อเปิดโมดูล mbstring สำหรับ multi-byte

การดึงสารสนเทศ


                  PHP มีฟังก์ชันจำนวนหนึ่งในการดึงสารสนเทศของข้อความ ได้แก่ ความยาวและตำแหน่งภายในชุดตัวอักษร

ฟังก์ชัน strlen (mb_strlen)

                        ฟังก์ชัน strlen () สามารถตรวจสอบความยาวของข้อความด้วยการนับตัวอักษร

strlen("กุหลาบ สายประดิษฐ์ เจ้าของนามปากกา ศรีบูรพา");
ข้อความนี้นับได้ 43 ตัวอักษร
 mb_strlen() มีตัวเลือกการเข้ารหัสมีไวยากรณ์คือ
int mb_strlen(string input, string encode);
 encode คือ การเข้ารหัส เช่น UTF-8

5.4นิพจน์ปกติ


                     PHP สนับสนุนไวยากรณ์นิพจน์ปกติ (Regular Expression) 2 รูปแบบ คือ POSIX และ Perl รูปแบบ POSIX ของนิพจน์ปกติ ได้รับการคอมไพล์ไปยัง PHP ตามค่าเริ่มต้น แต่สามารถใช้รูปแบบ Perl โดยการคอมไพล์ในไลบรารี PCRE (Perl - Compatible Regular Expression) ในบทเรียนนี้จะกล่าวถึงรูปแบบ POSIX ส่วนรูปแบบ Perl หรือการเรียนรู้เกี่ยวกับ PCRE สามารถอ่านได้จากคู่มือบนเว็บที่ http://au3.php.net/manual/en/ref.pcre.php


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

วันอังคารที่ 2 ธันวาคม พ.ศ. 2557

การทำงานกับ Array

4. การทำงานกับ Array


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



5. การควบคุมข้อความ และนิพจน์ปกติี่


             การประยุกต์กับข้อความของ PHP สำหรับการจัดรูปแบบและควบคุมข้อความ จะกล่าวถึงการใช้ฟังก์ชันข้อความ หรือฟังก์ชันนิพจน์ปกติ (regular expression) เพื่อค้นหาคำ วลี หรือรูปแบบอื่นภายในข้อความ

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

ชุดตัวอักษรและ Unicode


                ตามปกติ PHP นำเสนอข้อความเป็นตัวอักษร 8 บิตตาม ISO-8859-1 ซึ่งสามารถแสดงได้ 256 ตัวอักษร ดังนั้นจึงไม่สามารถแสดงพยัญชนะที่ต้องการมากกว่านี้ได้ เช่น จีนหรือญี่ปุ่นได้

               PHP มีส่วนขยาย mbstring ช่วยแก้ไขปัญหานี้ ก่อนอื่นควรเรียนรู้เกี่ยวกับ "ชุดตัวอักษร" (Character Set หรือ charset) และการทำงานของคอมพิวเตอร์กับพยัญชนะต่างๆ

ASCII


             การพัฒนาคอมพิวเตอร์ในตอนต้นได้สร้างการจับคู่ระหว่างรหัสดิจิตอลกับตัวอักษรพิมพ์ได้ แต่ไม่ค่อยเหมาะสมกับธรรมชาติระบบไบนารีของคอมพิวเตอร์ ในปี 1963 American Standard Association ได้ประกาศมาตรฐาน American Standard Code for Information Interchange หรือ ASCII โดยเป็นตัวอักษร 7 บิตที่ครอบคลุมตัวอักษรลาตินที่ใช้เป็นพยัญชนะภาษาอังกฤษ ตัวเลข เครื่องหมาย และสัญลักษณ์ทางการเงิน
               ระบบนี้ไม่สามารถรองรับภาษาในยุโรปตะวันตก เช่น ฝรั่งเศส สเปน รวมถึงภาษา ไซริลลิค อาร์เมเนียและฮิบรู

Unicode


                Unicode (มาจาก Universal Code) ได้รับการพัฒนาตั้งแต่ทศวรรษ 1980 เพื่อให้ครอบคลุมทุกภาษา ต่อมาได้กลายเป็น ISO 10464

                 มาตรฐานเริ่มแรกเป็นตัวอักษร 16 บิตที่สอดคล้องกับตัวอักษร ASCII ใน 127 สล๊อตแรก นอกจากจะสนับสนุนพยัญชนะลาตินแล้ว ยังสนับสนุนภาษาอื่น เช่น อาเมเนีย กรีซ ไทย จีน ญี่ปุ่น และเกาหลีด้วย

                 ตัวอักษร 16 บิตนี้ยังไม่สามารถรองรับตัวอักษรในภาษาจีน ญี่ปุ่น และเกาหลี ที่มีมากกว่า 70,000 ตัวอักษรได้ จึงมีการพัฒนาเป็นระบบ 32 บิตทำให้สามารถรองภาษาปัจจุบันและภาษาที่ตายแล้วได้ ระบบนี้ไม่เพียงรองรับมาตรฐาน 16 บิตและ 32 บิตแล้ว ยังรองรับตัวอักษรบิตเดียวด้วย
การเข้ารหัส unicode ที่ใช้กันมากคือ


  • UTF-7 เป็นการเข้ารหัส 7 บิตสำหรับการรองรับ ASCII 7 บิตและใช้อีก 1 หรือ 2 สล๊อตเพื่อระบุไบต์ขยายสำหรับตัวอักษรอื่น
  • UTF-8 เป็นการเข้ารหัส ASCII เต็มใน 127 สล๊อตแรกและใช้ schema เข้ารหัสส่วนที่เหลือ
  • UTF-16 เป็นการเข้ารหัสคำ 16 บิต ภาษาหลักยังคงอยู่ใน 16 บิตแรก
  • UTF-32 เป็นการเข้ารหัสคำ 2 เท่า (double word หรือ DWORD) 32 บิต นอกจากนี้ยังสนับสนุน หลายตัวอักษร DWORD สำหรับตัวอักษรเพิ่มเติมในอนาคต

3. การทำงานไฟล์ และไดเรคทอรี


               เมื่อทราบถึงไวยากรณ์เบื้องต้น การเข้าถึงและควบคุมข้อมูลภายในฟอร์ม HTML ต่อไปค้นหาวิธีการเก็บสารสนเทศเป็นไฟล์ข้อความ (text file) สำหรับการใช้ต่อไป โดยจะเป็นการเก็บและโหลดด้วยการเขียนลงไฟล์และอ่าน เมื่อมีปริมาณข้อมูลมากต้องใช้ระบบจัดการฐานข้อมูล เช่น MySQL



การเปิดไฟล์


               การเปิดไฟล์ใน PHP ใช้ฟังก์ชัน fopen ไฟล์ที่เปิดต้องระบุลักษณะการเปิดหรือโหมดไฟล์ (file mode)

โหมดไฟล์


                ระบบปฏิบัติการบนแม่ข่าย จำเป็นต้องทราบถึงการทำงานกับไฟล์ที่มีการเปิด โดยต้องทราบว่าถ้าไฟล์ได้รับการเปิดโดยอีกสคริปต์ ขณะที่มีการเปิดและทำงาน ถ้าผู้เปิด (เจ้าของสคริปต์) มีสิทธิในการทำงานนั้น

                โดยเฉพาะอย่างยิ่ง โหมดไฟล์ไห้กลไกกับระบบปฏิบัติการในการหาวิธีควบคุมการเข้าตามคำขอจากบุคคล หรือสคริปต์และวิธีการตรวจสอบการเข้าถึงและสิทธิกับไฟล์เฉพาะเจาะจง

ทางเลือกในการทำงานเมื่อเปิดไฟล์มี 3 ทางเลือก


  • เปิดไฟล์สำหรับอ่านอย่างเดียว เขียนอย่างเดียว หรือทั้งการอ่านและการเขียน

  • ถ้าเขียนไฟล์ อาจจะมีการเขียนทับข้อมูลเดิมของไฟล์ หรือเพิ่มข้อมูลต่อท้ายไฟล์

  • ถ้ากำลังพยายามเขียนไฟล์บนระบบที่ต่างกันระหว่างไฟล์ไบนารีกับไฟล์ข้อความ ควรระบุ

เปิดไฟล์สำหรับ FTP หรือ HTTP

  • นอกจากการเปิดไฟล์สำหรับการอ่านและเขียนแล้ว สามารถเปิดไฟล์ผ่าน FTP และ HTTP ด้วยฟังก์ชัน fopen()
  • ถ้าชื่อไฟล์เริ่มต้นด้วย ftp:// การเชื่อมต่อ FTP ในโหมด Passive จะได้รับการเปิดด้วยแม่ข่ายตามการระบุและพอยเตอร์เพื่อเริ่มต้นไฟล์ที่ส่งออก
  • ถ้าชื่อไฟล์เริ่มต้นด้วย http:// การเชื่อมต่อ HTTP จะได้รับการเปิดด้วยแม่ข่ายตามการระบุและพอยเตอร์ที่ตอบสนองการส่งออก เมื่อใช้โหมด HTTP ต้องมี slash ต่อท้ายบนชื่อไดเรคทอรี
  • เมื่อระบุตามรูปแบบหลัง (ไม่มี slash) แม่ข่ายเว็บ จะใช้ HTTP redirect เพื่อส่งไปยัง address แรก (มี slash) เหมือนความพยายามของ browser
  • ฟังก์ชัน fopen() ไม่สนับสนุน HTTPredirect ดังนั้นต้องระบุ URL ที่อ้างถึงไดเรคทอรีกับ slash ท้าย 
  • ชื่อโดเมนใน URL ไม่มีผลจากตัวพิมพ์ แต่พาร์ทและชื่อไฟล์มีผล


ปัญหาการเปิดไฟล์


             ถ้าการเรียก fopen() ล้มเหลว ฟังก์ชันจะส่งออก FALSE ทำให้สามารถทำงานกับความผิดพลาด แบบผู้ใช้คุ้นเคย (user-friendly) โดยการปิดข่าวสารผิดพลาดของ PHP และกำหนดคำอธิบายที่สื่อความหมายเอง

การปิดไฟล์


           เมื่อเสร็จสิ้นการใช้ไฟล์ ควรปิดไฟล์ด้วยฟังก์ชัน fclose ()
fclose ($fp);

            ฟังก์ชันนี้ส่งออก TRUE ถ้าปิดสำเร็จ หรือ FALSE ถ้าปิดไม่ได้ ความผิดพลาดโดยทั่วไปเกิดขึ้นน้อยกว่าการเปิดไฟล์ ดังนั้นในกรณีที่จึงเลือกไม่ทดสอบ

การแปลงประเภทข้อมูล

การแปลงประเภทข้อมูล

               ตามที่ได้กล่าวไว้ว่า PHP เป็นภาษา richly type และ engine สามารถแปลงระหว่างประเภทข้อมูลต่างกันในเวลาเรียกใช้

                PHP สามารถแปลงหรือเจาะจงประเภทข้อมูลได้



วิธีพื้นฐาน


                 วิธีพื้นฐานในการแปลงประเภทข้อมูลตัวแปรมี 2 วิธีคือ  

การแปลงประเภทเชิงนัยยะ


                   การแปลงเชิงนัยยะ (implicit conversion) เป็นการประเภทข้อมูลที่เกิดขึ้นโดย PHP engine อย่างอัตโนมัติ เมื่อมีการประมวลผล PHP จะกำหนดประเภทข้อมูลให้ตัวแปรให้ตามความเหมาะสม


  • การคำนวณเลขคณิต ถ้ามี operand ที่เป็น integer กับอีกตัวเป็น float จากนั้นตัวแรกจะได้รับการประเมินเป็น float ถ้า operand เป็น string และอีกตัวเป็น integer กรณีนี้ PHP จะแปลง string เป็น integer ก่อนการคำนวณ

  • นิพจน์ Boolean สำหรับกรณีการประเมินนิพจน์ Boolean ผลลัพธ์ที่เกิดขึ้น PHP จะแปลงเป็น Boolean ก่อนทำงานต่อไป

  • เมธอดที่ต้องการ string เมธอดหรือ operator เช่น echo, print หรือ string concatenation operator (.) ต้องการอากิวเมนต์หรือ operand เป็น string ในกรณีนี้ PHP จะแปลงตัวแปรที่ไม่ใช่ข้อความให้เป็นข้อความ

การแปลงประเภทเชิงประจักษ์


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


  1. (int), (integer) แปลงเป็นเลขจำนวนเต็ม integer
  2. (float), (double), (real) แปลงเป็นเลขทศนิยม float
  3. (string) แปลงเป็นข้อความ string
  4. (bool), (boolean) แปลงเป็นค่า Boolean
  5. (array) แปลงเป็น array
  6. (object) แปลงเป็น object

PHP เบื้องต้น

PHP เบื้องต้น

1. เริ่มต้นด้วย PHP

            PHP เป็นภาษาตัวแปลสคริปต์ หมายความว่า language engine เรียกใช้สคริปต์ที่เขียนขึ้นโดยไม่มีขั้นตอนกลางในการคอมไพล์ หรือไปเป็นรูปแบบไบนารี สคริปต์ส่วนใหญ่ที่ใช้สร้างโปรแกรมประยุกต์เว็บอยู่ในที่เดียวกับไฟล์ HTML ตามปกติไฟล์เก็บสคริปต์จะเก็บเป็นนามสกุล .php ถึงแม้ว่าบุคคลทั่วไปจะใช้นามสกุลเก่าคือ .php3 และ .phtml พื้นที่เก็บไฟล์เหล่านี้จะขึ้นกับการตั้งค่าคอนฟิกให้แม่ข่ายเว็บส่งผ่านไฟล์เหล่านี้ไปยังตัวแปร PHP พื้นที่จัดเก็บไฟล์หรือเอกสารนี้ได้รับอ้างถึงในฐานะ document root



2. ภาษา PHP

        ต่อไปเป็นการทำความรู้จักภาษาเกี่ยวกับการแปลงประเภทข้อมูล ตัวแปรและการควบคุม จากนั้นเรียนรู้เกี่ยวกับ operator และคำสั่งโครงสร้างควบคุมทางตรรกะของภาษาสำหรับการสร้างสคริปต์

            ประเภทข้อมูล

              การทำงานกับประเภทข้อมูลของ PHP แตกต่างจากภาษาอื่นเล็กน้อย โดย PHP เป็นภาษา richly typed ที่ตัวแปรไม่ต้องมีการประกาศเป็นประเภทข้อมูลเจาะจง เพราะ engine กำหนดประเภทที่ใช้ตามกฎ บางครั้งเรียกสิ่งนี้ว่าประเภทข้อมูลไดนามิคส์  

            PHP สนับสนุนประเภทข้อมูล

  • integer
  • float หรือ double
  • string
  • boolean
  • array
  • object

วันเสาร์ที่ 1 พฤศจิกายน พ.ศ. 2557

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

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




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 

ข้อสังเกต
มีข้อสังเกตเกี่ยวกับฟิลด์ชนิด TIMESTAMP และ YEAR นิดหน่อย นั่นก็คือ

  • ค่าที่เก็บในฟิลด์ชนิด TIMESTAMP นั้นจะมีความสามารถพอๆ กับ การเก็บข้อมูลวันเดือนปี และเวลา ด้วยฟิลด์ชนิด VARCHAR แต่ต่างกันตรงที่ จะใช้เนื้อที่เก็บข้อมูลน้อยกว่า... ทว่า ฟิลด์ประเภท TIMESTAMP นั้นจะมีข้อจำกัดในเรื่องของเวลาที่สามารถเก็บได้ คือจะต้องอยู่ในระหว่าง 1 มกราคม ค.ศ. 1000 ไปจนถึงแถวๆ ค.ศ. 2037 อย่างที่บอก แต่หากเก็บเป็น VARCHAR นั้นจะไม่ติดข้อจำกัดนี้

  • ฟิลด์ชนิด YEAR ก็เช่นกันครับ... ใช้เนื้อที่แค่ 1 ไบต์เท่านั้นในการเก็บข้อมูล แต่ข้อจำกัดจะอยู่ที่ ปี ค.ศ. 1901 ถึง 2155 เท่านั้น (หรือ ค.ศ. 1970 ถึง 2069 ในกรณี 2 หลัก) แต่หากเก็บเป็น VARCHAR จะได้ตั้งแต่ 0000 ถึง 9999 เลย อันนี้เลยอยู่ที่ความจำเป็นมากกว่าครับ (แต่ด้วยความที่ว่า ปัจจุบันฮาร์ดดิสก์ราคาถูกมากๆ ผมเลยไม่ติดใจอะไรที่จะใช้ VARCHAR แทน เพื่อความสบายใจ อิอิ เพราะสมมติว่ากินเนื้อที่ต่างกัน 3 ไบต์ ต่อ 1 ระเบียน มีข้อมูล 4 ล้านระเบียน ก็เพิ่งต่างกัน 12 ล้านไบต์ หรือ 12 เมกะไบต์เท่านั้นเอง ซึ่งหากเทียบกับปริมาณข้อมูลทั้งหมดของข้อมูล 4 ล้านระเบียน ผมว่ามันต้องมีอย่างน้อยเป็นกิกะไบต์ ดังนั้นความแตกต่างที่ไม่กี่เมกะไบต์จึงไม่มากมายอะไร)
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 ตัวอักษร 

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

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

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 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) สามารถเลือก 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 เลย สามารถเก็บข้อมูลได้เท่ากัน และมีการใช้งานที่เหมือนกัน... ผมลองกรอกข้อมูลแบบเป็นตัวเลขปนตัวอักษรไป มันก็ไม่นับตัวอักษร และตัวเลขใดๆ ที่อยู่ตามหลังตัวอักษร

          มีข้อสังเกต เกี่ยวกับข้อมูลชนิด FLOAT, DOUBLE และ DECIMAL ก็คือ เวลากำหนดความยาวของข้อมูลในฟิลด์ เราจะกำหนดในรูปแบบ (M,D) ซึ่งหมายความว่า เราต้องระบุด้วยว่า จะให้มีตัวเลขส่วนที่เป็นจำนวนเต็มกี่หลัก และมีเลขทศนิยมกี่หลัก เช่น ถ้าเรากำหนดว่า FLOAT(5,2) จะหมายความว่า เราจะเก็บข้อมูลเป็นตัวเลขจำนวนเต็ม 5 หลัก และทศนิยม 2 หลัก... ดังนั้นหากเราใส่ข้อมูล 12345.6789 เข้าไป สิ่งที่จะเข้าไปอยู่ในข้อมูลจริงๆ ก็คือ 12345.68 ครับ (ปัดเศษให้มีจำนวนหลักตามที่เรากำหนด)

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

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

UNSIGNED : จะหมายถึงเก็บค่าตัวเลขแบบไม่มีเครื่องหมาย หรือพูดง่ายๆ คือ ไม่เก็บค่าลบเด็ดขาดนั่นเอง... แบบนี้จะทำให้สามารถเก็บค่าได้ตั้งแต่ 0 - 255 

UNSIGNED ZEROFILL : เหมือนข้างต้นครับ แต่ว่าหากข้อมูลที่กรอกเข้ามาไม่ครบตามจำนวนหลักที่เรากำหนด ตัว MySQL จะทำการเติม 0 ให้ครบหลัก เช่นเรากำหนดให้ใส่ได้ 3 หลัก แล้วเราเก็บข้อมูล 25 เข้าไป เวลาเราสืบค้นดู เราจะได้ค่าออกมาเป็น 025 
หากเราไม่เลือก "แอตทริบิวต์" สิ่งที่เราจะได้ก็คือ SIGNED  นั่นก็คือต้องเสียบิตนึงไปเก็บเครื่องหมาย บวก/ลบ ทำให้สามารถเก็บข้อมูลได้อยู่ในช่วง -128 ถึง 127 เท่านั้น

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

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

ฟิลด์

ฟิลด์ (Field)


          ฟิลด์ (Field) ฟิลด์หมายถึงการเก็บข้อมูล 1 ตัวอักษรหรือมากกว่าที่มีความสัมพันธ์กันมารวมกันไว้ สามารถสื่อความหมายและบอกคุณลักษณะที่เราสนใจได้ เช่นใช้ตัวอักขระจำนวน 8 ตัวมาประกอบกันเป็นชื่อคนเช่นชื่อบุญสืบประกอบด้วยตัวอักษร BOONSUEP ตั้งชื่อฟิลด์นี้ว่าฟิลด์ชื่อเพื่อใช้ในการเก็บชื่อ ข้อมูลชนิดฟิล์นี้จะใช้แทนข้อเท็จจริง คุณลักษณะของสิ่งที่เราสนใจศึกษาเช่นรหัสพนักงานชื่อที่อยู่วันเกิดเงินเดือน ฯลฯ เป็นต้น

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

           - ฟิลด์ตัวเลข (ข้อมูลตัวเลข) ประกอบด้วยอักขระที่เป็นตัวเลข ซึ่งอาจเป็นเลขจำนวนเต็มหรือทศนิยมและอาจมีเครื่องหมายลบหรือบวก เช่น ยอดคงเหลือในบัญชีเป็นกลุ่มของตัวเลข

           - ฟิลด์ตัวอักษร (ข้อมูลตามตัวอักษร) ประกอบด้วยอักขระที่เป็นตัวอักษรหรือช่องว่าง (ว่าง) เช่นชื่อลูกค้าเป็นกลุ่มของตัวอักษร

           - ฟิลด์อักขระ (ข้อมูลตัวอักษรหรือข้อมูลตัวอักษรและตัวเลข) ประกอบด้วย อักขระซึ่งอาจจะเป็นตัวเลขหรือตัวอักษรก็ได้ เช่นที่อยู่ของลูกค้า

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

        ฟิลด์บางฟิลด์อาจจะประกอบด้วยข้อมูลหลาย ๆ ประเภทรวมกันในฟิลด์เช่นฟิลด์วันที่ประกอบด้วย 3 ฟิลด์ย่อย ๆ คือวันที่เดือนและปีหรือในฟิลด์ชื่อธนาคารยังประกอบด้วยหลายฟิลด์ย่อย ๆ คือชื่อธนาคารที่อยู่เมืองประเทศและรหัสไปรษณีย์



          ฟิลด์ (Field) เป็นพื้นที่ในตำแหน่งตายตัวหรือรู้จักในหน่วยข้อมูล เช่นเรคคอร์ดส่วนหัวข่าวสารหรือคำสั่ง (การเรียนการสอน) ที่มีวัตถุประสงค์และตามปกติขนาดตายตัว ในบางบริบท ฟิลด์สามารถได้รับการแบ่งย่อยเป็นฟิลด์เล็กกว่า นี่มีบางตัวอย่าง

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

            2) ในกล่องฟอร์มที่ใช้เติมข้อมูลบนเว็บไซต์แต่ละ ที่ขอสารสนเทศจากท่านเป็นฟิลด์นำเข้าข้อความ

            3) ในส่วนหัวของหน่วยการส่งผ่านความยาวแปรผัน ฟิลด์ย่อยสองไบต์ในส่วนหัว (ซึ่งเป็นฟิลด์โดยตัวเองอย่างแน่นอน) สามารถระบุความยาวเป็นไบต์ของข่าวสาร

โปรแกรมฐานข้อมูลที่นิยมใช้

โปรแกรมฐานข้อมูลที่นิยมใช้




          โปรแกรมฐานข้อมูล เป็นโปรแกรมหรือซอฟแวร์ที่ช่วยจัดการข้อมูลหรือรายการต่าง ๆ ที่อยู่ในฐานข้อมูลไม่ว่าจะเป็นการจัดเก็บการเรียกใช้การปรับปรุงข้อมูล 

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

  • โปรแกรม dBase เป็นโปรแกรมฐานข้อมูลชนิดหนึ่งการใช้งานจะคล้ายกับโปรแกรม FoxPro ข้อมูลรายงานที่อยู่ในไฟล์บน dBase จะสามารถส่งไปประมวลผลในโปรแกรมประมวลผลคำได้และแม้แต่ Excel ก็สามารถอ่านไฟล์ DBF. ที่สร้างขึ้นโดยโปรแกรม dBase ได้ด้วย 

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

รูปแบบของระบบฐานข้อมูล

รูปแบบของระบบฐานข้อมูล

รูปแบบของระบบฐานข้อมูลมีอยู่ด้วยกัน 3 ประเภทคือ 

1. ฐานข้อมูลเชิงสัมพันธ์ (ฐานข้อมูลเชิงสัมพันธ์) 


          เป็นการเก็บข้อมูลในรูปแบบที่เป็นตาราง (ตาราง) หรือเรียกว่ารีเลชั่น (ความสัมพันธ์) มีลักษณะเป็น 2 มิติคือเป็นแถว (แถว) และเป็นคอลัมน์ (คอลัมน์) การเชื่อมโยงข้อมูลระหว่างตารางจะเชื่อมโยงโดยใช้แอททริบิวต์ (แอตทริบิวต์) หรือคอลัมน์ที่เหมือนกันทั้งสองตารางเป็นตัวเชื่อมโยงข้อมูล ฐานข้อมูลเชิงสัมพันธ์นี้จะเป็นรูปแบบของฐานข้อมูลที่นิยมใช้ในปัจจุบัน ดังตัวอย่าง






รหัสพนักงาน

ชื่อพนักงาน

ที่อยู่

เงินเดือน

รหัสแผนก

12501535
12534568
12503452
12356892

15689730

นายสมพงศ์
นายมนตรี
นายเอก
นายบรรทัด

นายราชัน

กรุงเทพ
นครปฐม
กรุงเทพ
นนทบุรี

สมุทรปราการ

12000
12500
13500
11500

12000

VO
VN
VO
VD

VA

2. ฐานข้อมูลแบบเครือข่าย (Network ฐานข้อมูล) 

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

3. ฐานข้อมูลแบบลำดับชั้น (ฐานข้อมูลแบบลำดับชั้น) 

          ฐานข้อมูลแบบลำดับชั้น เป็นโครงสร้างที่จัดเก็บข้อมูลในลักษณะความสัมพันธ์แบบพ่อ-ลูก (แม่เด็กประเภทความสัมพันธ์: PCR Type) หรือเป็นโครงสร้างรูปแบบต้นไม้ (ต้นไม้) ข้อมูลที่จัดเก็บในที่นี้คือระเบียน (Record) ซึ่งประกอบด้วยค่าของเขตข้อมูล (ภาคสนาม) ของเอนทิตี้หนึ่ง ๆ 
          ฐานข้อมูลแบบลำดับชั้นนี้คล้ายคลึงกับฐานข้อมูลแบบเครือข่าย แต่ต่างกันที่ฐานข้อมูลแบบลำดับชั้น มีกฎเพิ่มขึ้นมาอีกหนึ่งประการคือ ในแต่ละกรอบจะมีลูกศรวิ่งเข้าหาได้ไม่เกิน 1 หัวลูกศร




ความสำคัญของการประมวลผลแบบระบบฐานข้อมูล

ความสำคัญของการประมวลผลแบบระบบฐานข้อมูล


จากการจัดเก็บข้อมูลรวมเป็นฐานข้อมูลจะก่อให้เกิดประโยชน์ดังนี้ 

1. สามารถลดความซ้ำซ้อนของข้อมูลได้ 

          การเก็บข้อมูลชนิดเดียวกันไว้หลาย ๆ ที่ทำให้เกิดความซ้ำซ้อน (Redundancy) ดังนั้นการนำข้อมูลมารวมเก็บไว้ในฐานข้อมูล จะชาวยลดปัญหาการเกิดความซ้ำซ้อนของข้อมูลได้ โดยระบบจัดการฐานข้อมูล (ระบบการจัดการฐานข้อมูล DBMS) จะช่วยควบคุมความซ้ำซ้อนได้ เนื่องจากระบบจัดการฐานข้อมูลจะทราบได้ตลอดเวลาว่ามีข้อมูลซ้ำซ้อนกันอยู่ที่ใดบ้าง 

2. หลีกเลี่ยงความขัดแย้งของข้อมูลได้ 

          หากมีการเก็บข้อมูลชนิดเดียวกันไว้หลาย ๆ ที่และมีการปรับปรุงข้อมูลเดียวกันนี้ แต่ปรับปรุงไม่ครบทุกที่ที่มีข้อมูลเก็บอยู่ก็จะทำให้เกิดปัญหาข้อมูลชนิดเดียวกัน อาจมีค่าไม่เหมือนกันในแต่ละที่ที่เก็บข้อมูลอยู่ จึงก่อใให้เกิดความขัดแย้งของข้อมูลขึ้น (ไม่แน่นอน) 

3. สามารถใช้ข้อมูลร่วมกันได้ 

          ฐานข้อมูลจะเป็นการจัดเก็บข้อมูลรวมไว้ด้วยกัน ดังนั้นหากผู้ใช้ต้องการใช้ข้อมูลในฐานข้อมูลที่มาจากแฟ้มข้อมูลต่างๆ ก็จะทำได้โดยง่าย 

4. สามารถรักษาความถูกต้องเชื่อถือได้ของข้อมูล 

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

5 สามารถกำหนดความป็นมาตรฐานเดียวกันของข้อมูลได้ 

          การเก็บข้อมูลร่วมกันไว้ในฐานข้อมูลจะทำให้สามารถกำหนดมาตรฐานของข้อมูลได้รวมทั้งมาตรฐานต่าง ๆ ในการจัดเก็บข้อมูลให้เป็นไปในลักษณะเดียวกันได้ เช่นการกำหนดรูปแบบการเขียนวันที่ในลักษณะวัน / เดือน / ปีหรือปี / เดือน / วัน ทั้งนี้จะมีผู้ที่คอยบริหารฐานข้อมูลที่เราเรียกว่า ผู้บริหารฐานข้อมูล (Database Administrator: DBA) เป็นผู้กำหนดมาตรฐานต่างๆ 

6 สามารถกำหนดระบบความปลอดภัยของข้อมูลได้ 

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

7. เกิดความเป็นอิสระของข้อมูล 

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