1.
คำสั่งพื้นฐาน
Select <filed_1 , filed_2 , … , filed_n | * >
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 ;
(แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ
และค่าตอบแทนที่ได้)