introduction to database sql

Post on 05-Jan-2016

92 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introduction to Database SQL. วรวิทย์ พูลสวัสดิ์. ฐานข้อมูล (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 ข้อมูลที่มีความสัมพันธ์กันนำมาเก็บรวมรวมไว้ด้วยกัน - PowerPoint PPT Presentation

TRANSCRIPT

11

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

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

33

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

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

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

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

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

(Consistency)

4

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

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

DDL / DML และ DCL

5

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

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

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

7

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

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

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

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

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 ;

9

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

Grant , RevokeGRANT SELECT , INSERT ,

UPDATE , DELETE , ALTER ON demo TO user02;

REVOKE ALL PRIVILEGES ON demoFROM user02 ;

1010

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

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

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

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

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

ต�องการ

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

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 ;

1313

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

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

From <Table_name> Where < condition > ;

14

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

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

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

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

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

15

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

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

Select * from work

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

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

1616

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

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

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

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 ช้��วโมูง : อาจัท&างานั้อย์�โค์รงการอ��นั้ )

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

19

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

hoursFrom employee , workWhere employee.emp_num =

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

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

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

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)

21

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

proj_num,hoursFrom employee , workWhere employee.emp_num =

work.emp_numOrder by employee.emp_num ;

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

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 ที่� ใช้�ห์มูายถึ.งค�าใด้ๆกั�ได้�

23

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

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

2424

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

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

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

25

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

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

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

22 )

26

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

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

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

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

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 ;

28

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

22)

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

Programmer)

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

30

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

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

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

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

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 = “โรงงานั้แกลงการย์าง” );

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

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

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

34

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

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

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

35

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

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

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 ช้� วโมูง)

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 ;(แสดิ์งข้�อมูลการท&างานั้ข้องพูนั้�กงานั้แต�ละค์นั้ในั้แต�ละ

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

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 )

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 ;(แสดิ์งข้�อมูลการท&างานั้ข้องพูนั้�กงานั้แต�ละค์นั้ในั้

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

40

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

QUESTIONS

top related