SQL – Web Programming and Web Database

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
BC421 File and Database Lab
Advertisements

UPDATING DATA By SQL (SA&D-9)
เสรี ชิโนดม MS SQLServer 7 เสรี ชิโนดม
กลุ่มคำสั่ง SQL สามารถแบ่งได้ดังนี้
Copyright © 2004, Oracle. All rights reserved. Oracle Practice.
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
เอกสารประกอบการบรรยาย เรื่อง Basic SQL
MySQL.
ข้อดีของฐานข้อมูล 1. หลีกเลี่ยงความขัดแย้งของข้อมูล การจัดเก็บข้อมูลแบบแฟ้มข้อมูล โดยข้อมูลเรื่องเดียวกันอาจมีอยู่หลายแฟ้มข้อมูล ซึ่งก่อให้เกิดความขัดแย้งของข้อมูลได้
SQL - Structured Query Language
Structured Query Language (SQL) (2)
Structured Query Language (SQL)
– Web Programming and Web Database
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
Php with Database Professional Home Page :PHP
Chapter 8 : การควบคุมความปลอดภัย (Security Control)
แก้ไขข้อมูลที่ไม่สามารถกรอกเป็นภาษาไทยได้
Database Programming Exceed Camp #2 24 October 2005.
PHP Connect Database.
MySQL Case study about MySQL On XAMPP server Update : August 23,2012
สร้าง Query ในมุมมอง Design
คือระบบที่รวบรวมข้อมูลไว้ในที่เดียวกัน ซึ่ง ประกอบไปด้วยแฟ้มข้อมูล (File) ระเบียน (Record) และ เขตข้อมูล (Field) และถูกจัดการด้วยระบบ เดียวกัน โปรแกรมคอมพิวเตอร์จะเข้าไปดึงข้อมูล.
ค้นหาข้อมูลที่ต้องการจากฐานข้อมูล (SA&D-10)
Software Engineering Project Presentation
SQL Structured Query Language.
การสอบถามข้อมูลด้วยฟังก์ชั่นสำหรับ
การสอบถามข้อมูลแบบซ้อนกัน
CHARPTER 9 การเชื่อมเทเบิล JOIN…. TABLE.
การใช้ PHP ติดต่อฐานข้อมูลMySQL
Chapter 10 Session & Cookie.
CHAPTER 12 SQL.
Introduction to PHP, MySQL – Special Problem (Database)
SQL Structured Query Language.
SQL (Structure Query Language) ตอนที่ 2 Online available at
SQL - Structure Query Language (Part 2) ภาษามาตรฐานสำหรับนิยาม ข้อมูลและการใช้ข้อมูล A ระบบจัดการฐานข้อมูล 3(2-2) อ. ชนิดา คำเพ็ง สาขาวิชาเทคโนโลยีสารสนเทศ.
การเขียนโปรแกรมบนเว็บ PHP กับ MySQL
การใช้ PHP ติดต่อฐานข้อมูล
Introduction to SQL - 3 (MySQL) – Special Problem (Database)
Introduction to SQL (MySQL) – Special Problem (Database)
PHP: [9] ฐานข้อมูล MYSQL
Lecture 5 SQL (Structured Query Language)
MySQL.
ประชุมเชิงปฏิบัติการพัฒนาชุดคำสั่งประมวลผลข้อมูล
ประเภทของคำสั่งของภาษา SQL
Database Design & Development
ภาษา SQL (Structured Query Language)
SQL Structured Query Language.
SQL (Structured Query Language)
SQL (MySQL, MariaDB) – Web Programming and Web Database
Integrity Constraints
SQL (Structured Query Language)
บทที่ 4 โครงสร้างฐานข้อมูลแบบ Relational (Relational Database Model)
Lecture 5 SQL (Structured Query Language)
SQL (Structured Query Language)
Chapter 6 : แบบจำลอง E-R (Entity-Relationship Model)
Chapter 9 : ภาษาทางด้านฐานข้อมูลคำสั่ง SQL (SQL Command)
PHP (2) - condition - loop
Introduction TO Web PRogramming
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
การจัดการข้อมูลขั้นสูง
รายงานการระบาดศัตรูพืช
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล สำนักงานสภามหาวิทยาลัย
XML, JSON และ AJAX – Web Programming and Web Database
เรื่อง การวิเคราะห์และออกแบบฐานข้อมูล MySQL Database
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล คณะวิทยาศาสตร์
ประกาศกรมสวัสดิการและคุ้มครองแรงงาน เรื่อง กำหนดแบบและวิธีการรายงานผลการฝึกซ้อมดับเพลิงและฝึกซ้อมอพยพหนีไฟทางสื่ออิเล็กทรอนิกส์ วันที่ประกาศในราชกิจจานุเบกษา
การกระจายอายุของบุคลากร เวชศาสตร์เขตร้อน
คำสั่งสร้างฐานข้อมูล
การสรุปผลข้อมูล และ Action Query
Data resource management
ใบสำเนางานนำเสนอ:

SQL 2 030523315 – Web Programming and Web Database Asst. Prof. Dr. Choopan Rattanapoka

PHPMyAdmin ถ้าได้ติดตั้ง Xampp แล้วจะสามารถเข้า PHPMyadmin ได้จาก http://localhost/phpmyadmin หรือ http://127.0.0.1/phpmyadmin PHPMyAdmin เป็นเว็บที่เขียนด้วยภาษา PHP สำหรับให้ผู้ดูแลระบบฐานข้อมูล สามารถจัดการกับฐานข้อมูลได้สะดวกขึ้น มีการส่วนติดต่อกับผู้ใช้ในรูปแบบ หน้าเว็บ ฟรี ** แต่ในกรณีที่ใช้งานจริง ควรจะนำเว็บนี่ออกเพื่อความปลอดภัย **

องค์ประกอบของหน้าเว็บ

ทบทวน และเตรียมฐานข้อมูล (1) สร้างฐานข้อมูล ชื่อ lab10 สร้างตารางชื่อ staff โดยมีโครงสร้างตารางดังนี้

ทบทวน และเตรียมฐานข้อมูล (2) ให้เพิ่มข้อมูลเข้าไปในตารางจนได้ข้อมูลดังนี้

SQL Aggregate Function Aggregate Function คือ การนำค่าของกลุ่มก้อนมาเป็น input เพื่อ ทำ operation อย่างหนึ่งและคืนมาเป็น output ค่าเดียว SQL โดยพื้นฐานจะมี Aggregate Function ให้ใช้ได้ 5 functions คือ AVG (average)  ค่าเฉลี่ย MIN (minimum)  ค่าที่น้อยที่สุด MAX (maximum)  ค่าที่มากที่สุด SUM (summation)  ผลบวก COUNT  นับจำนวน input

ตัวอย่าง : การใช้งาน aggregate function

SQL : GROUP BY (1) เป็นการรวมกลุ่มก้อนเพื่อให้สามารถใช้ aggregate function ลงไป ในแต่ละกลุ่มได้ ตัวอย่าง ต้องการหาเงินเดือนรวมของพนักงานแต่ละวิทยาเขต BKK = 71000 RYG = 58000 PRA = 51500

SQL : GROUP BY (2) สามารถใช้งานร่วมกับ ORDER BY และ LIMIT ได้

SQL : สร้างเงื่อนไขในฟิลด์ที่เกิดจาก GROUP BY ถ้าต้องการแสดงเฉพาะวิทยาเขตที่มีเงินเดือนรวมของพนักงานมากกว่า 55000 จะใช้ Query อย่างไร ?

SQL: HAVING เป็นการเพิ่มเงื่อนไขโดยการใช้ Aggregate function กับคำสั่ง GROUP BY

Subquery ในการ query ข้อมูลจากตารางบางครั้ง เราต้องการใช้คำสั่ง SQL ซ้อนกัน เช่น จากตาราง mysalary ด้านล่าง ถ้าต้องการค้นหาชื่อคนที่มีเงินเดือนมากกว่าหรือเท่ากับ 12000 เขียน SQL อย่างไร ถ้าต้องการค้นหาชื่อคนที่มีเงินเดือนมากกว่าหรือเท่ากับ Tom เขียน SQL อย่างไร (การใช้ SELECT ธรรมดาจะทำไม่ได้ ต้องใช้ subquery) id name Salary 1 John 15000 2 Alex 8000 3 Tom 12000 4 Bob 25000 5 Max 17000

รูปแบบการใช้ subquery สำหรับ SELECT SELECT ฟิลด์ FROM ตาราง WHERE เงื่อนไขบางอย่าง ( SELECT ฟิลด์ FROM ตาราง WHERE เงื่อนไข ); ชุดคำสั่งข้างใน ( ) จะถูกทำงานก่อน

ตัวอย่าง: การสร้าง subquery ถ้าต้องการค้นหาชื่อคนที่มีเงินเดือนมากกว่าหรือเท่ากับ Tom เขียน SQL อย่างไร SELECT name FROM mysalary WHERE salary >= (SELECT salary FROM mytable WHERE name = ‘Tom’); 12000 SELECT name FROM mysalary WHERE salary >= 12000;

แบบฝึกหัด จาก Database schema mysalary(id, name, salary) เขียน SQL เพื่อแสดงเฉพาะชื่อของคนที่มีเงินเดือนมากที่สุด เขียน SQL เพื่อแสดงเฉพาะชื่อของคนและเงินเดือน ของคนที่มีเงินเดือน มากกว่าเงินเดือนเฉลี่ย

การใช้ subquery มากกว่า 1 ตาราง (1) กำหนดให้มีข้อมูล 2 ตาราง ต้องการแสดงชื่อนักเรียนที่มีคะแนนมากกว่า นศ รหัส ‘V002’ ต้องการแสดงชื่อนักเรียนที่มีคะแนนสอบมากกว่า 85 คะแนน student score student_id Name V001 John V002 Tom V003 Alex V004 Bob student_id score V001 95 V002 80 V003 74 V004 81

การใช้ subquery หลัง FROM มีการ query ข้อมูลชุดหนึ่งขึ้นมาก่อน จากนั้น query จากข้อมูลที่ได้มา อีกที การใช้ HAVING สามารถเขียน โดยใช้ subquery หลัง FROM ได้ จะต้องมีการกำหนดชื่อตารางใหม่ ที่เกิดจาก subquery ด้วย ตัวอย่าง: Database schema : customer(name, city) ต้องการหาชื่อเมืองทั้งหมดที่มีลูกค้าอยู่มากกว่า 2 คน SELECT name, COUNT(*) FROM customer GROUP BY city HAVING COUNT(*) > 2;

การทำงานภายในของ subquery หลัง FROM ตาราง customer SELECT city, numcity FROM (SELECT city, COUNT(*) AS numcity FROM customer GROUP BY city) AS A WHERE numcity > 2; name city John Rayong Tom Bangkok Alex Bob Prachinburi Max Ying Thep city numcity Bangkok 4 Prachinburi 1 Rayong 2 city numcity Bangkok 4

การใช้ subquery กับคำสั่ง INSERT ตาราง customer ถ้ามีตาราง customer อยู่แล้ว และมีตาราง rayong_customer ที่ต้องการจะใส่ข้อมูล เฉพาะลูกค้าที่อยู่ที่ระยอง กำหนดให้ Database schema คือ rayong_customer(name, city) ใช้คำสั่ง INSERT INTO rayong_customer SELECT name, city FROM customer WHERE city = ‘Rayong’; name city John Rayong Tom Bangkok Alex Bob Prachinburi Max Ying Thep

การประยุกต์ใช้ Subquery กับ DELETE และ UPDATE ตัวอย่าง 1 : ต้องการลบข้อมูลของคนที่มีเงินเดือนมากกว่า Tom DELETE FROM mysalary WHERE salary > (SELECT salary FROM mysalary WHERE name = ‘Tom’); ตัวอย่าง 2 : ต้องการเพิ่มเงินเดือนให้คนที่เงินเดือนน้อยกว่า Tom เป็น จำนวน 5000 บาท UPDATE mysalary SET salary = salary + 5000 WHERE salary <

การสร้าง Query ด้วยความสัมพันธ์ของหลายตาราง เนื่องจาก MySQL (MariaDB) เป็น Relational Database Management System (RDBMS) ซึ่งหมายถึงระบบฐานข้อมูลเชิง สัมพันธ์ ส่วนใหญ่เพื่อให้ได้ข้อมูลมา จำเป็นต้องเชื่อมข้อมูลของตาราง มากกว่า 1 ตารางเข้าด้วยกัน โดยการเชื่อมข้อมูลของตารางมากกว่า 1 ตาราง จะเรียกว่า Join ตาราง หลังจากที่มีการเชื่อมข้อมูลของตารางแล้ว ตัวดำเนินการต่างๆ ใช้เหมือนกับ ทำงานอยู่กับตารางเดียว

การ Join ตาราง การ join ตารางเป็นการรวมข้อมูลกันระหว่าง ตาราง 2 ตารางหรือ มากกว่า โดยมีรูปแบบที่แตกต่างกัน Inner join Left join Right join Full join (ไม่มีคำสั่งตรงๆ ใน MySQL)

ลองสร้างฐานข้อมูลเพื่อใช้ในการทดลอง ฐานข้อมูลชื่อ testjoin ข้อมูลภายในตาราง teacher และ faculty

SQL : INNER JOIN หรือ JOIN เป็นการดูข้อมูลในแต่ละแถวของทั้ง 2 ตาราง ถ้าข้อมูลตรงกันตามที่กำหนดจะแสดงข้อมูลที่รวมกันนั้นออกมา SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column เมื่อก่อน จะใช้การเชื่อมตารางแทน ด้วย SELECT * FROM teacher, faculty WHERE teacher.fac_id = faculty.fac_id; ซึ่งก็สามารถใช้งานได้ แต่ถือว่าเป็นรูปแบบการใช้งาน เก่า ปัจจุบันแนะนำให้ใช้ INNER JOIN แทน จะเห็นว่า teacher_id ที่มีค่าเป็น 5 ไม่แสดงออกมาเนื่องจากไม่มี fac_id = 6 ในตาราง faculty

SQL : LEFT OUTER JOIN หรือ LEFT JOIN จะเป็นการเชื่อมข้อมูลระหว่าง 2 ตาราง โดยจะคงทุกค่าของตารางด้านซ้ายเอาไว้ SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON table1.column = table2.column

SQL : RIGHT OUTER JOIN หรือ RIGHT JOIN จะเป็นการเชื่อมข้อมูลระหว่าง 2 ตาราง โดยจะคงทุกค่าของตารางด้านขวาเอาไว้ SELECT columns FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column = table2.column

SQL : FULL OUTER JOIN และ UNION ใน MySQL ไม่มี Full outer join ซึ่งไปการแสดงผลทุก record ที่อยู่ใน 2 ตาราง แต่สามารถทำได้ ด้วยการใช้ LEFT JOIN กับ RIGHT JOIN แล้วนำมา UNION กัน

โครงสร้างของฐานข้อมูล HR https://goo.gl/njpI44

SQL-3 Quiz จงเขียน query เพื่อแสดง ชื่อ (first_name), นามสกุล(last_name) และเงินเดือน (salary) ของพนักงานที่มีเงินเดือนมากกว่า พนักงานที่มีนามสกุลว่า Bull จงเขียน query เพื่อแสดงชื่อฝ่าย (department_name) ที่ไม่มีพนักงานสังกัดอยู่ จงเขียน query เพื่อแสดงชื่อฝ่าย (department_name) และจำนวนของพนักงาน ภายในฝ่าย จงเขียน query เพื่อแสดงชื่อฝ่าย (department_name) และที่อยู่ (location_id, street_address, city, state_provice, country_name) ของทุกฝ่าย (department) SELECT employee_id, first_name    FROM employees AS A    WHERE salary >    (SELECT AVG(salary) FROM employees WHERE department_id = A.department_id);  

สร้าง Database สำหรับ Webboard KakKak สร้าง database ชื่อ webboard เลือก Collation เป็น utf8_unicode_ci สร้างตาราง user(id, login, password, name, gender, email, role) category(id, name) post(id, title, content, post_date, cat_id, user_id) comment(id, content, post_date, user_id, post_id)

โครงสร้างตาราง user post comment category