WEBVTT
Kind: captions
Language: th

00:01:03.035 --> 00:01:07.052
(อาจารย์สุธิรา) เดี๋ยวเริ่มเลยแล้วกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่

00:01:07.052 --> 00:01:14.664
สไลด์จะไม่เยอะนะคะ นิดเดียว แล้วก็วันนี้ไม่มีการบ้านนะคะ ไม่มีการบ้าน

00:01:15.197 --> 00:01:19.771
เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถือว่าให้ปีใหม่

00:01:23.607 --> 00:01:28.828
บทนี้นะคะจะเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการ

00:01:28.988 --> 00:01:35.255
โดยใช้คณิตศาสตร์อย่างง่ายนะคะที่เอามา

00:01:35.255 --> 00:01:38.567
เป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย

00:01:40.538 --> 00:01:47.140
โดยพีชคณิตเชิงสัมพันธ์นะคะ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล

00:01:47.140 --> 00:01:51.443
ก็คือการจัดการข้อมูลของเรานะคะ

00:01:51.816 --> 00:01:56.902
จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์นะคะ

00:01:57.062 --> 00:02:01.016
ที่เราสร้างตารางใหม่ขึ้นมานะคะ

00:02:01.176 --> 00:02:04.820
มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้น

00:02:04.820 --> 00:02:07.960
กับข้อมูลในฐานข้อมูลของเรานะคะ

00:02:07.960 --> 00:02:10.901
ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ

00:02:11.460 --> 00:02:16.065
โดยมันจะมีอยู่ 2 กลุ่มคือแบบดั้งเดิมกับแบบพิเศษ

00:02:16.331 --> 00:02:19.186
จะเป็นอย่างละ 4 ตัวนะคะ

00:02:22.942 --> 00:02:28.553
แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ Traditional นะคะ

00:02:28.819 --> 00:02:33.058
ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์

00:02:33.484 --> 00:02:39.782
โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ

00:02:40.235 --> 00:02:46.100
โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำนะคะ

00:02:46.100 --> 00:02:51.393
จะต้องมี Attribute ก็คือในตารางจะต้องมีข้อมูลเกิดขึ้นใช่ไหมคะ

00:02:51.526 --> 00:02:55.860
เช่นตารางนักศึกษา ก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือ

00:02:56.073 --> 00:02:59.239
รหัสนักศึกษาชื่อนามสกุล เป็นต้นนะคะ

00:03:00.758 --> 00:03:05.904
การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง

00:03:06.597 --> 00:03:09.926
มี Product มี Union มี Intersection แล้วก็ Difference

00:03:09.926 --> 00:03:12.443
อันนี้จะต้องเป็นภาษาอังกฤษนะคะ

00:03:12.656 --> 00:03:15.898
เพราะว่าคำสั่งในระบบจัดการฐานข้อมูล

00:03:16.830 --> 00:03:20.267
ก็จะเป็นภาษาอังกฤษประมาณนี้นะคะ

00:03:26.048 --> 00:03:29.013
อันแรก Product นะคะ

00:03:29.572 --> 00:03:33.842
เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด

00:03:34.242 --> 00:03:37.280
หรือทุก ๆ Record ที่เรามีนะคะ

00:03:37.653 --> 00:03:43.247
ที่สามารถเป็นไปได้โดยการจับคู่แบบผลคูณ Cartesian นะคะ

00:03:43.247 --> 00:03:45.667
อันนี้ก็เป็นคณิตศาสตร์อย่างง่ายนะคะ

00:03:46.013 --> 00:03:52.010
คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า TIMES นะคะ T-I-M-E-S

00:03:53.688 --> 00:04:03.391
รูปแบบของมันก็คือในกรอบสี่เหลี่ยมนะคะ A TIMES B ก็คือเอา A กับ B มันมาคูณกันนะคะ

00:04:03.391 --> 00:04:04.729
เดี๋ยวจะมีตัวอย่างให้ดู

00:04:06.435 --> 00:04:08.842
อย่างเช่น ตัวอย่างนะคะ

00:04:10.041 --> 00:04:13.408
เดี๋ยวอาจารย์เขียนให้ดูก่อน เมื่อกี้ A กับ B

00:04:14.127 --> 00:04:18.411
A B ถ้าคำสั่ง Product

00:04:18.597 --> 00:04:22.894
หรือคำสั่งถ้าในฐาน... ในระบบจัดการฐานข้อมูลนี่ใช้คำสั่ง TIMES

00:04:23.613 --> 00:04:27.699
ก็คือเอาทุกตัวที่เป็นไปได้มาคูณกัน

00:04:28.738 --> 00:04:32.188
a คูณ x a คูณ y ใช่ไหมคะ ตัวนี้ ๆ

00:04:33.280 --> 00:04:36.647
b คูณ x คูณ y ก็จะเป็น bx by

00:04:37.846 --> 00:04:40.136
cx cy

00:04:41.308 --> 00:04:44.518
คำสั่งนี้จะง่ายนะคะ ก็คือ

00:04:44.811 --> 00:04:46.762
จับคู่ทุกตัวที่เป็นไปได้

00:04:50.412 --> 00:04:53.107
นะคะ อันนี้จะยังง่ายอยู่

00:04:55.665 --> 00:04:57.503
ตัวอย่างอีกนะคะ

00:04:57.823 --> 00:05:00.389
เหมือนในตัวอย่างค่ะ มีตาราง A

00:05:01.135 --> 00:05:04.613
นะคะ มีตาราง B นะคะ

00:05:05.199 --> 00:05:09.643
ถ้าสั่งให้มันคูณกันก็คือเป็น A TIMES B

00:05:10.176 --> 00:05:17.735
ผลลัพธ์ที่ได้ ก็จะเป็นทุกตัวที่ A กับ B มันสามารถจับคู่กันได้นะคะ

00:05:19.387 --> 00:05:20.736
คำสั่งนี้จะง่าย

00:05:22.308 --> 00:05:28.255
มันก็คือ 3 x 3 ได้ 9 ต้องได้ 9 Record 9 แถวนั่นเองนะคะ ถ้าจะเช็ก

00:05:29.241 --> 00:05:33.403
ในข้อสอบก็มีออกนะ นะคะ อันนี้ยังง่ายอยู่

00:05:35.135 --> 00:05:40.198
ต่อมา การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันนะคะ

00:05:40.358 --> 00:05:44.569
ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation นะคะ

00:05:44.942 --> 00:05:47.650
เพื่อแสดงข้อมูลทุก ๆ Record ก็คือทุก ๆ แถว

00:05:48.183 --> 00:05:50.726
ในรูปแบบของ Union ตามทฤษฎีของเซต

00:05:51.419 --> 00:05:54.360
คำสั่งก็คือ UNION นะคะ

00:05:54.973 --> 00:05:58.598
A UNION B ก็คือเอา A กับ B มารวมกันนะ

00:06:00.143 --> 00:06:01.019
อย่างเช่นตัวนี้

00:06:01.525 --> 00:06:03.733
มีตาราง A กับตาราง B

00:06:05.118 --> 00:06:07.871
ทฤษฎีเซตของ Union นะคะ

00:06:08.510 --> 00:06:11.613
จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน

00:06:12.759 --> 00:06:17.721
อย่างข้อมูล S1 ตาราง A ก็มี ตาราง B ก็มี

00:06:19.266 --> 00:06:26.604
ตามทฤษฎี Union นะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวนะคะ

00:06:26.604 --> 00:06:32.674
จะเห็นว่าจาก 4 Record ก็คือ 4 แถวข้อมูลนะคะ แต่ว่าอันนี้

00:06:33.047 --> 00:06:38.756
ตาราง A ก็มี ตาราง B ก็มีมันซ้ำกัน เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ

00:06:39.262 --> 00:06:46.696
พอมันเอามา Union กัน ข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัดเพราะว่า S1

00:06:47.575 --> 00:06:52.305
มันมีอยู่ทั้ง 2 ตารางก็คือ A กับ B เลย ตามทฤษฎี Union นะคะ

00:06:53.317 --> 00:06:56.091
ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว

00:06:57.423 --> 00:06:59.801
ต่อมา Intersection

00:07:00.121 --> 00:07:01.770
ก็ตามทฤษฎีเซตเหมือนกันค่ะ

00:07:02.303 --> 00:07:07.419
มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record นะคะ

00:07:08.006 --> 00:07:09.588
ที่ปรากฏอยู่ทั้ง 2 ตาราง

00:07:10.973 --> 00:07:16.185
ที่มันทับซ้อนกันนั่นแหละนะคะ ในรูปแบบของ Intersection ตามทฤษฎีของเซต

00:07:16.638 --> 00:07:23.848
คำสั่งก็คือ INTERSECT นะคะ ให้ A INTERSECT B นะคะ

00:07:27.445 --> 00:07:30.961
ตัวอย่างจากตารางเดิมเลยค่ะ A กับ B

00:07:31.867 --> 00:07:33.870
ข้อมูลไหนที่ทับซ้อนกัน

00:07:35.255 --> 00:07:36.566
คือข้อมูล S1

00:07:37.525 --> 00:07:40.592
มันมีทั้ง 2 ตาราง ตาราง A กับตาราง B

00:07:41.605 --> 00:07:45.721
เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น

00:07:47.772 --> 00:07:56.203
นะคะ เพราะฉะนั้นคำสั่ง A INTERSECT B จะมีผลลัพธ์แค่ 1 Record เท่านั้นก็คือ S1

00:07:57.642 --> 00:08:00.049
ตามทฤษฎีของเซตนะคะ

00:08:02.687 --> 00:08:05.883
ต่อมา Difference นะคะ

00:08:06.656 --> 00:08:10.783
ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ

00:08:10.783 --> 00:08:16.165
ที่ปรากฏอยู่ในตารางหนึ่ง แต่อีกตารางหนึ่งไม่มีนะคะ ก็คือ

00:08:16.724 --> 00:08:21.116
อะไรก็ตามที่อยู่ในตารางนั้น แต่ไม่อยู่กับอีกตารางหนึ่ง

00:08:21.489 --> 00:08:24.169
คำสั่งที่ใช้คือคำสั่ง MINUS

00:08:24.675 --> 00:08:29.146
แปลเป็นภาษาไทยก็คือเครื่องหมายลบนั่นเอง ไม่เอานะคะ

00:08:29.146 --> 00:08:36.222
อย่างเช่น A MINUS B ก็คืออยู่ใน A แต่ไม่อยู่ใน B นะคะ

00:08:36.728 --> 00:08:40.350
ก็คือเหมือนตัวที่อาจารย์ทำไฮไลท์สีเหลืองไว้นะ

00:08:42.000 --> 00:08:43.252
ตารางเดิมเลยค่ะ

00:08:45.703 --> 00:08:49.532
ให้คำสั่ง A MINUS B

00:08:50.944 --> 00:08:53.245
อะไรที่อยู่ใน A แต่ไม่อยู่ใน B

00:08:55.643 --> 00:08:59.629
อันนี้ไม่ใช่แน่นอน เพราะ S1 มีทั้ง A ทั้ง B เพราะฉะนั้น

00:09:00.000 --> 00:09:03.586
A MINUS B ก็จะเป็น S4

00:09:08.435 --> 00:09:15.531
ในทางกลับกันค่ะ B MINUS A ก็คืออยู่ใน B แต่ไม่อยู่ใน A นะคะ อยู่ใน B

00:09:15.957 --> 00:09:17.144
ก็คือ S2

00:09:18.449 --> 00:09:21.474
เพราะว่า S1 ไม่ได้ S1 อยู่ใน A เหมือนกันนะคะ

00:09:21.847 --> 00:09:28.261
ในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่า เราจะเอาข้อมูลจากตารางไหน

00:09:28.261 --> 00:09:30.768
เราจะเอาข้อมูลมันไว้ข้างหน้านะคะ

00:09:31.034 --> 00:09:34.672
ถ้าอยู่ใน A ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะ

00:09:35.072 --> 00:09:41.008
แต่ถ้าอยู่ใน B ไม่อยู่ใน A ก็จะเขียนขึ้นด้วย B นำหน้าแบบนี้นะคะ

00:09:41.221 --> 00:09:47.132
ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำ

00:09:47.825 --> 00:09:51.284
มันชื่อตารางอะไร อย่างเช่น ตาราง Student

00:09:54.907 --> 00:09:58.257
Student แล้วก็ MINUS

00:10:01.028 --> 00:10:02.872
Address ก็ได้นะคะ

00:10:04.737 --> 00:10:09.890
อยู่ในตาราง Student แต่ไม่อยู่ในตาราง Address ก็ว่าไปนะคะ

00:10:11.249 --> 00:10:18.000
ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะเป็น Special

00:10:18.000 --> 00:10:23.199
ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ

00:10:23.838 --> 00:10:28.205
โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่

00:10:28.471 --> 00:10:30.937
ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน

00:10:31.150 --> 00:10:33.194
Attribute คืออะไร Attribute คือตัวนี้

00:10:34.260 --> 00:10:38.356
คอลัมน์นะคะ ถ้าเป็นแบบ Traditional Set นี่

00:10:38.676 --> 00:10:42.242
คอลัมน์ทั้ง 2 ตารางหรือ 3 ตารางต้องเท่ากัน

00:10:42.988 --> 00:10:45.681
เท่านั้นนะคะ

00:10:45.681 --> 00:10:49.177
แต่ถ้าเป็น Special คือ คอลัมน์หรือ Attribute นี่

00:10:49.497 --> 00:10:53.813
ไม่จำเป็นจะต้องมีจำนวนเท่ากันนะคะ ไม่จำเป็น

00:10:54.825 --> 00:11:00.580
ซึ่งคำสั่งพวกนี้นี่จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลแต่ละฐานข้อมูล

00:11:00.580 --> 00:11:06.000
อาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ

00:11:07.385 --> 00:11:13.753
โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันก็คือคอลัมน์มันไม่เท่ากันนั่นแหละนะคะ

00:11:14.073 --> 00:11:20.924
แต่ Attribute ของทั้ง 2 ตารางจะถูกนำมาใช้ จะต้องมีเงื่อนไขนะคะ

00:11:21.643 --> 00:11:27.594
จะต้องมีชื่อ Domain ของข้อมูลชื่อเดียวกัน ก็คือชื่อคอลัมน์เดียวกัน

00:11:27.594 --> 00:11:34.509
อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์

00:11:34.509 --> 00:11:40.403
อีกตารางหนึ่งมี 8 คอลัมน์ แต่จะต้องมีสิ่งที่เราจะเอามาดำเนินการนี่

00:11:40.803 --> 00:11:43.254
ชื่อคอลัมน์จะต้องเหมือนกันนะคะ

00:11:43.787 --> 00:11:46.208
คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน

00:11:47.194 --> 00:11:55.401
อันแรกคำสั่ง Restrict หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL

00:11:55.854 --> 00:11:59.195
เราจะใช้คำสั่งเรียกว่า Select นะคะ

00:11:59.595 --> 00:12:01.462
เดี๋ยวประมาณอีก 2 สัปดาห์

00:12:02.847 --> 00:12:04.834
จะต้องได้พิมพ์

00:12:06.139 --> 00:12:09.307
ลองทำโค้ดภาษา SQL ดูนะคะ

00:12:09.733 --> 00:12:13.056
ซึ่งการกระทำเพื่อแสดงข้อมูลใน Record ของตารางนั้น ๆ

00:12:13.056 --> 00:12:18.734
จะต้องตรงตามเงื่อนไขที่ระบุนะคะ เงื่อนไขที่ใช้จะใช้คำว่า WHERE

00:12:20.998 --> 00:12:21.806
นะคะ

00:12:23.378 --> 00:12:28.688
เช่น A WHERE X operator Y อันนี้เป็นต้นนะคะ

00:12:28.954 --> 00:12:30.616
แต่เดี๋ยวตอนที่เราทำ

00:12:31.762 --> 00:12:36.247
ในโปรแกรมจริง ๆ นี่ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้

00:12:36.460 --> 00:12:39.633
อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ นะคะว่า

00:12:40.033 --> 00:12:43.893
เราจะต้องเจอคำสั่งพิเศษอะไรบ้างในการจัดการฐานข้อมูล

00:12:44.905 --> 00:12:49.453
นะคะ ตัวอย่างเดิมค่ะ ตาราง A กับ B นะคะ

00:12:50.119 --> 00:12:56.547
ในตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะคอลัมน์มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพได้ชัดเจนนะคะ

00:12:56.547 --> 00:12:58.873
อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน

00:13:03.029 --> 00:13:07.094
พอใช้คำสั่ง Select หรือ Restrict นะคะ

00:13:07.360 --> 00:13:09.512
จะต้องมาคู่กับคำว่า WHERE เสมอ

00:13:10.205 --> 00:13:11.328
อย่างเช่น

00:13:12.713 --> 00:13:15.386
ขึ้นต้นด้วย B ก็คือในตาราง B

00:13:16.398 --> 00:13:21.379
ให้ดูที่เงื่อนไข CITY CITY คือตรงนี้ แปลว่าชื่อเมืองนะคะ

00:13:22.338 --> 00:13:26.309
ในตาราง B  ค่าของคอลัมน์ City

00:13:26.789 --> 00:13:30.207
อันไหนที่มีค่าเท่ากับ Chai Nat

00:13:33.457 --> 00:13:39.621
เราก็ดูเลยค่ะ ตาราง B City Chai Nat นะคะ

00:13:39.914 --> 00:13:43.083
พอเราพิมพ์ B WHERE CITY = ‘Chai Nat’

00:13:43.243 --> 00:13:49.977
ผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ Record ที่ S2 ทั้งหมด

00:13:52.561 --> 00:13:56.720
นะคะ เพราะว่าเงื่อนไขก็คือ ในตาราง B จังหวัด

00:13:57.066 --> 00:13:59.515
ข้อมูลอะไรที่มีข้อมูลว่า ‘Chai Nat’

00:14:00.980 --> 00:14:03.517
นะคะ เราต้องยกมาทั้งหมดมาแสดงผล

00:14:12.616 --> 00:14:18.063
ต่อมาเป็น Project นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถว

00:14:18.063 --> 00:14:20.620
โดยเลือกมาเพียงแค่บางคอลัมน์

00:14:21.206 --> 00:14:24.158
เช่นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ

00:14:24.771 --> 00:14:27.167
ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา

00:14:27.327 --> 00:14:32.744
โดยที่ในตารางข้อมูลนักศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้

00:14:32.984 --> 00:14:36.614
แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น

00:14:36.827 --> 00:14:41.390
เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล

00:14:42.000 --> 00:14:46.550
คือมันจะเป็นคำสั่งเกี่ยวกับการทำ Project นั่นเองนะคะ

00:14:46.976 --> 00:14:53.853
รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะ ตารางเดิม

00:14:56.171 --> 00:15:04.822
คำสั่ง A ในวงเล็บ SName กับ Age นะคะ ก็คือ อธิบายก็คือ

00:15:04.822 --> 00:15:06.972
เอาข้อมูลในตาราง A เท่านั้น

00:15:09.130 --> 00:15:11.704
อยู่ในคอลัมน์ SName

00:15:12.317 --> 00:15:14.463
และคอลัมน์ Age

00:15:16.861 --> 00:15:20.146
ผลลัพธ์ที่ได้จะแสดงผลแค่นี้

00:15:20.785 --> 00:15:26.348
จากตอนแรกมันมีแค่ มันมี 4 คอลัมน์ใช่ไหมคะ 1 2 3 4

00:15:27.094 --> 00:15:31.673
อาจารย์ให้แสดงผลแค่ SName กับ Age เท่านั้น

00:15:32.845 --> 00:15:37.290
อันนี้คือการทำงานของคำสั่ง Project นะคะ

00:15:37.583 --> 00:15:43.107
คืออาจจะมีเป็นร้อย ๆ คอลัมน์ อาจารย์อาจจะเรียกดูแค่ คอลัมน์ที่อาจารย์สนใจ

00:15:43.826 --> 00:15:46.321
เราจะใช้คำสั่ง Project นะคะ

00:15:48.133 --> 00:15:52.255
เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ อันนี้แค่ตัวอย่างคร่าว ๆ ก่อนนะ

00:15:54.253 --> 00:16:01.328
หรืออย่างเช่น เอ๊ะ ผลลัพธ์ทำไมมันโชว์แค่รหัส S1

00:16:03.033 --> 00:16:05.295
คำสั่งที่จะต้องใช้คืออะไร

00:16:07.346 --> 00:16:12.748
เงื่อนไขของคำสั่งคือ ดูในตาราง B นะคะ

00:16:13.521 --> 00:16:17.983
โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok

00:16:19.102 --> 00:16:22.956
แล้วให้แสดงผลเฉพาะ S# เท่านั้น

00:16:26.366 --> 00:16:34.188
คืออยากรู้แค่รหัสที่มีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ

00:16:34.561 --> 00:16:36.404
ก็โชว์แค่ S1 เท่านั้น

00:16:36.990 --> 00:16:41.842
จากเมื่อก่อนนี้ที่อาจารย์บอกว่า WHERE CITY = Bangkok

00:16:42.000 --> 00:16:45.078
ปกติแล้วมันแสดงข้อมูลทุกทุกคอลัมน์ใช่ไหมคะ

00:16:45.318 --> 00:16:52.163
แต่ถ้าอาจารย์กำหนดให้มันแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น ก็สามารถทำได้นะคะ

00:16:52.163 --> 00:16:54.202
อันนี้คือความสามารถของคำสั่ง Project

00:16:59.264 --> 00:17:03.928
ต่อมาคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด

00:17:04.594 --> 00:17:08.104
ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป

00:17:08.983 --> 00:17:12.117
โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกัน

00:17:12.676 --> 00:17:16.274
อาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้นะคะ

00:17:16.700 --> 00:17:20.628
แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกัน Domain ของข้อมูลต้องเท่ากัน

00:17:21.267 --> 00:17:24.714
รูปแบบคำสั่งก็คือ A Join B นะคะ

00:17:25.034 --> 00:17:26.515
มาดูตัวอย่างกัน

00:17:31.657 --> 00:17:32.947
Join นะคะ

00:17:37.929 --> 00:17:43.255
จะคล้าย ๆ กับ Union นะคะ แต่เงื่อนไขคือ

00:17:43.415 --> 00:17:47.434
จะต้องมี Domain หรือว่าคอลัมน์ที่เท่ากันถึงจะ Join ได้ นะคะ

00:17:47.700 --> 00:17:51.031
อย่างตัวนี้มี 2 คอลัมน์ อันนี้มี 2 คอลัมน์

00:17:51.324 --> 00:17:53.470
พอ Join กันข้อมูลที่ทับซ้อนกัน

00:17:54.000 --> 00:17:57.606
จะอยู่ในรูปแบบคล้าย ๆ กับคำสั่ง Union นะคะ

00:18:00.297 --> 00:18:02.259
อย่างเช่นตัวนี้ คำสั่ง Join

00:18:04.364 --> 00:18:05.881
มีอะไรที่เหมือนกัน

00:18:06.654 --> 00:18:07.491
มี City

00:18:08.770 --> 00:18:11.461
ใช่ไหมคะ A Join B

00:18:13.939 --> 00:18:21.017
อันนี้มี 6 คอลัมน์นะคะ 1 2 ตัวนี้นะคะ

00:18:21.763 --> 00:18:23.091
City เหมือนกัน

00:18:24.663 --> 00:18:28.085
แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่

00:18:28.565 --> 00:18:33.291
มันจะต้องดูพิจารณาใน Record ของรหัสด้วยนะคะ

00:18:33.531 --> 00:18:37.371
เพราะฉะนั้นถ้ามันเกินมานะคะ

00:18:37.797 --> 00:18:41.087
มันเกินเราจะต้องทำข้อมูลซ้ำให้เกิดขึ้น

00:18:41.380 --> 00:18:47.084
อันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ

00:18:47.510 --> 00:18:51.206
เพื่อให้ผลลัพธ์ที่ได้นี้ทุก ๆ Record นะคะ

00:18:51.472 --> 00:18:54.011
มีค่า Attribute ก็คือที่เท่ากัน

00:18:56.036 --> 00:19:02.230
เดี๋ยวอันนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำตัวโปรแกรมเลย

00:19:03.109 --> 00:19:07.529
ต่อมาจะเป็นการแสดงข้อมูลจาก 2 Relation นะคะ

00:19:07.822 --> 00:19:13.401
โดยที่ Relation หรือว่าทั้ง 2 ตารางนี่ มี Attribute หรือว่ามีคอลัมน์นี่

00:19:13.587 --> 00:19:17.199
อย่างน้อย 1 คอลัมน์ที่เหมือนกันนะคะ

00:19:17.599 --> 00:19:23.494
ผลลัพธ์จากคอลัมน์นะคะ จากตารางที่มีจำนวน Attribute มากกว่านี่

00:19:24.000 --> 00:19:26.067
จะถูกจับคู่นะคะ

00:19:26.626 --> 00:19:33.302
กับอีกคอลัมน์หนึ่งที่อีกคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่านะคะ

00:19:33.302 --> 00:19:36.981
คำสั่งรูปแบบก็คือ A DEVIDED BY B

00:19:37.247 --> 00:19:42.375
มันจะเป็นคล้าย ๆ กับการหารนะคะ

00:19:44.133 --> 00:19:45.956
คำสั่งตัวนี้

00:19:48.327 --> 00:19:56.265
การเป็นตัวหารนะคะ จะต้องเป็น Sub set ของตัวตั้งนะคะ

00:19:57.304 --> 00:20:04.856
ก็คือในตัวตั้ง มี a ไหม มี มี b ไหม มี มี c ไหม มี นะคะ

00:20:04.856 --> 00:20:07.744
ผลลัพธ์ทุกตัวคือตัวที่ Match กับตัวหาร

00:20:09.129 --> 00:20:14.302
อะไรบ้างที่อยู่ใน A นะคะ A มี x y z

00:20:15.128 --> 00:20:18.961
B มีแค่ x C มีแค่ x เพราะฉะนั้น

00:20:19.814 --> 00:20:24.328
สิ่งที่เอา a b c หารได้ครบทุกตัว

00:20:24.994 --> 00:20:26.410
มีแค่ x ตัวเดียว

00:20:28.008 --> 00:20:34.848
ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา

00:20:35.061 --> 00:20:40.124
แล้วมีแค่ x ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้

00:20:42.389 --> 00:20:48.831
หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google นะคะ

00:20:49.524 --> 00:20:54.968
อาจารย์อยากได้กระเป๋าสีแดง มี 6 ล้อลาก

00:20:55.101 --> 00:20:59.616
เงื่อนไข อยากได้กระเป๋าสีแดง มีล้อ 6 ล้อ

00:21:00.975 --> 00:21:05.162
อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น

00:21:05.828 --> 00:21:07.979
เป็นต้นนะคะ เป็นต้น

00:21:10.537 --> 00:21:11.428
เช่นตัวอย่าง

00:21:14.865 --> 00:21:18.469
มีข้อมูลนะคะ

00:21:19.961 --> 00:21:23.235
ในตาราง A มีข้อมูลตามนี้

00:21:24.000 --> 00:21:27.244
ตาราง B มีคอลัมน์เดียวคือตัวนี้ P2

00:21:28.549 --> 00:21:31.414
ให้ A DEVIDED BY B ก็คือ

00:21:32.107 --> 00:21:37.179
มีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้างของ A

00:21:37.818 --> 00:21:39.268
อันนี้ P2

00:21:41.160 --> 00:21:42.509
อันนี้ P2

00:21:44.719 --> 00:21:50.246
เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 Record เท่านั้น

00:21:51.898 --> 00:21:55.319
ที่มี P2 อยู่ด้วยนะคะ

00:21:56.331 --> 00:22:01.206
อันนี้ก็จะยังตรงตามเงื่อนไขนะคะ

00:22:04.270 --> 00:22:07.864
ถ้าเพิ่มอีกนะคะ

00:22:09.915 --> 00:22:25.050
B  P1 P2 P3 P6  S2 มีแค่นี้ ไม่ตรง S3 มีแค่นี้ ไม่ตรง S4 มีแค่นี้ ไม่ตรง

00:22:25.396 --> 00:22:31.030
มีที่ตรงแค่ S1 เท่านั้นที่เอา B ทุกตัวหารได้ลงตัว

00:22:32.149 --> 00:22:37.565
อันนี้คือหลักการนะคะ ก็คือการหารนั่นแหละ ต้องหารลงตัวนะคะ

00:22:38.604 --> 00:22:41.186
วันนี้จะประมาณนี้เพราะว่าเดี๋ยว

00:22:41.745 --> 00:22:47.247
อาจจะให้เช็กโปรแกรมค่ะล่าม เนื้อหาจะมีแค่นี้ เดี๋ยวจะเช็กในห้องแล็บว่า

00:22:47.620 --> 00:22:50.010
โปรแกรมที่จะใช้สมบูรณ์หรือเปล่า

00:22:50.809 --> 00:22:57.790
ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะเพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ

00:22:58.802 --> 00:23:03.543
ก็เลยสั้นนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อน

00:23:03.943 --> 00:23:07.774
สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยว

00:23:08.280 --> 00:23:14.998
เนื้อหาจะหมดเท่านี้ แล้วเดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ

00:23:15.611 --> 00:23:20.600
วันนี้ก็ขอบคุณล่ามค่ะ กับขอบคุณถอดความด้วยนะคะประมาณนี้ค่ะ

00:23:20.600 --> 00:23:23.404
เพราะว่าเดี๋ยวเช็กห้องแล็บก่อน ขอบคุณมากค่ะ

