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

คำสั่งในฟังก์ชัน SQl

คำสั่งพื้นฐาน 
select *  from employee ;
select emp_no , emp_name , emp_lname
from employee ;
คำสั่งแบบมีเงื่อนไข (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)
คำสั่งแบบหลายเงื่อนไข
select * from work
where proj_num  = 15   and hours  > 3 ;

(เลือกพนักงานที่ทำงานโครงการ 15 และทำงานมากกว่า 

ชั่วโมง : ต้องอยู่โครงการ 15)
select * from work

where proj_num  = 15  or hours  > 3 ;

(เลือกพนักงานที่ทำงานโครงการ 15 หรือทำงานมากกว่า 

3 ชั่วโมง 

อาจทำงานอยู่โครงการอื่น) 


คำสั่งที่มีการใช้งานหลายตาราง (join)
Select  employee.emp_num , emp_name , hours
From    employee , work
Where  employee.emp_num = work.emp_num  ;
( แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน
 เนื่องจาก  ชื่อพนักงาน อยู่คนละตารางกับ ข้อมูลชั่วโมงทำงาน
 จึงต้องมีการ join ตารางที่มีข้อมูลเข้าด้วยกัน)
คำสั่งที่มีการเรียงลำดับ
Select  employee.emp_num , emp_name , proj_num,hours
From    employee , work
Where  employee.emp_num = work.emp_num
Order by employee.emp_num ;
(แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน
เรียงลำดับข้อมูล ตามรหัสพนักงาน)
การใช้ Operator : like
 Select * from employee
where emp_name like “A%” ;
(แสดงข้อมูล พนักงานที่ชื่อขึ้นต้นด้วยอักษร A )
Select * from employee
where emp_name like “%A%” ;
(แสดงข้อมูล พนักงานที่ชื่อมีอักษร A )
การใช้ Operator : in
select *  from employee
where deptno in ( “Programmer” , “System Analyst”) ;
(แสดงข้อมูลพนักงานที่เป็นโปรแกรมเมอร์หรือ นักวิเคราะห์ระบบ)
select *  from work
where proj_num in ( 15 , 22 ) ;
(แสดงข้อมูลการทำงานโครงการ 15 หรือ โครงการ 22 )
การทำงานเชิงนิเสธ
select *   from  work
where proj_num not in ( 15 ,  22) ;
(แสดงข้อมูลการทำงาที่ไม่ใช่ โปรเจ็ค 15 และ 22)
select *   from employee
where job != “Programmer”  ;
(แสดงข้อมูลการทำงานของพนักงานที่ไม่ใช่ Programmer)
การทำงานแบบ sub query
select  *   from work
where emp_num  deptno in ( select emp_num  from employee 
                                           where job = “Programmer”) ;
(แสดงข้อมูลการทำงานของผู้ที่ทำงานหน้าที่ Programmer – ที่อาจมีหลายคน)
select  *   from work
where proj_num = ( select proj_num from project
            where proj_name = “โรงงานแกลงการยาง” );
(แสดงข้อมูลการทำงานของผู้ที่งานในโครงการ โรงงานแกลงการยางค์ – มีโครงการเดียวแน่นอน)

การทำงานแบบรวม (Aggregate function)
select  job , count(*) 
from employee  group by job ;
(นับจำนวนพนักงานจัดกลุ่มตามอาชีพ)
select  emp_num ,  sum(work_hours
from  work   group by emp_num ;
(รวมชั่วโมงทำงาน จัดกลุ่มตามรหัสพนักงาน)
select  proj_num , min(work_hours) , max(work_hours)  
from work
group by proj_num ;
(แสดงชั่วโมงทำงานน้อยที่สุด และมากที่สุด ชองแต่ละโครงการ)
select  job, count(*)   from employee
group by job having count(*) > 2 ;
(นับจำนวนพนักงาน จัดกลุ่มตามอาชีพ เฉพาะที่มีพนักงานมากกว่า 3 คน)
select  emp_num ,  sum(work_hours)  from  work
group by emp_num having sum(work_hours) > 20;
(รวมชั่วโมงทำงาน จัดกลุ่มตามรหัสพนักงาน เฉพาะที่มีชั่วโมงการทำงานรวมมากกว่า 20 ชั่วโมง)

รูปแบบคำสั่งที่มีการคำนวณ
Select  employee.emp_num , proj_num,
     chg_hours , work_hours  ,   
     chg_hours * work_hours
From employee , work
Where employee.emp_num = work.emp_num ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)
รูปแบบคำสั่งที่มีการเปลี่ยนชื่อการแสดงผล
Select  employee.emp_num , proj_num,
     chg_hours , work_hours  ,   
     chg_hours * work_hours  pay
From employee , work
Where employee.emp_num = work.emp_num ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้ แสดงคอลัมน์ค่าตอบแทนคือ pay )
รูปแบบคำสั่งที่มีการเปลี่ยนชื่อตาราง
Select  e.emp_num , proj_num,
     chg_hours , work_hours  ,   
     chg_hours * work_hours  
From employee e, work  w
Where e.emp_num = w.emp_num ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)
สรุปรูปแบบคำสั่ง
Select  …..
From …..
Where …..  and (or) …..
Group by ….  ( Having ….)
Order by ….

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

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