วันพฤหัสบดีที่ 18 ธันวาคม พ.ศ. 2557

การจัดการฐานข้อมูล  (คำสั่ง SQL)

คำสั่งของภาษา 
            ภาษา  SQL (สามารถอ่านออกเสียงได้ 2 แบบ คือ เอสคิวแอล” (SQL) หรือ ซีเควล” (Sequel) ย่อมมาจาก  Structured Query Language หรือภาษาในการสอบถามข้อมูล เป็นภาษาทางด้านฐานข้อมูล ที่สมารถสร้างและปฏิบัติการกับฐานข้อมูลแบบสัมพันธ์ (Relational Database) โดยเฉพาะ และเป็นภาษาที่มีลักษณะคลายกับภาษาอังกฤษ ภาษา  SQL ถูกพัฒนาขึ้นจากแนวคิดของ Relational Calculus และ Relational Algebra เป็นหลัก ภาษา  SQL เริ่มพัฒนาครั้งแรกโดย  Almaden Research Center ของบริษัท  IBM โดยมีชื่อเริ่มแรกว่า ซีเควล” (Sequel) ต่อมาได้เปลี่ยนชื่อเป็น  เอสคิวแอล”  (SQL)  หลังจากนั้นภาษา  SQL ได้ถูกนำมาพัฒนาโดยผู้ผลิตซอฟต์แวร์ด้านระบบจัดการฐานข้อมูลเชิงสัมพันธ์จนเป็นที่นิยมกันอย่างแพร่หลายในปัจจุบัน โดยผู้ผลิตแต่ละรายก็พยายามที่จะพัฒนาระบบจัดการฐานข้อมูลของตนให้มีลักษณะเด่นเฉพาะขึ้นมา ทำให้รูปแบบการใช้คำสั่ง SQL มีรูปแบบที่แตกต่างกันไปบ้าง เช่น Oracle Access SQL Base ของ Sybase Ingres หรือ SQL Server ของ Microsoft เป็นต้น ดังนั้นในปี ค.ศ. 1986 ทางด้าน American National Standards Institute (ANSI) จึงได้กำหนดมาตรฐานของ SQL ขึ้น  อย่างไรก็ดี โปรแกรมฐานข้อมูลที่ขายในท้องตลาด  ได้ขยาย SQL ออกไปจนเกินข้อกำหนดของ ANSI โดยเพิ่มคุณสมบัติอื่น ๆ ที่คิดว่าเป็นประโยชน์เข้าไปอีก แต่โดยหลักทั่วไปแล้วก็ยังปฏิบัติตามมาตรฐานของ ANSI ในการอธิบายคำสั่งต่าง ๆ ของภาษาSQL

2.1 Character
ชนิดข้อมูล
ขอบเขตของชนิดข้อมูล
ขนาดหน่วยความจำ (ไบต์)
Char[(n)]
1 - 8000
n
Varchar[(n)]
1 – 8000
ความยาวข้อมูล
Text
231-1(2,147,483,647) ตัวอักษร
16+Multiple of 2k

2.2 Binary
ชนิดข้อมูล
ขอบเขตของชนิดข้อมูล
ขนาดหน่วยความจำ (ไบต์)
Binary(n)
1 - 8000
n
Varbinary(n)
1 - 8000
n + 1
Image
231 -1(2,147,483,647) ไบต์
16+Multiple of 2k
Timestamp
ใช้สำหรับเปลี่ยนการจัดการ
16

2.3 Date
ชนิดข้อมูล
ขอบเขตของชนิดข้อมูล
ขนาดหน่วยความจำ (ไบต์)
Datetime
วันที่เริ่มต้นตั้งแต่ January 1,1753 ถึง December 31,9999 ความละเอียดถึง 1/1000 วินาที
8
Smalldetetime
วันที่เริ่มต้นตั้งแต่ January 1,1900 ถึง June 6,2079
4

2.4 Logical
ชนิดข้อมูล
ขอบเขตของชนิดข้อมูล
ขนาดหน่วยความจำ (ไบต์)
Bit
0 หรือ 1
1

2.5 Numeric
ชนิดข้อมูล
ขอบเขตของชนิดข้อมูล
ขนาดหน่วยความจำ (ไบต์)
Int
±2,147,483,647
4
Smallint
±32767
2
Tinyint
0 255
1
Float(p)
P (Precision) คือ การนับจำนวน รวมของเลขหน้าและหลังทศนิยม มีค่าตั้งแต่ 1 ถึง 28
S (Scale) คือ จำนวนตัวเลขหลัง ทศนิยม
±1.79E+308
4 (Precision<16)
8(Precision>=16)
Double p
±1.79E+308
8
Real
±1.79E+308
4
Numeric(p,s)
Decimal(p,s)
±103
2 ถึง 17
Money
±$922,337,203,685,477.5807
8
Smallmoney
±$214,748.3647
4




ตัวอย่างของคำสั่ง  SQL
1 - คำสั่งพื้นฐาน 
Select  <filed_1 , filed_2 , … , filed_n  |  *  >
From  <Table_name;
หากเลือกทุก column สามารถใช้เครื่องหมาย * ได้
ตัวอย่าง
select *  from employee ;
select emp_no , emp_name , emp_lname
from employee ;

2 คำสั่งแบบมีเงื่อนไข (condition)
Select  <filed_1 , filed_2 , … , filed_n  /  *  >
From  <Table_name
Where  < condition > ;
Condition  หรือ เงื่อนไข หมายถึงการระบุความต้องการ มีรูปแบบการเขียนดังนี้คือ  <field>  <operator>  < value >
Filed คือ Filed ใดๆที่อยู่ในรายชื่อ Table อยู่ในคำสั่ง From
Operator  คือคำสั่งในการปฏิบัติการ เช่น = , > , < , != , is null
Value  ค่าที่ใช้เป็นเงื่อนไข หากเป็นตัวเลขสามารถระบุได้เลย หากเป็นตัวอักษรต้องมีการใส่  "  ก่อนและหลังค่าที่เป็นเงื่อนไข

ตัวอย่าง - คำสั่งแบบมีเงื่อนไข
Select * from work 
            Where proj_num = 15 ;  (เลือกข้อมูลการทำงานโครงการ 15)
Select * from work 
            Where hours  > 3 ;  (เลือกข้อมูลการทำงานที่มากกว่า 3 ชั่วโมง)
Select * from employee
            where job = "Programmer"  ; (เลือกพนักงานที่เป็น Programmer)

3 คำสั่งแบบหลายเงื่อนไข
Select  <filed_1 , filed_2 , … , filed_n  /  *  >
From  <Table_name
Where  < condition-1 >
<And / Or >  <condition-2>  ;
And ให้ผลเหมือนการ  Intersection
Or ให้ผลเหมือนการ  Union
ตัวอย่าง คำสั่งแบบหลายเงื่อนไข
select * from work
where proj_num  = 15   and hours  > 3 ;
(เลือกพนักงานที่ทำงานโครงการ 15 และทำงานมากกว่า 3 ชั่วโมง : ต้องอยู่โครงการ 15)
select * from work
where proj_num  = 15  or hours  > 3 ;
(เลือกพนักงานที่ทำงานโครงการ 15 หรือทำงานมากกว่า 3 ชั่วโมง : อาจทำงานอยู่โครงการอื่น)

4 คำสั่งที่มีการใช้งานหลายตาราง  (join)
Select  <filed_1 , filed_2 , … , filed_n  /  *  >
From  <table_1 , table_2 , …, table_n
Where  < condition-1 > ;
1.            ต้องมีการเชื่อม PK และ FK ของทั้งสองตารางเข้าด้วยกัน (Join)
2.            หากมี field ใดที่ชื่อซ้ำกันทั้งสองตาราง
            เมื่ออ้างถึง ต้อง ระบุชื่อตาราง ตามด้วยชื่อฟิลด์ เช่น
            work.emp_num หรือ employee.emp_num


ตัวอย่าง - คำสั่งที่มีการใช้งานหลายตาราง (join)
Select  employee.emp_num , emp_name , hours
From    employee , work
Where  employee.emp_num = work.emp_num  ;
( แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน เนื่องจาก  ชื่อพนักงาน อยู่คนละตารางกับ ข้อมูลชั่วโมงทำงาน จึงต้องมีการ join ตารางที่มีข้อมูลเข้าด้วยกัน)

5 – คำสั่งที่มีการเรียงลำดับ
Select  <filed_1 , filed_2 , … , filed_n  /  *  >
From  <table_1 , table_2 , …, table_n
Where  < condition-1 >
Order by < [asc/desc]  field_2  , [asc/desc]  filed_n > ;
อธิบายเพิ่มเติม
1.            Filed ที่จะใช้คำสั่ง order ต้องเลือกมาก่อนแล้วจากการ select
2.            การเรียงปกติจะเรียงจากน้อยไปมาก (asc)  หากต้องการเรียงตากมาไปน้อยให้ใช้ (desc)



ตัวอย่าง – คำสั่งที่มีการเรียงลำดับ
Select  employee.emp_num , emp_name , proj_num,hours
From    employee , work
Where  employee.emp_num = work.emp_num
Order by employee.emp_num ;
(แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน
เรียงลำดับข้อมูล ตามรหัสพนักงาน)

6 การใช้ Operator : like
Select  <filed_1 , filed_2 , … , filed_n  /  *  >
From  <table_1 , table_2 , …, table_n
Where  <filed_1 like “%” > ;
คำสั่ง like หมายถึงค่าที่คล้ายกัน โดยมีสัญญลักษ์ เป็น wild-card ที่ใช้หมายถึงค่าใดๆก็ได้

ตัวอย่าง - การใช้ Operator : like
Select * from employee
where emp_name like “A%” ;
(แสดงข้อมูล พนักงานที่ชื่อขึ้นต้นด้วยอักษร A )
Select * from employee
where emp_name like “%A%” ;
(แสดงข้อมูล พนักงานที่ชื่อมีอักษร A )

7 การใช้ Operator : in หรือ การทำงานแบบเซต
select  <filed1 , filed2 , … , filedn  /  *  >
from  <Table_name
where field_i in ( value_lits) ;
ในวงเล็บทางขวาของ in หมายถึง การมีค่าได้หลายค่า แต่ละค่าคั่นด้วย เครื่องหมาย , (comma)  เปรียบเสมือน value_list คือ เซตหรือกลุ่มของค่าที่เราต้องการใช้เป็น เงื่อนไข 
หากเราใช้ Operator = ค่าทางขวาจะมีได้ค่าเดียวเท่านั้น

ตัวอย่าง การใช้ Operator : in
select *  from employee
where deptno in ( “Programmer” , “System Analyst”) ;
(แสดงข้อมูลพนักงานที่เป็นโปรแกรมเมอร์หรือ นักวิเคราะห์ระบบ)
select *  from work
where proj_num in ( 15 , 22 ) ;
(แสดงข้อมูลการทำงานโครงการ 15 หรือ โครงการ 22 )

8 การใช้ค่า Null 
            ในการเก็บข้อมูล ค่า Null ไม่เท่ากับ ค่าว่าง  ค่า Null คือไม่มีการเก็บค่าใดๆใน Filed นั้น การทำงานกับค่า null ต้องใช้ Operator  “is”
ตัวอย่างเช่น
            select *   from employee where job is null  ;
     (แสดงข้อมูลพนักงานที่ไม่มีหน้าที่)

9 - รูปแบบคำสั่ง  : การทำงานเชิงนิเสธ
select  <filed1 , … , filedn  /  *  > 
from  <table_name
where field_i  not in ( value_lits) ;
select  <filed1 , … , filedn  /  *  >
from  <table_name
where field_i  !=  value ;

ตัวอย่าง : การทำงานเชิงนิเสธ
select *   from  work
where proj_num not in ( 15 ,  22) ;
(แสดงข้อมูลการทำงาที่ไม่ใช่ โปรเจ็ค 15 และ 22)
select *   from employee
where job != “Programmer”  ;
(แสดงข้อมูลการทำงานของพนักงานที่ไม่ใช่ Programmer)

10. รูปแบบคำสั่งที่มีการคำนวณ
Select  employee.emp_num , proj_num,
                           chg_hours , work_hours  ,   
                           chg_hours * work_hours
From employee , work
Where employee.emp_num = work.emp_num ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)
ตัวอย่างข้อสอบ O-NET วิชาคอมพิวเตอร์ ม.ปลาย


คำสั่ง : ให้นักเรียนทำเครื่องหมายกากบาท ( X ) ทับข้อที่ถูกที่สุดเพียงข้อเดียว

1.ข้อใดไม่ใช่ระบบปฏิบัติการที่นำมาใช้บนอุปกรณ์พกพา
ประเภท  Smartphone.

1.  Ubumtu                                         2.  Iphone  os
3.  Android                                         4.  Symbian

เฉลยข้อ  1

2.ไฟล์ประเภทใดในข้อต่อไปนี้เก็บข้อมูลในลักษณะตัวอักษร.
1.  ไฟล์เพลง  MP 3 (mp 3)
2.  ไฟล์รูปประเภท  JPEG (jpeg)
3.  ไฟล์แสดงผลหน้าเว็บ (html)
4.  ไฟล์วีดีโอประเภท  Movie (movie)
เฉลยข้อ  3

3.ลิขสิทธิ์โปรแกรมประเภทรหัสเปิด(Open Source)อนุญาต
ให้ผู้ใช้ทำอะไรได้บ้าง.
ก.  นำโปรแกรมมาใช้งานโดยไม่ต้องเสียค่าลิขสิทธิ์
ข.  ทดลองใช้โปรแกรมก่อนถ้าพอใจจึงจ่ายค่าลิขสิทธิ์
ค.  แก้ไขปรับปรุงโปรแกรมเองได้
1.  ข้อ  ก กับ  ข้อ                                              2.  ข้อ    กับ  ข้อ 
3.  ข้อ    อย่างเดียว                                            4.  ข้อ    อย่างเดียว
เฉลยข้อ  4

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

1.  ต้องสร้างตารางผู้ใช้ ตารางกระทู้และตารางคำตอบ
2.  ไม่ต้องสร้างตารางผู้ใช้เนื่องจากสามารถบันทึกชื่อ
ผู้ใช้ในตารางกระทู้และตารางคำตอบได้เลย
3.  ต้องสร้างตารางผู้ใช้และตารางกระทู้ส่วนคำตอบจะอยู่
ในตารางกระทู้อยู่แล้ว
4.  ไม่ต้องสร้างตารางกระทู้เพราะสามารถบันทึกกระทู้ที่ผู้ใช้
ตั้งในตารางผู้ใช้ได้เลย
เฉลยข้อ  4

5.อุปกรณ์ข้อใดคือหน่วยประเมินผลกลางของคอมพิวเตอร์.
เฉลย  CPU

6.ข้อใดเป้นการปฏิบัติที่ถูกต้องตามหลักวิชาการเมื่อค้นคว้าหาข้อมูลจากอินเทอร์เน็ตมาทำรายงาน.
1.  คัดลอกเนื้อหาจากเว็บไซต์
2.  ใช้เนื้อหาจากกระดานสนทนา (Web board) มาใส่ในรายงาน
3.  นำรูปภาพจากเว็บไซต์มาใส่ในรายงาน
4.  อ้างอิงชื่อผู้เขียนบทความ

เฉลยข้อ  4

5.ห้องสมุดแห่งหนึ่งต้องการพัฒนาระบบยืมหนังสือโดยสามารถบันทึกข้อมูลการยืมหนังสือลงบนบัตรอิเล็คโทรนิกส์โดยไม่ต้องเขียนด้วยมือระบบนี้ควรใช้เทคโนโลยีในข้อใด.
1.  Smart  Card                                      2.  Fingerprint
3.  Barcode                                            4.  WiFi
เฉลยข้อ  3

6.ผู้ประกอบอาชีพเป็นผู้พัฒนาเว็บไซต์ต้องเชี่ยวชาญความรู้
ด้านใดบ้างจากตัวเลือกต่อไปนี้.
ก.  ฮาร์ดแวร์คอมพิวเตอร์                      ข.  ระบบปฎิบัติการ
ค.  เว็บเซิร์ฟเวอร์                                   ง.  HTML
จ.  ระบบฐานข้อมูล                               ฉ.  ภาษาจาวา (Java)
1.  ข้อ  ก และ ค                                  2.  ข้อ    และ 
3.  ข้อ    และ                                   4.  ข้อ    และ 
เฉลยข้อ  3

7.ข้อใดเป็นเทคโนโลยีการเชื่อมต่อข้อมูลไร้สายทั้งหมด.
1.  Wi-Fi  ,  IP                                      2.  Wi-Fi  ,  Bluetooth
3.  3G  , ADSL                                     4.  3G   ,  Ethernet
เฉลยข้อ  2

8.ข้อใดไม่ใช่ข้อเสียของการละเมิดลิขสิทธิ์ซอฟต์แวร์.
1.  การทำผิดกฎหมายลิขสิทธิ์มีความผิดทางอาญา
2.  เป็นช่องทางหนึ่งในการระบาดของไวรัสคอมพิวเตอร์
3.  ผู้ใช้จะไม่ได้รับการบริการจากผู้พัฒนาถ้าหากมีปัญหาการใช้งาน
4.  ทำให้ผู้พัฒนาซอฟแวร์ไม่มีรายได้เพื่อประกอบการและพัฒนาต่อไปได้
เฉลยข้อ  2

9.ข้อใดต่อไปนี้ถูกต้องที่สุด.
1.  การบันทึกข้อมูลลงแผ่นดีวีดีใช้เทคโนโลยีแบบแม่เหล็ก
2.  หมายเลขไอพีเป็นหมายเลขที่ใช้กำกับ  Network Interce Card
3.  หน่วยความจำสำรองเป็นหน่วยความจำที่มีคุณลักษณะแบบ Volntile
4.  รหัส  ACII  และ  EBCIDIC  เป็นการวางรหัสตัวอักษรที่ใช้ขนาด  8 บิด
เฉลยข้อ  3 

10. ข้อใดคือความหมายของ ฮาร์ดแวร์
ก. โปรแกรมที่สั่งให้คอมพิวเตอร์ทำงาน
ข. ส่วนประกอบของเครื่องคอมพิวเตอร์
ค. ขั้นตอนในการปฏิบัติงาน
ง. บุคลากรที่ทำงานกับคอมพิวเตอร์
เฉลยข้อ  2


ที่มาของบทความ
1.           http://krupaga.wordpress.com

2.           http://pakornkrits.wordpress.com

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

ฟังก์ชั่น PHP

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

ประเภทของฟังก์ชั่น PHP
ฟังก์ชันใน PHP มีอยู่ ประเภท คือ

1.ฟังก์ชันมาตรฐาน (Built-In Function) ซึ่งเป็นฟังก์ชันที่ภาษา PHP มีให้อยู่แล้วสามารถเรียกใช้ได้เลย เช่น ฟังก์ชัน Date, sort เป็นต้น และฟังก์ชันอีกแบบคือ ฟังก์ชันแบบที่เราสร้างขึ้นเอง (User-Defined Function: UDF) ฟังก์ชันที่เราสร้างเองเป็นยังไง และสร้างยังไง  ดูได้จากภาพด้านล่าง

1.      function functionName(){  
2.          code to be executed;  
3.      }  


วิธีการตั้งชื่อฟังก์ชัน
1.ชื่อของฟังก์ชันควรสื่อความหมายที่ฟังก์ชันทำงาน
2.ชื่อของฟังก์ชันต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่างเท่านั้น

ตัวอย่างการเขียนฟังก์ชันแบบต่างๆ

ตัวอย่าการเขียนฟังก์ชั่น  ตัวอย่างที่ 1

1.      <html>  
2.      <head>  
3.      </head>  
4.      <body>  
5.      <?php  
6.          function helloDoesystem(){  
7.              echo "(ข้อความที่เราต้องการพิมพ์)";  
8.          }  
9.          helloDoesystem( );  
10.  ?>  
11.  </body>  
12.  </html>  

Output ที่ได้คือ
(ข้อความที่เราต้องการพิมพ์)
ฟังก์ชันนี้ชื่อ helloDoesystem เวลาต้องการเรียกใช้ ก็แค่เรียกชื่อฟังก์ชัน



ตัวอย่างการเขียนฟังก์ชัน ตัวอย่างที่ 2


1.      <html>  
2.      <head>  
3.      </head>  
4.      <body>  
5.      <?php  
6.          function helloName($name){  
7.              echo "สวัสดีครับ คุณ ".$name."<br>";  
8.          }  
9.          helloName("Somchai");  
10.      helloName("SomYing");  
11.      helloName("Sompong");  
12.  ?>  
13.  </body>  
14.  </html>  



Output ที่ได้คือ
สวัสดีครับ คุณ Somchai
สวัสดีครับ คุณ SomYing
สวัสดีครับ คุณ Sompong
ฟังก์ชันนี้ชื่อ helloName เวลาต้องการเรียกใช้ ก็แค่เรียกชื่อฟังก์ชันแล้วตามด้วยพารามิเตอร์ name ที่ต้องการให้แสดงออก


ตัวอย่างการเขียนฟังก์ชัน ตัวอย่างที่ 3


1.      <html>  
2.      <head>  
3.      </head>  
4.      <body>  
5.      <?php  
6.          function helloName($name$lastname){  
7.              echo "สวัสดีครับ คุณ ".$name." ".$lastname."<br>";  
8.          }  
9.          helloName("นารัตน์""พัดลมโชย");  
10.      helloName("หรูหรา""ออมตง");  
11.      helloName("นางหวด""สวามิพัก");  
12.  ?>  
13.  </body>  
14.  </html>  

Output ที่ได้คือ
สวัสดีครับ คุณ นารัตน์ พัดลมโชย
สวัสดีครับ คุณ หรูหรา ออมตง
สวัสดีครับ คุณ นางหวด สวามิพัก
ฟังก์ชันนี้ชื่อ helloName เวลาต้องการเรียกใช้ ก็แค่เรียกชื่อฟังก์ชันแล้วตามด้วยพารามิเตอร์ name กับ lastname ที่ต้องการให้แสดงออก

ตัวอย่างการเขียนฟังก์ชัน ตัวอย่างที่ 4


1.      <html>  
2.      <head>  
3.      </head>  
4.      <body>  
5.      <?php  
6.          function add($x$y){  
7.              return $x+$y;  
8.          }  
9.          echo add(2, 3)."<br>";  
10.      echo "5 + 2 = ".add(5, 2)."<br>";  
11.      add(4, 2)."<br>";  
12.  ?>  
13.  </body>  
14.  </html>  



Output ที่ได้คือ
5 5 + 2 = 7 ฟังก์ชันนี้ชื่อ add เป็นฟังก์ชันบวกเลขสองตัว เวลาต้องการเรียกใช้ ก็แค่เรียกชื่อฟังก์ชันแล้วตามด้วยพารามิเตอร์ กับ ที่ต้องการบวกกัน เวลาต้องการแสดงก็สั่ง echo ด้วยเพราะว่า ในฟังก์ชัน return ค่าออกมา