วันอาทิตย์ที่ 14 ธันวาคม พ.ศ. 2557

คำสั่ง 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 > ;
ต้องมีการเชื่อม PK และ FK ของทั้งสองตารางเข้าด้วยกัน (Join)
หากมี field ใดที่ชื่อซ้ำกันทั้งสองตาราง เมื่ออ้างถึง
ต้อง ระบุชื่อตาราง ตามด้วยชื่อฟิลด์ เช่น
work.emp_num หรือ employee.emp_num

ตัวอย่าง – คำสั่งที่มีการใช้งานหลายตาราง
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 > ;
อธิบายเพิ่มเติม
Filed ที่จะใช้คำสั่ง order ต้องเลือกมาก่อนแล้วจากการ select
การเรียงปกติจะเรียงจากน้อยไปมาก (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.     การใช้ค่า Null 
ในการเก็บข้อมูล ค่า Null ไม่เท่ากับ ค่าว่าง  ค่า Null คือไม่มีการเก็บค่าใดๆใน Filed นั้น การทำงานกับค่า null ต้องใช้ Operator  “is”

             ตัวอย่างเช่น
select *   from employee where job is null  ; (แสดงข้อมูลพนักงานที่ไม่มีหน้าที่)
รูปแบบคำสั่ง  : การทำงานเชิงนิเสธ
select  <filed1 , … , filedn  /  *  > 
from  <table_name> 
where field_i  not in ( value_lits) ;
select  <filed1 , … , filedn  /  *  >
from  <table_name> 
where field_i  !=  value ;

        
8.     รูปแบบคำสั่ง  : การทำงานแบบ sub query
select  <filed1 , filed2 , … , filedn  /  *  >
from  <Table_name> 
where field_i  =   ( select field from table1) ;
select  <filed1 , filed2 , … , filedn  /  *  >
from  <Table_name> 
where field_i  in  ( select  field  from  table1) ;

9.     การทำงานแบบรวม (Aggregate function)
select  job , count(*) 
from employee  group by job ;
(นับจำนวนพนักงานจัดกลุ่มตามอาชีพ)
select  emp_num ,  sum(work_hours) 
from  work   group by emp_num ;
(รวมชั่วโมงทำงาน จัดกลุ่มตามรหัสพนักงาน)

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 ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)




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

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