Transcript
Page 1: Introduction to  Database SQL

11

Introduction to Database SQLวรว�ทย์� พูลสว�สดิ์��

Page 2: Introduction to  Database SQL

22

ฐานข้�อมู�ล (Database)- Data and its relation - Databases are designed to offer an

organized mechanism for storing, managing and retrieving information. They do so through the use of tables

- ข้�อมู�ลที่� มู�ความูสั�มูพั�นธ์�กั�นน�ามูาเกั�บรวมูรวมูไว�ด้�วยกั�น - เพู��อการใช้�ข้�อมูลเหล�านั้��นั้ร�วมูก�นั้อย์�างมู ประส�ทธิ�ภาพู - โดิ์ย์มูากมู�กท&าเพู��อตอบสนั้องการท&างานั้ดิ์�านั้สารสนั้เทศ

Page 3: Introduction to  Database SQL

33

ระบบจั�ดิ์การฐานั้ข้�อมูล (Database Management System)

System Software ท � ใช้�ในั้การจั�ดิ์การข้�อมูล จั,ดิ์ประสงค์�เพู��อสร�างสภาพูแวดิ์ล�อมูท �สะดิ์วกและมู

ประส�ทธิ�ภาพูในั้การจั�ดิ์เก/บและเข้�าถึ1งข้�อมูล ข้องฐานั้ข้�อมูล

การเข้�าถึ1ง/ใช้�ข้�อมูล จัะใช้�ภาษาเช้�งโค์รงสร�าง (Sql) ท �ท&าหนั้�าท �เป3นั้ต�วกลางระหว�างฐานั้ข้�อมูลก�บผู้�ใช้�งานั้

ประกอบไปดิ์�วย์ฟั7งก�ช้�นั้ต�างๆช้�วย์ให�ระบบฐานั้ข้�อมูลมู ค์วามูถึกต�อง (Integrity) และมู ค์วามูสอดิ์ค์ล�องก�นั้

(Consistency)

Page 4: Introduction to  Database SQL

4

ภาษา SQL เป3นั้ภาษาท �ใช้�ในั้การเข้�าถึ1งข้�อมูล ในั้ระบบจั�ดิ์การ

ฐานั้ข้�อมูล เป3นั้ภาษาในั้แบบ Non Procedural การท&างานั้พู��นั้ฐานั้ อย์�บนั้ Set และ Relation แบ�งการท&างานั้เป3นั้ 3 กล,�มูใหญ่�ๆไดิ์�แก�

DDL / DML และ DCL

Page 5: Introduction to  Database SQL

5

กัล��มูข้องค�าสั� งในภาษา SQL – DDL Data Definition Language (DDL)

เป3นั้กล,�มูค์&าส��งท �ใช้�ในั้การก&าหนั้ดิ์โค์รงสร�างต�างๆในั้ระบบจั�ดิ์การฐานั้ข้�อมูลต�วอย์�างข้องค์&าส��งไดิ์�แก� Create , Alter , Drop

Page 6: Introduction to  Database SQL

6

ตั�วอย�างกัารใช้�ภาษา SQL แบบ DDLCREATE TABLE project01 ( proj_num varchar(2)

NOT NULL, proj_name varchar(20) NOT NULL ) ;

ALTER TABLE project01 ADD proj_status VARCHAR( 5 ) NOT NULL ;

DROP TABLE project01 ;

CREATE USER user01 IDENTIFIED BY "1234" ;DROP USER user01 ;

6

Page 7: Introduction to  Database SQL

7

กัล��มูข้องค�าสั� งในภาษา SQL – DML Data Manipulation Language (

DML) เป3นั้กล,�มูค์&าส��งท �ใช้�ในั้การเข้�าถึ1งข้�อมูล แบ�งเป3นั้ 2 กล,�มูหล�กๆค์�อ กล,�มูท �ใช้�ในั้การแสดิ์งผู้ลข้�อมูล ไดิ์�แก� ค์&า

ส��ง Select กล,�มูท �ใช้�ในั้การปร�บปร,งเนั้��อหาข้�อมูล ไดิ์�แก�

ค์&าส��ง Insert , Update , Delete

Page 8: Introduction to  Database SQL

88

ตั�วอย�างกัารใช้�ภาษา SQL แบบ DMLINSERT INTO project ( proj_num, proj_name) VALUES (16, “Burapha") ;

SELECT * FROM project WHERE proj_num = 16 ;

UPDATE Project set proj_name = "Burapha Chant.“

WHERE proj_num = 16 ;

DELETE FROM project where proj_num = 16 ;

Page 9: Introduction to  Database SQL

9

กัล��มูข้องค�าสั� งในภาษา SQL – DCL Data Control Language (DCL)

Grant , RevokeGRANT SELECT , INSERT ,

UPDATE , DELETE , ALTER ON demo TO user02;

REVOKE ALL PRIVILEGES ON demoFROM user02 ;

Page 10: Introduction to  Database SQL

1010

เที่คน'คกัารใช้�งานภาษา SQL เพั( อใช้�ในกัารแสัด้งผลข้�อมู�ล

ว'เคราะห์� output ดิ์ว�าจัะต�องแสดิ์งผู้ลล�พูธิ�อย์�างไรตามูค์วามูต�องการข้อง

โจัทย์�ว'เคราะห์� input

ต�องใช้�ข้�อมูล (column) จัากตาราง (Table) อะไรว'เคราะห์� process

จั&า syntax หร�อ รปแบบข้องค์&าส��งให�ถึกต�อง ว�เค์ราะห�ว�า ต�องเข้ ย์นั้เง��อนั้ไข้อย์�างไร จั1งจัะไดิ์�ผู้ลตามู

ต�องการ

Page 11: Introduction to  Database SQL

Syntax : รปแบบค์&าส��ง

Page 12: Introduction to  Database SQL

1212

- 1 ค์&าส��งพู��นั้ฐานั้ Select <filed_1 , filed_2 , … , filed_n | *

> From <Table_name> ; หากเล�อกท,ก column สามูารถึใช้�เค์ร��องหมูาย์ * ไดิ์�ตั�วอย�างselect * from employee ;

select emp_no , emp_name , emp_lname

from employee ;

Page 13: Introduction to  Database SQL

1313

2 – ค์&าส��งแบบมู เง��อนั้ไข้ (condition)

Select <filed_1 , filed_2 , … , filed_n / * >

From <Table_name> Where < condition > ;

Page 14: Introduction to  Database SQL

14

Condition Condition หร�อ เง��อนั้ไข้ หมูาย์ถึ1งการระบ,ค์วามูต�องการ มู

รปแบบการเข้ ย์นั้ดิ์�งนั้ �ค์�อ <field> <operator> < value >

Filed ค์�อ Filed ใดิ์ๆท �อย์�ในั้ราย์ช้��อ Table อย์�ในั้ค์&าส��ง From

Operator ค์�อค์&าส��งในั้การปฏิ�บ�ต�การ เช้�นั้ = , > , < , != , is null

Value ค์�าท �ใช้�เป3นั้เง��อนั้ไข้ หากเป3นั้ต�วเลข้สามูารถึระบ,ไดิ์�เลย์ หากเป3นั้ต�วอ�กษรต�องมู การใส� " ก�อนั้และหล�งค์�าท �เป3นั้เง��อนั้ไข้

Page 15: Introduction to  Database SQL

15

ต�วอย์�าง - ค์&าส��งแบบมู เง��อนั้ไข้ Select * from work

Where proj_num = 15 ; (เล�อกข้�อมูลการท&างานั้โค์รงการ 15)

Select * from work

Where hours > 3 ; (เล�อกข้�อมูลการท&างานั้ท �มูากกว�า 3 ช้��วโมูง)

Select * from employee where job = "Programmer" ; (เล�อกพูนั้�กงานั้ท �เป3นั้ Programmer)

Page 16: Introduction to  Database SQL

1616

3 – ค์&าส��งแบบหลาย์เง��อนั้ไข้Select <filed_1 , filed_2 , … , filed_n /

* > From <Table_name> Where < condition-1 ><And / Or > <condition-2> ;

And ให�ผู้ลเหมู�อนั้การ IntersectionOr ให�ผู้ลเหมู�อนั้การ Union

Page 17: Introduction to  Database SQL

17

ต�วอย์�าง ค์&าส��งแบบหลาย์เง��อนั้ไข้– 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 ช้��วโมูง : อาจัท&างานั้อย์�โค์รงการอ��นั้ )

Page 18: Introduction to  Database SQL

1818

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 ใดิ์ท �ช้��อซ้ำ&�าก�นั้ท��งสองตาราง เมู��ออ�างถึ1ง ตั�อง ระบ,ช้��อตาราง ตามูดิ์�วย์ช้��อฟั<ลดิ์� เช้�นั้ work.emp_num หร�อ employee.emp_num

Page 19: Introduction to  Database SQL

19

ต�วอย์�าง - ค์&าส��งท �มู การใช้�งานั้หลาย์ตาราง (join)Select employee.emp_num , emp_name ,

hoursFrom employee , workWhere employee.emp_num =

work.emp_num ; ( แสัด้งข้�อมู�ลรห์�สัพัน�กังาน ช้( อพัน�กังาน และช้� วโมูงที่�างาน

เน( องจากั ช้( อพัน�กังาน อย��คนละตัารางกั�บ ข้�อมู�ลช้� วโมูงที่�างาน

จ.งตั�องมู�กัาร join ตัารางที่� มู�ข้�อมู�ลเข้�าด้�วยกั�น)

Page 20: Introduction to  Database SQL

2020

- 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)

Page 21: Introduction to  Database SQL

21

ต�วอย์�าง - ค์&าส��งท �มู การเร ย์งล&าดิ์�บSelect employee.emp_num , emp_name ,

proj_num,hoursFrom employee , workWhere employee.emp_num =

work.emp_numOrder by employee.emp_num ;

(แสัด้งข้�อมู�ลรห์�สัพัน�กังาน ช้( อพัน�กังาน และช้� วโมูงที่�างานเร�ยงล�าด้�บข้�อมู�ล ตัามูรห์�สัพัน�กังาน)

Page 22: Introduction to  Database SQL

2222

6 – การใช้� Operator : like

Select <filed_1 , filed_2 , … , filed_n / * >

From <table_1 , table_2 , …, table_n>

Where <filed_1 like “%” > ;

ค�าสั� ง like ห์มูายถึ.งค�าที่� คล�ายกั�น โด้ยมู�สั�ญญล�กัษ� % เป็2น wild-card ที่� ใช้�ห์มูายถึ.งค�าใด้ๆกั�ได้�

Page 23: Introduction to  Database SQL

23

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

Select * from employee where emp_name like “%A%” ;(แสัด้งข้�อมู�ล พัน�กังานที่� ช้( อมู�อ�กัษร A )

Page 24: Introduction to  Database SQL

2424

7 – การใช้� Operator : in หร�อ การท&างานั้แบบเซ้ำตselect <filed1 , filed2 , … , filedn / * > from <Table_name> where field_i in ( value_lits) ;

ในวงเล�บที่างข้วาข้อง in ห์มูายถึ.ง กัารมู�ค�าได้�ห์ลายค�า แต�ละค์�าค์��นั้ดิ์�วย์ เค์ร��องหมูาย์ , (comma) เปร ย์บเสมู�อนั้ value_list ค์�อ เซ้ำตหร�อกล,�มูข้องค์�าท �เราต�องการใช้�เป3นั้ เง��อนั้ไข้

หากเราใช้� Operator = ค�าที่างข้วาจะมู�ได้�ค�าเด้�ยวเที่�าน�4น

Page 25: Introduction to  Database SQL

25

ต�วอย์�าง การใช้� – Operator : inselect * from employeewhere deptno in ( “Programmer” , “System

Analyst”) ;(แสัด้งข้�อมู�ลพัน�กังานที่� เป็2นโป็รแกัรมูเมูอร�ห์ร(อ น�กั

ว'เคราะห์�ระบบ)select * from work where proj_num in ( 15 , 22 ) ;(แสัด้งข้�อมู�ลกัารที่�างานโครงกัาร 15 ห์ร(อ โครงกัาร

22 )

Page 26: Introduction to  Database SQL

26

8 – การใช้�ค์�า Null ในั้การเก/บข้�อมูล ค์�า Null ไมู�เท�าก�บ ค์�าว�าง ค์�า

Null ค์�อไมู�มู การเก/บค์�าใดิ์ๆในั้ Filed นั้��นั้ การท&างานั้ก�บค์�า null ต�องใช้� Operator “is”

ต�วอย์�างเช้�นั้ select * from employee where job is null ;

(แสัด้งข้�อมู�ลพัน�กังานที่� ไมู�มู�ห์น�าที่� )

Page 27: Introduction to  Database SQL

2727

- 9 รปแบบค์&าส��ง : การท&างานั้เช้�งนั้�เสธิ select <filed1 , … , filedn / * > from <table_name> where field_i not in ( value_lits) ;

select <filed1 , … , filedn / * > from <table_name> where field_i != value ;

Page 28: Introduction to  Database SQL

28

ต�วอย์�าง : การท&างานั้เช้�งนั้�เสธิselect * from workwhere proj_num not in ( 15 , 22) ;(แสัด้งข้�อมู�ลกัารที่�างาที่� ไมู�ใช้� โป็รเจ�ค 15 และ

22)

select * from employeewhere job != “Programmer” ;(แสัด้งข้�อมู�ลกัารที่�างานข้องพัน�กังานที่� ไมู�ใช้�

Programmer)

Page 29: Introduction to  Database SQL

2929

- 10 รปแบบค์&าส��ง : การท&างานั้แบบ sub queryselect <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) ;

Page 30: Introduction to  Database SQL

30

Sub-query การ Select ในั้การท&า Sub-query สามูารถึ

เล�อกไดิ์� Filed เดิ์ ย์วเท�านั้��นั้ สามูารถึเล�อกใช้� Operator เช้�งเซ้ำต (in) เมู��อ

Sub-query ให�ผู้ลมูากกว�า 1 ค์�า จัะสามูารถึใช้� Operator เช้�งเปร ย์บเท ย์บ ( = ,

> , < ) ไดิ์� เมู��อ การท&า sub-query ให�ผู้ลค์�าเดิ์ ย์วเท�านั้��นั้

Page 31: Introduction to  Database SQL

3131

ต�วอย์�าง : การท&างานั้แบบ sub queryselect * from workwhere emp_num deptno in ( select emp_num from

employee where job = “Programmer”) ;(แสัด้งข้�อมู�ลกัารที่�างานข้องผ��ที่� ที่�างานห์น�าที่� Programmer – ที่�

อาจมู�ห์ลายคน)select * from workwhere proj_num = ( select proj_num from project

where proj_name = “โรงงานั้แกลงการย์าง” );

(แสัด้งข้�อมู�ลกัารที่�างานข้องผ��ที่� งานในโครงกัาร โรงงานแกัลงกัารยางค� – มู�โครงกัารเด้�ยวแน�นอน)

Page 32: Introduction to  Database SQL

3232

-11 รปแบบค์&าส��ง : การท&างานั้แบบรวมู (Aggregate function)

Select field-0 , [sum(field1 , count(*), min(field2) , max(field3),

avg(filed4) ]From <table_name> Group by filed-0< Having ( condition of aggregate

function) >

Page 33: Introduction to  Database SQL

33

การใช้�งานั้ Aggregate function หากใช้� aggregate function มู�กต�องใช้�ก�บ

function การจั�ดิ์กล,�มู ( group by )

ท,ก filed ท � select มู�กจัะต�องอย์�ในั้ group by ดิ์�วย์ function count มู�กใช้� parameter * แทนั้ช้��อ

field เนั้��องจัากอาจัมู ค์�า null อย์�ในั้บางราย์การ aggregate function ไมู�ใช้� Field ดิ์�งนั้��นั้จั1งไมู�

สามูารถึนั้&ามูาเป3นั้เง��อนั้ไข้ในั้ช้�วงค์&าส��ง where ไดิ์� แต�สามูารถึใช้�เป็2นเง( อนไข้ในช้�วงค�าสั� ง Having

Page 34: Introduction to  Database SQL

34

select job , count(*) from employee group by job ;(น�บจ�านวนพัน�กังานจ�ด้กัล��มูตัามูอาช้�พั)

select emp_num , sum(work_hours) from work group by emp_num ; (รวมูช้� วโมูงที่�างาน จ�ด้กัล��มูตัามูรห์�สัพัน�กังาน)

ตั�วอย�าง การท&างานั้แบบรวมู (Aggregate function)

Page 35: Introduction to  Database SQL

35

select proj_num , min(work_hours) , max(work_hours) from workgroup by proj_num ; (แสัด้งช้� วโมูงที่�างานน�อยที่� สั�ด้ และมูากัที่� สั�ด้ ช้องแตั�ละโครงกัาร)

ตั�วอย�าง การท&างานั้แบบรวมู (Aggregate function) 2( )

Page 36: Introduction to  Database SQL

36

ตั�วอย�าง การท&างานั้แบบรวมู (Aggregate function) (3)select job, count(*) from employeegroup by job having count(*) > 2 ;(น�บจ�านวนพัน�กังาน จ�ด้กัล��มูตัามูอาช้�พั เฉพัาะที่� มู�พัน�กังาน

มูากักัว�า 3 คน)

select emp_num , sum(work_hours) from work

group by emp_num having sum(work_hours) > 20;

(รวมูช้� วโมูงที่�างาน จ�ด้กัล��มูตัามูรห์�สัพัน�กังาน เฉพัาะที่� มู�ช้� วโมูงกัารที่�างานรวมูมูากักัว�า 20 ช้� วโมูง)

Page 37: Introduction to  Database SQL

37

12 รปแบบค์&าส��งท �มู การค์&านั้วณSelect employee.emp_num , proj_num,

chg_hours , work_hours , chg_hours * work_hours

From employee , workWhere employee.emp_num =

work.emp_num ;(แสดิ์งข้�อมูลการท&างานั้ข้องพูนั้�กงานั้แต�ละค์นั้ในั้แต�ละ

โค์รงการ และค์�าตอบแทนั้ท �ไดิ์�)

Page 38: Introduction to  Database SQL

38

13 รปแบบค์&าส��งท �มู การเปล �ย์นั้ช้��อการแสดิ์งผู้ลSelect employee.emp_num , proj_num,

chg_hours , work_hours , chg_hours * work_hours pay

From employee , workWhere employee.emp_num =

work.emp_num ;(แสดิ์งข้�อมูลการท&างานั้ข้องพูนั้�กงานั้แต�ละค์นั้ในั้แต�ละ

โค์รงการ และค์�าตอบแทนั้ท �ไดิ์� แสัด้งคอล�มูน�ค�าตัอบแที่นค(อ pay )

Page 39: Introduction to  Database SQL

39

14 รปแบบค์&าส��งท �มู การเปล �ย์นั้ช้��อตารางSelect e.emp_num , proj_num,

chg_hours , work_hours , chg_hours * work_hours

From employee e, work wWhere e.emp_num = w.emp_num ;(แสดิ์งข้�อมูลการท&างานั้ข้องพูนั้�กงานั้แต�ละค์นั้ในั้

แต�ละโค์รงการ และค์�าตอบแทนั้ท �ไดิ์�)

Page 40: Introduction to  Database SQL

40

สร,ปรปแบบค์&าส��งSelect …..From …..Where ….. and (or) …..Group by …. ( Having ….)Order by ….

Page 41: Introduction to  Database SQL

QUESTIONS


Recommended