ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Key and SQL วรวิทย์ พูลสวัสดิ์
2
ฐานข้อมูล (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 ข้อมูลที่มีความสัมพันธ์กันนำมาเก็บรวมรวมไว้ด้วยกัน เพื่อการใช้ข้อมูลเหล่านั้นร่วมกันอย่างมีประสิทธิภาพ โดยมากมักทำเพื่อตอบสนองการทำงานด้านสารสนเทศ มักเก็บไว้รูปแบบของตารางที่มีความสัมพันธ์กัน Data : Raw Fact 2 2
3
ระบบจัดการฐานข้อมูล (Database Management System)
System Software ที่ ใช้ในการจัดการข้อมูล จุดประสงค์เพื่อสร้างสภาพแวดล้อมที่สะดวกและมีประสิทธิภาพในการจัดเก็บและเข้าถึงข้อมูล ของฐานข้อมูล การเข้าถึง/ใช้ข้อมูล จะใช้ภาษาเชิงโครงสร้าง (Sql) ที่ทำหน้าที่เป็นตัวกลางระหว่างฐานข้อมูลกับผู้ใช้งาน ประกอบไปด้วยฟังก์ชันต่างๆช่วยให้ระบบฐานข้อมูลมีความถูกต้อง (Integrity) และมีความสอดคล้องกัน (Consistency) 3 3
4
Key ในระบบฐานข้อมูล
5
Key หัวใจหลักในการทำงานแบบ relational database Primary Key (PK)
Candidate Key Compound/Composite Key Foreign Key (FK) 5 5
6
Key Definition: A database key is a attribute utilized to sort and/or identify data in some manner. Each table has a primary key which uniquely identifies records. Foriegn keys are utilized to cross-reference data between relational tables. 6
7
Primary Key The primary key of a relational table uniquely identifies each record in the table. It can either be a normal attribute that is guaranteed to be unique (such as Social Security Number in a table with no more than one record per person) or It can be generated by the DBMS. Primary keys may consist of a single attribute or multiple attributes in combination 7
8
Candidate Key A candidate key is a combination of attributes that can be uniquely used to identify a database record without any extraneous data. Each table may have one or more candidate keys. One of these candidate keys is selected as the table primary key. 8
9
Foreign key A foreign key is a field in a relational table that matches the primary key column of another table. The foreign key can be used to cross-reference tables. 9
10
composite key composite key whereby even though this is also a key that consists of 2 or more attributes that uniquely identify an entity occurrence 10
12
12
13
การใช้งานภาษา SQL Structure Query Language
14
ภาษา SQL เป็นภาษาที่ใช้ในการเข้าถึงข้อมูล ในระบบจัดการฐานข้อมูล
เป็นภาษาในแบบ Non Procedural การทำงานพื้นฐาน อยู่บน Set และ Relation แบ่งการทำงานเป็น 3 กลุ่มใหญ่ๆได้แก่ DDL / DML และ DCL
15
เทคนิคการใช้งานภาษา SQL เพื่อใช้ในการแสดงผลข้อมูล
วิเคราะห์ output ดูว่าจะต้องแสดงผลลัพธ์อย่างไรตามความต้องการของโจทย์ วิเคราะห์ input ต้องใช้ข้อมูล (column) จากตาราง (Table) อะไร วิเคราะห์ process จำ syntax หรือ รูปแบบของคำสั่งให้ถูกต้อง วิเคราะห์ว่า ต้องเขียนเงื่อนไขอย่างไร จึงจะได้ผลตามต้องการ 15
16
Syntax : รูปแบบคำสั่ง
17
1 - คำสั่งพื้นฐาน Select <filed_1 , filed_2 , … , filed_n | * >
From <Table_name> ; หากเลือกทุก column สามารถใช้เครื่องหมาย * ได้ ตัวอย่าง select * from employee ; select emp_id , emp_name , emp_lname from employee ; 17
18
2 – คำสั่งแบบมีเงื่อนไข (condition)
Select <filed_1 , filed_2 , … , filed_n / * > From <Table_name> Where < condition > ; 18
19
Condition Condition หรือ เงื่อนไข หมายถึงการระบุความต้องการ มีรูปแบบการเขียนดังนี้คือ <field> <operator> < value > Filed คือ Filed ใดๆที่อยู่ในรายชื่อ Table อยู่ในคำสั่ง From Operator คือคำสั่งในการปฏิบัติการ เช่น = , > , < , != , is null Value ค่าที่ใช้เป็นเงื่อนไข หากเป็นตัวเลขสามารถระบุได้เลย หากเป็นตัวอักษรต้องมีการใส่ " ก่อนและหลังค่าที่เป็นเงื่อนไข
20
ตัวอย่าง - คำสั่งแบบมีเงื่อนไข
Select * from working Where proj_id = 15 ; (เลือกข้อมูลการทำงานโครงการ 15) Where hours > 3 ; (เลือกข้อมูลการทำงานที่มากกว่า 3 ชั่วโมง) Select * from employee where job = "Programmer" ; (เลือกพนักงานที่เป็น Programmer)
21
3 – คำสั่งแบบหลายเงื่อนไข
Select <filed_1 , filed_2 , … , filed_n / * > From <Table_name> Where < condition-1 > <And / Or > <condition-2> ; And ให้ผลเหมือนการ Intersection Or ให้ผลเหมือนการ Union 21
22
ตัวอย่าง – คำสั่งแบบหลายเงื่อนไข
select * from working where proj_id = 15 and work_hours > 3 ; (เลือกพนักงานที่ทำงานโครงการ 15 และทำงานมากกว่า 3 ชั่วโมง : ต้องอยู่โครงการ 15) where proj_id = 15 or work_hours > 3 ; (เลือกพนักงานที่ทำงานโครงการ 15 หรือทำงานมากกว่า 3 ชั่วโมง : อาจทำงานอยู่โครงการอื่น)
23
4 – คำสั่งที่มีการใช้งานหลายตาราง (join)
Select <filed_1 , filed_2 , … , filed_n / * > From <table_1 , table_2 , …, table_n> Where < condition-1 > ; ต้องมีการเชื่อม PK และ FK ของทั้งสองตารางเข้าด้วยกัน (Join) หากมี field ใดที่ชื่อซ้ำกันทั้งสองตาราง เมื่ออ้างถึง ต้อง ระบุชื่อตาราง ตามด้วยชื่อฟิลด์ เช่น working.emp_num หรือ employee.emp_num 23
24
ตัวอย่าง - คำสั่งที่มีการใช้งานหลายตาราง (join)
Select employee.emp_id , emp_name , hours From employee , working Where employee.emp_id = working.emp_id ; ( แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน เนื่องจาก ชื่อพนักงาน อยู่คนละตารางกับ ข้อมูลชั่วโมงทำงาน จึงต้องมีการ join ตารางที่มีข้อมูลเข้าด้วยกัน)
25
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) 25
26
ตัวอย่าง - คำสั่งที่มีการเรียงลำดับ
Select employee.emp_id , emp_name , proj_num,hours From employee , working Where employee.emp_id = working.emp_id Order by employee.emp_id ; (แสดงข้อมูลรหัสพนักงาน ชื่อพนักงาน และชั่วโมงทำงาน เรียงลำดับข้อมูล ตามรหัสพนักงาน)
27
6 – การใช้ Operator : like
Select <filed_1 , filed_2 , … , filed_n / * > From <table_1 , table_2 , …, table_n> Where <filed_1 like “%” > ; คำสั่ง like หมายถึงค่าที่คล้ายกัน โดยมีสัญญลักษ์ % เป็น wild-card ที่ใช้หมายถึงค่าใดๆก็ได้ 27
28
ตัวอย่าง - การใช้ Operator : like
Select * from employee where emp_name like “A%” ; (แสดงข้อมูล พนักงานที่ชื่อขึ้นต้นด้วยอักษร A ) where emp_name like “%A%” ; (แสดงข้อมูล พนักงานที่ชื่อมีอักษร A )
29
7 – การใช้ Operator : in หรือ การทำงานแบบเซต
select <filed1 , filed2 , … , filedn / * > from <Table_name> where field_i in ( value_lits) ; ในวงเล็บทางขวาของ in หมายถึง การมีค่าได้หลายค่า แต่ละค่าคั่นด้วย เครื่องหมาย , (comma) เปรียบเสมือน value_list คือ เซตหรือกลุ่มของค่าที่เราต้องการใช้เป็น เงื่อนไข หากเราใช้ Operator = ค่าทางขวาจะมีได้ค่าเดียวเท่านั้น 29
30
ตัวอย่าง – การใช้ Operator : in
select * from employee where job in ( “Programmer” , “System Analyst”) ; (แสดงข้อมูลพนักงานที่เป็นโปรแกรมเมอร์หรือ นักวิเคราะห์ระบบ) select * from working where proj_id in ( 15 , 22 ) ; (แสดงข้อมูลการทำงานโครงการ 15 หรือ โครงการ 22 )
31
8 – การใช้ค่า Null ในการเก็บข้อมูล ค่า Null ไม่เท่ากับ ค่าว่าง ค่า Null คือไม่มีการเก็บค่าใดๆใน Filed นั้น การทำงานกับค่า null ต้องใช้ Operator “is” ตัวอย่างเช่น select * from employee where job is null ; (แสดงข้อมูลพนักงานที่ไม่มีหน้าที่)
32
9 - รูปแบบคำสั่ง : การทำงานเชิงนิเสธ
9 - รูปแบบคำสั่ง : การทำงานเชิงนิเสธ select <filed1 , … , filedn / * > from <table_name> where field_i not in ( value_lits) ; where field_i != value ; 32
33
ตัวอย่าง : การทำงานเชิงนิเสธ
select * from working where proj_id not in ( 15 , 22) ; (แสดงข้อมูลการทำงาที่ไม่ใช่ โปรเจ็ค 15 และ 22) select * from employee where job != “Programmer” ; (แสดงข้อมูลการทำงานของพนักงานที่ไม่ใช่ Programmer)
34
10 - รูปแบบคำสั่ง : การทำงานแบบ sub query
select <filed1 , filed2 , … , filedn / * > from <Table_name> where field_i = ( select field from table1) ; where field_i in ( select field from table1) ; 34
35
Sub-query การ Select ในการทำ Sub-query สามารถเลือกได้ Filed เดียวเท่านั้น สามารถเลือกใช้ Operator เชิงเซต (in) เมื่อ Sub-query ให้ผลมากกว่า 1 ค่า จะสามารถใช้ Operator เชิงเปรียบเทียบ ( = , > , < ) ได้ เมื่อ การทำ sub-query ให้ผลค่าเดียวเท่านั้น
36
ตัวอย่าง : การทำงานแบบ sub query
select * from working where emp_id in ( select emp_id from employee where job = “Programmer”) ; (แสดงข้อมูลการทำงานของผู้ที่ทำงานหน้าที่ Programmer – ที่อาจมีหลายคน) where proj_id = ( select proj_id from project where proj_name = “โรงงานแกลงการยาง” ); (แสดงข้อมูลการทำงานของผู้ที่งานในโครงการ โรงงานแกลงการยาง – มีโครงการเดียวแน่นอน) 36
37
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) > 37 37
38
การใช้งาน Aggregate function
หากใช้ aggregate function มักต้องใช้กับ function การจัดกลุ่ม ( group by ) ทุก filed ที่ select มักจะต้องอยู่ใน group by ด้วย function count มักใช้ parameter * แทนชื่อ field เนื่องจากอาจมีค่า null อยู่ในบางรายการ aggregate function ไม่ใช่ Field ดังนั้นจึงไม่สามารถนำมาเป็นเงื่อนไขในช่วงคำสั่ง where ได้ แต่สามารถใช้เป็นเงื่อนไขในช่วงคำสั่ง Having
39
ตัวอย่าง การทำงานแบบรวม (Aggregate function)
select job , count(*) from employee group by job ; (นับจำนวนพนักงานจัดกลุ่มตามอาชีพ) select emp_num , sum(work_hours) from working group by emp_num ; (รวมชั่วโมงทำงาน จัดกลุ่มตามรหัสพนักงาน)
40
ตัวอย่าง การทำงานแบบรวม (Aggregate function) (2)
select proj_num , min(work_hours) , max(work_hours) from working group by proj_num ; (แสดงชั่วโมงทำงานน้อยที่สุด และมากที่สุด ชองแต่ละโครงการ)
41
ตัวอย่าง การทำงานแบบรวม (Aggregate function) (3)
select job, count(*) from employee group by job having count(*) > 2 ; (นับจำนวนพนักงาน จัดกลุ่มตามอาชีพ เฉพาะที่มีพนักงานมากกว่า 3 คน) select emp_num , sum(work_hours) from working group by emp_num having sum(work_hours) > 20; (รวมชั่วโมงทำงาน จัดกลุ่มตามรหัสพนักงาน เฉพาะที่มีชั่วโมงการทำงานรวมมากกว่า 20 ชั่วโมง)
42
12 รูปแบบคำสั่งที่มีการคำนวณ
Select employee.emp_num , proj_num, chg_hours , work_hours , chg_hours * work_hours From employee , working Where employee.emp_num = working.emp_num ; (แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)
43
13 รูปแบบคำสั่งที่มีการเปลี่ยนชื่อการแสดงผล (alias)
Select employee.emp_num , proj_num, chg_hours , work_hours , chg_hours * work_hours pay From employee , working Where employee.emp_num = working.emp_num ; (แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้ แสดงคอลัมน์ค่าตอบแทนคือ pay )
44
14 รูปแบบคำสั่งที่มีการตั้งชื่อแฝง(alias) ให้ชื่อตาราง
Select e.emp_num , proj_num, chg_hours , work_hours , chg_hours * work_hours From employee e, working w Where e.emp_num = w.emp_num ; (แสดงข้อมูลการทำงานของพนักงานแต่ละคนในแต่ละโครงการ และค่าตอบแทนที่ได้)
45
สรุปรูปแบบคำสั่ง Select ….. From ….. Where ….. and (or) …..
Group by …. ( Having ….) Order by ….
46
QUESTIONS
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.