ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
SQL หรือ Structured Query Language
2
SQL หรือ Structured Query Language
SQL หรือ Structured Query Language (สครัคเจอร์ คิวรี่ แลง แกวส) คือภาษาที่ใช้ในการเขียนโปรแกรม เพื่อจัดการกับฐานข้อมูล โดยเฉพาะ เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์และเป็น ระบบเปิด (open system) สามารถใช้คำสั่ง SQL กับฐานข้อมูลชนิดใดก็ได้ คำสั่งงานเดียวกันเมื่อสั่งงานผ่านระบบฐานข้อมูลที่แตกต่างกันจะได้ ผลลัพธ์เหมือนกัน ทำให้เลือกใช้ฐานข้อมูลชนิดใดก็ได้ โดยไม่ ติดยึดกับฐานข้อมูลใดฐานข้อมูลหนึ่ง SQL มีโครงสร้างของภาษาที่เข้าใจง่าย ไม่ซับซ้อน มีประสิทธิภาพ การทำงานสูง สามารถทำงานที่ซับซ้อนได้โดยใช้คำสั่งเพียงไม่กี่คำสั่ง เหมาะที่จะใช้กับระบบฐานข้อมูลเชิงสัมพันธ์ (RDBMS)
3
ภาษา SQL ถูกแบ่งออกมาเป็นส่วนประกอบต่างๆ เราเรียกส่วนเหล่านี้ ตามรูปแบบเช่น
Clauses คือองค์ประกอบหนึ่งของ statement และ query (่ส่วนนี้ เป็น Optional) Expressions คือการสร้างผลลัพธ์ออกมาในรูป table ที่ประกอบด้วย column และ row จากข้อมูล Predicates คือรูปแบบเงื่อนไขที่มีผลลัพธ์เป็น true/false/unknown หรือก็คือ Boolean นั่นเอง Queries คือการดึงข้อมูลตามเงื่อนไข (where clause) เป็นส่วนสำคัญ ใน SQL Statements คือสามารถมีผลต่อโครงสร้างข้อมูล, จัดการข้อมูล transactions, program flow, session หรือแม้กระทั่ง วิเคราะห์ปัญหา โดยจำเป็นต้องจบด้วย semicolon (;) ซึ่งเป็นสิ่งจำเป็นที่ต้องมีทุกครั้ง สำหรับ SQL Insignificant whitespace หรือช่องว่าง สำหรับใน SQL statement และ query จะไม่สนใจ ทำให้ SQL สามารถเขียนใน รูปแบบที่หลากหลายสวยงาม
4
ประเภทของข้อมูล (Data Types) ใน SQL
SQL data types เป็นการกำหนดชนิดของข้อมูลในตารางว่าเป็นข้อมูล แบบใด เช่น ตัวเลข ตัวอักษร วันเวลา แบบไม่มีโครงสร้าง ซึ่งสิ่งเหล่านี้จำเป็นตั้งแต่เราเริ่มสร้าง database table เพื่อให้ ข้อมูลที่เราจะใส่ลงสู่ table มีความถูกต้องตามที่วางเอาไว้ อีกทั้ง ยังช่วยให้ฐานข้อมูลหรือ database ของเราทำงานได้ง่ายขึ้นใน การจัดเก็บ และการทำดรรชนี (index) ได้เหมาะสมกับข้อมูลที่เรา จะใช้งาน โดย data types บน database มีด้วยกันหลายชนิด ขึ้นอยู่กับชนิดของฐานข้อมูล หรือ database ที่เราใช้งาน
5
RDBMS (Relational Database Management System)
คือ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่ทำให้ผู้ใช้สามารถจัดการ ข้อมูลได้ง่ายขึ้น RDBMS สามารถใช้คำสั่ง SQL พื้นฐานได้แต่จะมี บางคำสั่งที่เฉพาะกับ RDBMS รุ่นนั้นๆ ในปัจจุบันมีหลายค่ายได้แก่ MS Access SQL Server MySQL SQLite PostGresSQL
6
SQLite ในบทเรียนนี้จะใช้ SQLite ซึ่งเป็นโปรแกรมฐานข้อมูลที่มีขนาดเล็ก มาก (ไม่ถึง 1MB) เก็บฐานข้อมูลเป็นไฟล์โดยไม่จำเป็นต้องมี เซิร์ฟเวอร์ ทำให้ถูกใช้ในหลายๆ โปรแกรมหรือถูกติดตั้งลงไปใน อุปกรณ์พกพาหลายชนิดๆ เช่น iPhone, Android เพื่อใช้ในการเก็บ ข้อมูล แต่การเรียกใช้ต้องคีย์คำสั่งผ่าน Command Line นั่นคือสั่ง ประมวลผลทีละหนึ่งคำสั่ง ต่อมามีผู้พัฒนาเป็น SQLite Studio เพื่อให้ เรียกใช้งานได้ง่ายและสะดวกมากขึ้นในรูปแบบ GUI (Graphic User Interface)
7
คำศัพท์ที่เกี่ยวข้องกับฐานข้อมูล
ฐานข้อมูล (Database) ก่อนที่จะเรียกใช้ข้อมูลจากฐานข้อมูลด้วยคำสั่ง SQL จะต้องทำความ เข้าใจกับคำศัพท์ที่ใช้เกี่ยวกับฐานข้อมูลก่อนเพื่อจะได้สื่อสารได้ตรงกัน โดยคำศัพท์ที่ใช้สื่อสารว่าอะไรคือส่วนไหนของฐานข้อมูลมีดังนี้ คำศัพท์ที่เกี่ยวข้องกับฐานข้อมูล ฟิลด์ (Field) หรือ Attribute names หรือคอลัมน์ คือข้อมูลที่ ประกอบด้วยอักขระต่าง ๆ ตั้งแต่ 1 ตัวขึ้นไป เรคอร์ด (Record) หรือ Tuples หรือ rows คือการนำฟิลด์หลาย ๆ ฟิลด์มารวมกัน ตาราง (Table) หรือ Table name คือการนำเรคอร์ดหลาย ๆ เร คอร์ดมารวมกัน
8
Tables in SQL PName Price Category Manufacturer Table name
Attribute names or ฟิลด์ (Field) Tables in SQL Product PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi Tuples or rows or records
9
ความสัมพันธ์ (Relationships) หรือ RDBMS
10
ส่วนประกอบของตารางเอนทิตี้ (Entity) คือการอ้างอิงถึง สถานที่, บุคคล, สิ่งของ เช่น เอนทิตี้ของนักเรียน เอนทิตี้ของอาจารย์ เอนทิตี้ของสินค้า แอตทริบิวต์ (Attribute) คือข้อมูลที่แสดงลักษณะของเอนทริตี้ ชนิดความสัมพันธ์ของตาราง (Relationship) ความสัมพันธ์แบบหนึ่งต่อหนึ่ง (one to one Relationships) เป็น ความสัมพันธ์ของตารางหนึ่งกับอีกตารางหนึ่งเท่านั้นเช่น อธิบายความสัมพันธ์ คือ นักเรียน 1 คน มีสมุดพกได้ 1 เล่ม ถ้าอ่านสลับกันก็คือ สมุดพก 1 เล่ม สามารถมีนักเรียนได้ 1 คน
11
1. ความสัมพันธ์แบบ One-to-One
เมื่ออยู่ในตาราง (เมื่อหนึ่งแถวในหนึ่งตารางมีความสัมพันธ์กับหนึ่งแถวใน อีกหนึ่งตาราง)
12
2. ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (one to many Relationships)
เป็นความสัมพันธ์ของตารางหนึ่ง ที่มีข้อมูลอยู่ได้หลายตาราง แต่อีก ตารางหนึ่งสามารถมีข้อมูลได้แค่ตารางเดียว ความสัมพันธ์แบบนี้เกิดขึ้น มากที่สุดในการสร้างฐานข้อมูล เป็นความสัมพันธ์ระหว่างหนึ่งสิ่งต่อ หลาย ๆ สิ่ง เช่น อธิบาย สาขาหนึ่งสาขา สังกัดคณะได้เพียงหนึ่งคณะ อ่านกลับกันจะได้ คณะหนึ่งคณะจะมีสาขาสังกัดได้หลายสาขา
13
ความสัมพันธ์แบบ One-to-Many เมื่ออยู่ในตาราง (เมื่อหนึ่งเเถวใน ตารางสามารถสัมพันธ์กับหนึ่งหรือหลายเเถวในอีกตารางหนึ่ง)
14
3. ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (Many to Many)
เป็นความสัมพันธ์ของตารางหนึ่งที่มีข้อมูลได้หลายตาราง และอีก ตารางหนึ่งมีข้อมูลได้หลายตารางเช่นเดียวกันเช่น อธิบาย สินค้าหนึ่งชิ้น สามารถถูกซื้อได้โดยคนหลายคน อ่านกลับกันจะได้ คนหนึ่งคนสามารถซื้อสินค้าได้หลายชิ้น อธิบาย สินค้าหนึ่งชิ้น สามารถถูกซื้อได้โดยคนหลายคน อ่านกลับกันจะได้ คนหนึ่งคนสามารถซื้อสินค้าได้หลายชิ้น
15
ตัวอย่าง ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (Many to Many)
16
ประเภทของคีย์ในระบบฐานข้อมูล
การกำหนดคีย์ในระบบฐานข้อมูลนั้นเป็นการช่วยเพิ่มประสิทธิภาพใน การทำงานของฐานข้อมูล เพราะเป็นการกำหนดการอ้างอิงของข้อมูล การค้นหา จึงทำให้การประมวลของระบบมีความรวดเร็วยิ่ง ซึ่งคีย์ใน ระบบฐานข้อมูลสามารถแบ่งออกได้ 5 ชนิดดังนี้ 1. Primary Key (คีย์หลัก) 2. Secondary Key (คีย์รอง) 3. Compound Key (คีย์รวม) 4. Candidate Key (คีย์คู่เเข่ง) 5. Foreign Key (คีย์นอก)
17
1. Primary Key (คีย์หลัก)
ข้อมูลคอลัมน์หนึ่งในตารางที่ไม่มีค่าซ้ำกับข้อมูลคอลัมน์อื่น เเละต้องไม่เป็น ค่าว่าง (Null) จากรูปจะเห็นว่าคอลัมน์ที่เป็น Primary Key คือ รหัสประจำตัวนักศึกษา เพราะไม่มีค่าซ้ำกับคอลัมน์อื่น เเละไม่เป็นค่าว่าง #อาจมีข้อสงสัยว่าทำไมเราไม่ใช้ ชื่อ หรือ นามสกุล ในการกำหนด Primary Key เพราะชื่อและนามสกุลของคนเราอาจมีเหมือนกันได้ ดังนั้นหาก นักศึกษามีชื่อซ้ำขึ้นมาก็จะไม่สามารถระบุการอ้างอิงได้
18
2. Secondary Key (คีย์รอง)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า อินเด็กซ์ (Index) คีย์ชนิดนี้ เปรียบเสมือนเป็นคีย์รองจากคีย์หลัก กล่าวคือเมื่อเรากำหนดคีย์ หลักเเล้ว DBMS ก็จะสามารถค้นหาข้อมูล เเต่เมื่อไหร่ที่มีข้อมูลเป็น จำนวนมาก DBMS ก็จะต้องทำการค้นหาตั้งเเต่ต้นจนกว่าจะเจอ ซึ่ง ทำให้เกิดการล่าช้า เเต่หากมีคีย์รองเป็นชื่อและนามสกุลก็จะสามารถ ช่วยให้ DBMS ทำการค้นหาได้สะดวกรวดเร็วยิ่งขึ้น #คีย์รองยอมให้ข้อมูลซ้ำกันได้ เเต่หากข้อมูลซ้ำกันมากก็ไม่เป็นผลดี
19
3. Compound Key (คีย์รวม)
ในบางครั้งเรียกคีย์ชนิดนี้ว่า Composite Key เป็นคีย์ที่ใช้คอลัมน์ หลายคอลัมน์มาร่วมกันเป็นคีย์หลัก #เนื่องจากในบางครั้งการกำหนด Primary Key เพียงคอลัมน์เดียวอาจ เกิดการซ้ำของข้อมูลได้
20
4. Candidate Key (คีย์คู่เเข่ง)
เมื่อมีคอลัมน์ที่มีคุณสมบัติครบถ้วนในการเป็น Primary Key คือ ไม่มีค่าซ้ำ ไม่เป็นค่าว่าง จะเห็นว่ามี Candidate Key อยู่ 2 ตัวคือ รหัสประจำตัวนักศึกษาและชื่อ (ถ้ามั่นใจเเล้วว่าชื่อนักศึกษาจะไม่มีค่าซ้ำกันเลย) #ในกรณีนี้หากผู้ออกแบบฐานข้อมูลกำหนดให้คอลัมน์รหัสประจำตัวนักศึกษา เป็น Primary Key ดังนั้นคอลัมน์ชื่อก็จะกลายเป็น Secondary Key อัตโนมัติ
21
เพื่อให้เข้าใจยิ่งขึ้นให้ดูอีกตัวอย่างหนึ่งดังรูป
จะเห็นได้อย่างชัดเจนว่า รหัสประจำตัวนักศึกษาเเละรหัสบัตร ประชาชน จะไม่เป็นค่าซ้ำและค่าว่างอย่างเเน่นอน ดังนั้นรหัส ประจำตัวนักศึกษาเเละรหัสบัตรประชาชน คือ Candidate Key
22
5. Foreign Key (คีย์นอก) เป็นคีย์ที่ใช้เชื่อมความสัมพันธ์กับตารางอื่นๆ
ตารางนักศึกษามีคอลัมน์รหัสประจำตัว นักศึกษาเป็น Primary Key ในตารางการลงทะเบียนมีคอลัมน์รัหัสวิชาเป็น Primary Key เเต่เมื่อ 2 ตารางมีความสัมพันธ์ กัน คอลัมน์รหัสประจำตัวนักศึกษาจะเป็น Foreign Key ของตารางการลงทะเบียน ซึ่ง ความสัมพันธ์เป็นแบบ One-to-Many
23
คำศัพท์ที่เกี่ยวข้องกับ SQL
Data Definition Language (DDL) การสร้างหรือปรับปรุง โครงสร้างของตารางในฐานข้อมูล Create/alter/delete tables and their attributes Data Manipulation Language (DML) การสืบค้น การแทรก การปรับปรุง การลบข้อมูลในตาราง Query one or more tables Insert/delete/modify tuples in tables
24
คำสั่งพื้นฐานของ SQL CREATE DATABASE CREATE TABLE
CREATE VIEW * ไม่สอนในบทเรียนนี้ INSERT SELECT UPDATE DELETE DROP
25
คำสั่งสร้างฐานข้อมูล CREATE DATABASE
โดยชื่อ database ในระบบจะต้องไม่ซ้ำกันภายใน RDBMS ที่ใช้งาน
26
คำสั่งสร้างตาราง CREATE TABLE
การสร้างตารางเพื่อเอาไว้เก็บข้อมูลที่ต้องการ เรียกคำสั่งนี้ว่า SQL Create table statement ข้อมูลแบบตารางต้องกำหนดค่าของ column รวมถึง data type ของ แต่ละ column ว่าจะใช้เก็บข้อมูลชนิดใด
27
ตัวอย่าง data types บน database ส่วนใหญ่
28
จัดกลุ่มของ SQL Data Types ที่มีลักษณะเดียวกันได้ 6 กลุ่มคือ
ตัวเลข ตัวเลขค่าประมาณ วันและเวลา ตัวอักษร (Non Unicode) ตัวอักษร (Unicode) ตัวอักษร (Binary)
29
กลุ่มของ SQL Data Types : ตัวเลข
30
กลุ่มของ SQL Data Types : ตัวเลขค่าประมาณ
31
กลุ่มของ SQL Data Types : วันและเวลา
32
กลุ่มของ SQL Data Types : ตัวอักษร (Non Unicode)
33
กลุ่มของ SQL Data Types : ตัวอักษร (Unicode)
34
กลุ่มของ SQL Data Types : ตัวอักษร (Binary)
35
Workshop 1 ดาวน์โหลดและติดตั้ง SQLite
Workshop 3 นำเข้าข้อมูล (import) จากไฟล์ csv เข้าสู่ตาราง
36
คำสั่ง SELECT เป็นคำสั่งที่ใช้บ่อยที่สุด
รูปแบบ SELECT <attributes> FROM <one or more relations> WHERE <conditions>
37
คำสั่ง SELECT เป็นคำสั่งที่ใช้บ่อยที่สุด
1 การ SELECT ข้อมูลทั้งหมด 2 การ SELECT ข้อมูลบางคอลัมน์ 3 การ SELECT ข้อมูลโดยการจัดลำดับการเเสดงผล 4 การ SELECT ข้อมูลด้วย SELECT... AS (เปลี่ยนชื่อคอลัมน์ในการเเสดงผล) 5 การ SELECT ข้อมูลด้วย Distinct (เเสดงข้อมูลไม่ซ้ำ) 6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล) 7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข) 8 การ SELECT ข้อมูลโดยการคำนวณทางคณิตศาสตร์ 9 การ SELECT ข้อมูลด้วย Aggregate Functions (ฟังก์ชันการรวม) 10 การ SELECT ข้อมูลด้วย Scalar functions (ฟังก์ชันการคำนวณ) 11 การ SELECT ข้อมูลด้วย String functions (ฟังก์ชันตัวอักษร) 12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา) 13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT 14 การ SELECT ข้อมูลด้วย SELECT ... GROUP BY (แบบจัดกลุ่ม) 15 การ SELECT ข้อมูลด้วย HAVING และ WHERE
38
ตัวอย่างข้อมูลนักศึกษา
39
1 การ SELECT ข้อมูลทั้งหมด
เลือกทั้งหมด โดยระบุชื่อตัวแปรทั้งหมด ถ้ามีหลายตัวแปรให้คั่นด้วย เครื่องหมายจุลภาค หรือ comma หรือระบุสัญลักษณ์ * แทนชื่อตัว แปรทั้งหมดจะได้ผลลัพธ์แบบเดียวกัน
40
1 การ SELECT ข้อมูลทั้งหมด
การแสดงผล
41
2 การ SELECT ข้อมูลบางคอลัมน์
ในกรณีที่ต้องการให้เเสดงผลเพียงไม่กี่คอลัมน์ หรือ เฉพาะคอลัมน์ที่ ต้องการเท่านั้น
42
2 การ SELECT ข้อมูลบางคอลัมน์
การแสดงผล
43
3 การ SELECT ข้อมูลโดยการจัดลำดับการเเสดงผล
>>ต้องการข้อมูลรหัสนักศึกษา เเละชื่อนามสกุลของนักศึกษา เเต่ อยากให้ชื่อเเละนามสกุลของนักศึกษาขึ้นก่อนรหัสนักศึกษา
44
3 การ SELECT ข้อมูลโดยการจัดลำดับการเเสดงผล
การแสดงผล
45
4 การ SELECT ข้อมูลด้วย SELECT... AS (เปลี่ยนชื่อคอลัมน์ในการเเสดงผล)
การแสดงผลไม่จำเป็นต้องให้ชื่อหัวข้อเป็นชื่อเดียวกับชื่อคอลัมน์ทุกๆ ครั้ง เพราะตั้งชื่อคอลัมน์อาจมีการสื่อความหมายที่ไม่ชัดเจนต่อการเเส ดงผล
46
4 การ SELECT ข้อมูลด้วย SELECT... AS (เปลี่ยนชื่อคอลัมน์ในการเเสดงผล)
>>ต้องการเเสดงข้อมูลของนักศึกษาทั้งหมด โดยให้หัวข้อเเต่ละ หัวข้อชื่อ "Student ID", "First Name", "Last Name", "Gender", "Age"
47
4 การ SELECT ข้อมูลด้วย SELECT... AS (เปลี่ยนชื่อคอลัมน์ในการเเสดงผล)
การแสดงผล
48
5 การ SELECT ข้อมูลด้วย Distinct (เเสดงข้อมูลไม่ซ้ำ)
เมื่อข้อมูลมีค่าที่เหมือนกันอยู่ในตารางข้อมูล เมื่อเวลาเเสดงผลออกมา ก็จะเห็นข้อมูลซ้ำๆ หลายบรรทัด ซึ่งทำให้ดูยาก
49
5 การ SELECT ข้อมูลด้วย Distinct (เเสดงข้อมูลไม่ซ้ำ)
>>ต้องการทราบว่านักศึกษามีอายุเท่าไรบ้าง การแสดงผล
50
6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล)
เป็นคำสั่งที่ใช้เรียงข้อมูลที่ไม่เป็นระเบียบในตาราง โดยจะเรียงลำดับ จากมากไปหาน้อย หรือ น้อยไปหามากก็ได้ คำอธิบาย ตัว DESC คือตัวกำหนดว่าจะให้มีการเรียงลำดับจากมากไปหาน้อย หรือ จากน้อยไปหามาก ดังนั้นหากมีการกำหนด DESC ไว้เเสดงว่า ต้องการให้ข้อมูลเรียงจากมากไปหาน้อย
51
6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล)
ตัวอย่างที่ 1 >>ต้องการทราบรายชื่อนักศึกษา โดยให้เเสดงรายชื่อ นักศึกษาตามลำดับชื่อจากน้อยไปมาก
52
6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล)
ตัวอย่างที่ 2 >>ต้องการทราบรหัสนักศึกษา เเละรายชื่อของ นักศึกษา โดยให้เเสดงรหัสนักศึกษาจากมากไปน้อย
53
6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล)
ตัวอย่างที่ 3 >>ต้องการทราบอายุ รายชื่อของนักศึกษา โดยให้เเส ดงจากกลุ่มอายุเรียงลำดับจากน้อยไปมาก และในเเต่ละกลุ่มอายุก็ ให้เรียงตามรายชื่อนักศึกษาจากน้อยไปมาก
54
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
คำอธิบาย SELECT คือการเลือกคอลัมน์ที่เรากำหนดเอาไว้ FROM คือการเลือกตารางข้อมูล WHERE คือการกำหนดเงื่อนไข ซึ่งจะอธิบายรายละเอียดเป็นหัวข้อ ย่อย ๆ ไว้ ดังต่อไปนี้
55
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
เงื่อนไขในการ SELECT ข้อมูล มีประเภทของเงื่อนไขหลายเงื่อนไข ได้แก่ 1) การใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT) 2) การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN 3) การเลือกข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND 4) การเลือกข้อมูลที่ตรงกับรูปแบบด้วย LIKE (%,_)
56
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.1 เงื่อนไขในการ SELECT ด้วยการการใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT)
57
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.1 เงื่อนไขในการ SELECT ด้วยการการใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT) ตัวอย่างที่ 1 >>ต้องการทราบรายชื่อนักศึกษาที่มีอายุน้อยกว่า 20 ปี
58
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.1 เงื่อนไขในการ SELECT ด้วยการใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT) ตัวอย่างที่ 2 >>ต้องการทราบรายชื่อนักศึกษาที่เป็นเพศหญิง และมี อายุมากกว่าหรือเท่ากับ 20 ปี
59
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.1 เงื่อนไขในการ SELECT ด้วยการการใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT) ตัวอย่างที่ 3 >>ต้องการทราบว่านักศึกษาที่ไม่ใช่เพศหญิงมีใครบ้าง
60
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.2 การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN เป็นการเลือกการเเสดงผลตามชุดข้อมูลที่เลือกซึ่งหากไม่ใช่ IN ก็ยัง สามารถใช้งานได้ โดยใช้เครื่องหมายทาง Operator เเต่หากมีใช้ IN เข้ามาช่วยจะทำให้สามารถใช้งานได้สะดวก เเละเข้าใจ ง่ายมากขึ้น โดยมีรูปแบบการเรียกใช้งานดังนี้
61
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.2 การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN ตารางข้อมูลนักศึกษา
62
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.2 การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN ตัวอย่างที่ 1 >>ต้องการทราบข้อมูลของนักศึกษาที่อยู่ใน กรุงเทพมหานคร และเชียงใหม่
63
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.2 การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN ตัวอย่างที่ 2 >>ต้องการทราบข้อมูลของนักศึกษาเฉพาะที่ไม่ได้อยู่ ในกรุงเทพมหานคร
64
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.3 การเลือกข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND การเลือกข้อมูลที่อยู่ในช่วงระหว่างจะมีรูปแบบดังนี้
65
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.3 การเลือกข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND ตัวอย่างที่ 1 >> แบบ BETWEEN
66
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.3 การเลือกข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND ตัวอย่างที่ 1 >> แบบ BETWEEN >> ต้องการทราบสินค้าที่มีราคาสินค้าตั้งแต่ 10,000 และ 15,000
67
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.3 การเลือกข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND ตัวอย่างที่ 2 >> แบบ NOT BETWEEN >> ต้องการทราบสินค้าและจำนวนบีทียูที่มีราคาสินค้าไม่ถึง 20,000 และ 30,000
68
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.4 การเลือกข้อมูลที่ตรงกับรูปแบบด้วย LIKE (%,_) การ SELECT ข้อมูลยังสามารถเลือกข้อมูลที่ตรงกับคำที่เราต้องได้ การ SELECT ข้อมูลแบบนี้ใช้รูปแบบ LIKE ซึ่งตัวอย่างที่เราเห็นกันได้ชัดเจน คือ การค้นหาคำใน Google ที่เราพิมพ์เเค่บางคำ เเต่สามารถค้นหาเจอได้ มากมาย วิธีการ SELECT ด้วย LIKE มีอยู่ 2 รูปแบบดังนี้ 7.4.1 การ SELECT ข้อมูล ด้วย LIKE และ % คำอธิบาย % คือสัญลักษณ์ที่เเทนตัวอักษรอะไรก็ได้ กี่ตัวก็ได้ เช่น เรา ต้องการหาคนที่คนที่มีชื่อขึ้นต้นด้วย 'สม' เวลาที่เราเขียนคำสั่งจะได้เป็น 'สม%' เป็นต้น นอกจากนั้น % ยังสามารถอยู่ส่วนท้าย หรือกลางก็ได้ 7.4.2 การ SELECT ข้อมูล ด้วย LIKE และ _ คำอธิบาย _ คือสัญลักษณ์ที่เเทนตัวอักษรอะไรก็ได้ 1 ตัว ต่างกับ % ที่เเทน ตัวอักษรกี่ตัวก็ได้
69
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.4 การเลือกข้อมูลที่ตรงกับรูปแบบด้วย LIKE (%,_) ตัวอย่างที่ 1 >> ต้องการทราบชื่อนักศึกษาที่ขึ้นต้นด้วย ตัวอักษร 'S'
70
7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
7.4 การเลือกข้อมูลที่ตรงกับรูปแบบด้วย LIKE (%,_) ตัวอย่างที่ 2 >> ต้องการทราบชื่อนักศึกษาที่ขึ้นต้นด้วยตัวอักษร 'S‘ และตามด้วยตัวอักษรอะไรก็ได้ 4 ตัว
71
8 การ SELECT ข้อมูลโดยการคำนวณทางคณิตศาสตร์
72
8 การ SELECT ข้อมูลโดยการคำนวณทางคณิตศาสตร์
>> ต้องการทราบส่วนลด 5% ของราคาสินค้าทั้งหมด โดยให้มีการ แสดงผลชื่อสินค้าเเละราคาที่ลดราคา
73
การ SELECT ข้อมูลด้วย Functions (ฟังก์ชัน)
1. Aggregate Functions (ฟังก์ชันการรวม) Scalar functions (ฟังก์ชันการคำนวณ)
74
9 การ SELECT ข้อมูลด้วย Aggregate Functions (ฟังก์ชันการรวม)
75
9 การ SELECT ข้อมูลด้วย Aggregate Functions (ฟังก์ชันการรวม)
ตัวอย่าง >> ต้องการทราบราคาสินค้าโดยเฉลี่ย ราคาที่สูงที่สุด เเละราคาที่ต่ำที่สุด
76
10 การ SELECT ข้อมูลด้วย Scalar functions (ฟังก์ชันการคำนวณ)
ตัวอย่าง >> ต้องการเเสดงรายชื่อสินค้า เเละราคาสินค้าโดยที่ไม่มี จุดทศนิยม เเละให้เรียงราคาสินค้าจากราคาสูงที่สุดไปหาราคา น้อยที่สุด
77
11 การ SELECT ข้อมูลด้วย String functions (ฟังก์ชันตัวอักษร)
ใช้เพื่อเลือกข้อความ หรือตัวอักษร
78
11 การ SELECT ข้อมูลด้วย String functions (ฟังก์ชันตัวอักษร)
ตัวอย่าง >> ต้องการทราบรหัสนักศึกษา เเต่เเสดงเพียง 2 ตัวท้าย ของรหัสนักศึกษา รายชื่อนักศึกษา เเละแสดงเฉพาะที่อยู่ให้เป็นตัวพิมพ์ใหญ่ทั้งหมด
79
12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา)
80
12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา)
ตารางโซนเวลา
81
12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา)
รูปแบบของวันและเวลา
82
12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา)
83
13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT
เป็นการ SELECT ข้อมูลแบบซับซ้อนมากขึ้น หรือ ที่เรียกว่า SELECT ซ้อน SELECT โดยจะมี Main Query เป็นตัว SELECT หลัก เเล้วมี Subquery อยู่ ภายใต้ Main Query *** การทำงานของ SELECT ซ้อน SELECT จะทำการประมวลจาก SELECT ย่อยก่อน
84
13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT
85
13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT
- ต้องทราบอายุของเยาวภาก่อน - เมื่อทราบผลเเล้ว ว่าเยาวภามีอายุ 21
86
13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT
87
14 การ SELECT ข้อมูลด้วย SELECT ... GROUP BY (แบบจัดกลุ่ม)
คือการจัดกลุ่มคำที่ซ้ำกันให้แสดงแค่คำเดียว หรือการจัดกลุ่มของคำ ซ้ำกันให้รวมกลุ่มกัน โดยจะมีการเรียงลำดับตามตัวอักษร เพื่อใช้ใน การวิเคราะห์ หรือทำรายงานสรุปข้อมูล อธิบายโค้ด GROUP BY - table_name คือ ชื่อตารางข้อมูล - column_name คือ ชื่อคอลัมน์
88
14 การ SELECT ข้อมูลด้วย SELECT ... GROUP BY (แบบจัดกลุ่ม)
ตัวอย่างข้อมูลในตาราง CUSTOMERS
89
14 การ SELECT ข้อมูลด้วย SELECT ... GROUP BY (แบบจัดกลุ่ม)
ตัวอย่าง >> การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME รวมถึง SALARY ด้วย GROUP BY จากผลลัพธ์จะเห็นได้ว่า การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดง คอลัมน์ NAME จะมีการจัดกลุ่ม คำซ้ำให้รวมอยู่เป็นกลุ่มเดียวกันและมีการเรียงลำดับตัว อักษรนำหน้าภาษาอังกฤษตัวที่มาก่อน ซึ่งหลังเรียงตามลำดับ รวมทั้ง ผลรวมของ SALARY ตามลำดับของคอลัมน์ NAME ด้วย
90
15 การ SELECT ข้อมูลด้วย HAVING (เงื่อนไขของการจัดกลุ่ม) และ WHERE
SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);
91
15 ตัวอย่าง การ SELECT ข้อมูลด้วย HAVING และ WHERE
ตัวอย่าง ตารางข้อมูล customers
92
15 ตัวอย่าง การ SELECT ข้อมูลด้วย HAVING และ WHERE
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 1; ORDER BY COUNT(CustomerID) DESC;
93
15 ตัวอย่าง การ SELECT ข้อมูลด้วย HAVING และ WHERE
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID) GROUP BY LastName HAVING COUNT(Orders.OrderID) > 10;
94
NULLS in SQL เมื่อใดก็ตามที่ข้อมูลไม่มีค่าใดๆ สามารถระบุเป็นค่าให้เป็น NULL ได้ หมายถึง : ไม่มีค่า มีค่า แต่เราไม่ทราบ ค่านั้นไม่สามารถนำมาใช้ได้ อื่น ๆ โครงสร้างจะกำหนดไว้สำหรับแต่ละ attribute ให้เป็น null หรือไม่ SQL จัดการกับตารางที่มีค่า NULL อย่างไร ?
95
Null Values ทดสอบค่า null : x IS NULL x IS NOT NULL SELECT * SELECT *
จะเห็นว่าผลที่ได้ คือ Persons ทั้งหมด ค่าที่ได้คือค่า NULL SELECT * FROM Person WHERE (age < 25 or age >= 25) IS NULL SELECT * FROM Person WHERE (age < 25 and age >= 25) IS NULL
96
ประเภทการเชื่อมโยงข้อมูลด้วยการ Join Tables
การใช้คำสั่ง SELECT ทั่วๆ ไปเป็นในการดึงข้อมูลข้อมูลจาก ตารางเดียว เเต่ในการปฏิบัติงานจริงเเล้ว อาจต้องมีการดึงข้อมูล จากหลายตาราง โดยอาศัยคอลัมน์ที่ตรงกันของ 2 ตารางเป็น ตัวเชื่อม (Foreign Key) วิธีการนี้เรียกว่า "Join Table" ซึ่งการ Join Table แบ่งออกได้เป็น 2 ประเภท ได้แก่ 1. Inner Join ได้แก่ Equi join และ Self join 2. Outer Join ได้แก่ Left Outer Join และ Right Outer Join
97
ประเภทการเชื่อมโยงข้อมูลด้วยการ Join Tables
98
ประเภทการเชื่อมโยงข้อมูลด้วยการ Join Tables
ตัวอย่าง >> ต้องการทราบรหัสลูกค้าที่ทำการสั่งซื้อสินค้าในรหัส การสั่งซื้อ 05 >> จากการแสดงผลข้างต้นต้องการหาชื่อลูกค้าที่มีรหัสดังกล่าว *** จะเห็นว่าตัวอย่างข้างต้นเป็นการ SELECT ทีละตาราง เเละต้องทำ การ SELECT ถึง 2 ครั้งกว่าจะได้ข้อมูลที่ต้องการ
99
ประเภทการเชื่อมโยงข้อมูลด้วยการ Join Tables
ตัวอย่างการใช้งาน (แบบ Join Table) >> ดังนั้นการ Join Table สามารถลดขั้นตอนได้ดังนี้
100
JOIN TABLE แบบ Inner Join
เป็นการ Join Table ตั้งเเต่ 2 ตารางขึ้นไปที่มี Key หรือ คอลัมน์ตรงกันมาเเสดง เเบ่ง Inner Join ได้เป็น 2 ประเภทคือ Equi Join และ Self Join
101
JOIN TABLE แบบ Inner Join
102
JOIN TABLE แบบ Inner Join
103
JOIN TABLE แบบ Inner Join
>> ต้องการทราบรหัสการสั่งซื้อสินค้า รายชื่อลูกค้า เเละเบอร์โทร ติดต่อ
104
JOIN TABLE แบบ Inner Join (แบบ Equi Join)
เป็นการ Join Table ตั้งเเต่ 2 ตารางขึ้นไปโดยมีเงื่อนไขว่าข้อมูลของ ทั้ง 2 ตารางจะต้องตรงกัน มีค่าเท่ากัน หรือ ใช้เครื่องหมาย "=" ในการ Join ตาราง รูปแบบคำสั่ง
105
JOIN TABLE แบบ Inner Join (แบบ Equi Join)
ตัวอย่าง >>
106
JOIN TABLE แบบ Inner Join (แบบ Equi Join)
ตัวอย่าง >> ต้องการทราบชื่อลูกค้า และราคาสินค้าที่ทำการ สั่งซื้อสินค้า
107
JOIN TABLE แบบ Inner Join (แบบ Self Join)
เป็นการ Join กันเองภายในตารางเดียว เมื่อต้องการเปรียบเทียบ ข้อมูลจากคอลัมน์เดียวกันในตารางเดียวกัน เเต่เนื่องจากต้องการข้อมูลในตารางเดียวกัน จึงต้องใช้นามแฝง (Aliases Name) เพื่อความถูกต้องในการดึงข้อมูล รูปแบบการใช้งาน
108
JOIN TABLE แบบ Inner Join (แบบ Self Join)
109
JOIN TABLE แบบ Inner Join (แบบ Self Join)
ตัวอย่าง >> ต้องการทราบ รหัสการสั่งสินค้า วันที่สั่งสินค้า เเละ รายชื่อลูกค้า ที่มีที่อยู่ในกรุงเทพมหานคร
110
JOIN TABLE แบบ Left Outer Join
111
JOIN TABLE แบบ Left Outer Join
112
JOIN TABLE แบบ Left Outer Join
>> ต้องการทราบชื่อลูกค้า และ รหัสการสั่งซื้อสินค้า
113
JOIN TABLE แบบ Right Outer Join
114
JOIN TABLE แบบ Right Outer Join
ตัวอย่าง
115
JOIN TABLE แบบ Right Outer Join
ตัวอย่าง >> ต้องการทราบชื่อลูกค้า เละ รหัสการสั่งซื้อสินค้า
116
การปรับปรุงฐานข้อมูล
การปรับปรุงฐานข้อมูลมีอยู่ 3 ลักษณะ Insertions การแทรกข้อมูลเข้าสู่ตาราง Deletions การลบข้อมูลในตาราง Updates การปรับปรุงข้อมูลในตาราง บางครั้งทั้งหมดนี้ถูกเรียกว่า “update”
117
Insertions การแทรกข้อมูลเข้าสู่ตาราง
รูปแบบ INSERT INTO table(A1,…., An) VALUES (v1,…., vn) ตัวอย่าง: การแทรกการซื้อครั้งใหม่ไปยังฐานข้อมูล: INSERT INTO Purchase(buyer, seller, product, store) VALUES (‘Joe’, ‘Fred’, ‘wakeup-clock-espresso-machine’, ‘The Sharper Image’)
118
Insertions การแทรกข้อมูลจากตาราง 1 ทุกคอลัมน์เข้าสู่ตาราง 2 โดยใช้ร่วมกับคำสั่ง select
INSERT INTO table2 SELECT * FROM table1 WHERE condition; ตัวอย่าง INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers;
119
Insertions การแทรกข้อมูลจากตารางบางคอลัมน์เข้าสู่ตาราง 2 โดยใช้ร่วมกับคำสั่ง select แบบมีเงื่อนไข
INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition; ตัวอย่าง INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers WHERE Country='Germany';
120
Insertions การแทรกข้อมูลจากตารางบางคอลัมน์เข้าสู่ตาราง 2 โดยใช้ร่วมกับคำสั่ง select แบบมีเงื่อนไข
ตัวอย่าง INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers WHERE Country='Germany';
121
Deletions การลบ ตัวอย่าง : DELETE FROM PURCHASE
WHERE seller = ‘Joe’ AND product = ‘Brooklyn Bridge’ จะเห็นว่า ไม่สามารถลบโดยใช้เงื่อนไขเดียวได้ เนื่องจากมีความสัมพันธ์กันระหว่าง 2 เงื่อนไข
122
Updates การปรับปรุงแก้ไขข้อมูล
ตัวอย่าง : UPDATE PRODUCT SET price = price/2 WHERE Product.name IN (SELECT product FROM Purchase WHERE Date =‘Oct, 25, 1999’);
123
คำสั่งประยุกต์ Advanced SQLizing
UNION , UNION ALL INTERSECT EXCEPT หรือ SUBTRACT Quantifiers Aggregation v.s. subqueries
124
คำสั่งประยุกต์ UNION รวมข้อมูลตั้งแต่ 2 table ขึ้นไป
ในบางครั้งฐานข้อมูล หรือ database ของเรา อาจจะมี table ที่เก็บข้อมูลคล้ายๆกัน ผู้ใช้งานอาจต้องการรวมข้อมูลทั้ง 2 table ในรูปแบบ SQL JOIN statement หรือ การสร้างความสัมพันธ์ระหว่าง column แต่สำหรับข้อมูลที่มี column เหมือนกันรวมถึง data type แบบเดียวกัน เราสามารถนำข้อมูลมารวมกันในเชิงบรรทัด ด้วยคำสั่ง SQL UNION statement โดยข้อมูลที่เลือกมาจำเป็นต้องมีคุณสมบัติดังนี้ * จำนวน column ที่เลือกมาเท่ากัน * มี data type ทั้งหมดชนิดเดียวกัน * จัดเรียง column ในรูปแบบเดียวกัน
125
คำสั่งประยุกต์ UNION รวมข้อมูลตั้งแต่ 2 table ขึ้นไป
รูปแบบ (Syntax)
126
ตัวอย่าง คำสั่งประยุกต์ UNION รวมข้อมูลตั้งแต่ 2 table ขึ้นไป
127
คำสั่งประยุกต์ UNION ALL รวมข้อมูลตั้งแต่ 2 table ขึ้นไป
รูปแบบ (Syntax)
128
ตัวอย่าง คำสั่งประยุกต์ UNION ALL รวมข้อมูลตั้งแต่ 2 table ขึ้นไป
129
INTERSECT and EXCEPT : not in SQL Server
1. INTERSECT เลือกเอาเฉพาะข้อมูลบรรทัดที่มีเหมือนกันเท่านั้นใน 2 table รูปแบบ (Syntax)
130
1. INTERSECT and EXCEPT: INTERSECT and EXCEPT : not in SQL Server
If R, S have no duplicates, then can write without subqueries (HOW ?) (SELECT R.A, R.B FROM R) INTERSECT (SELECT S.A, S.B FROM S) SELECT R.A, R.B FROM R WHERE EXISTS(SELECT * FROM S WHERE R.A=S.A and R.B=S.B) (SELECT R.A, R.B FROM R) EXCEPT (SELECT S.A, S.B FROM S) SELECT R.A, R.B FROM R WHERE NOT EXISTS(SELECT * FROM S WHERE R.A=S.A and R.B=S.B)
131
2. Quantifiers Product ( pname, price, company) Company( cname, city)
ค้นหาบริษัททั้งหมดที่ผลิตสินค้าที่มีราคา < 100 SELECT DISTINCT Company.cname FROM Company, Product WHERE Company.cname = Product.company and Product.price < 100
132
2. Quantifiers Product ( pname, price, company) Company( cname, city)
ค้นหาบริษัททั้งหมดที่ผลิตเฉพาะสินค้าที่มีราคา < 100 เช่นเดียวกับ ค้นหาบริษัททั้งหมดที่สินค้าทั้งหมดมีราคา < 100
133
3. Group-by v.s. Nested Query
Author(login,name) Wrote(login,url) ค้นหาผู้เขียนที่เขียน 10 เอกสาร : จะเห็นว่า มีการค้นหาที่ซ้อนกันอยู่ This is SQL by a novice SELECT DISTINCT Author.name FROM Author WHERE count(SELECT Wrote.url FROM Wrote WHERE Author.login=Wrote.login) > 10
134
3. Group-by v.s. Nested Query
ค้นหาผู้เขียนที่เขียนอย่างน้อย 10 เอกสาร : รูปแบบ SQL โดยใช้ GROUP BY SELECT Author.name FROM Author, Wrote WHERE Author.login=Wrote.login GROUP BY Author.name HAVING count(wrote.url) > 10 This is SQL by an expert ไม่ต้องใช้ DISTINCT : จัดการอัตโนมัติด้วย GROUP BY
135
3. Group-by v.s. Nested Query
Author(login,name) Wrote(login,url) Mentions(url,word) ค้นหาผู้เขียนด้วยคำศัพท์ 10,000 คำ: SELECT Author.name FROM Author, Wrote, Mentions WHERE Author.login=Wrote.login AND Wrote.url=Mentions.url GROUP BY Author.name HAVING count(distinct Mentions.word) > 10000
136
อ้างอิงจากลิงค์ https://mindphp. com/forums/viewtopic. php
อ้างอิงจากลิงค์
137
คำถาม ? ขอบคุณค่ะ
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.