280 likes | 412 Views
Introduction to SQL ( MySQL ) 353352 – Special Problem (Database). Choopan Rattanapoka. SQL (Structured Query Language). SQL ที่ใช้ในระบบฐานข้อมูลแบบ Relational Database เกิดมาจากพื้นฐานของ Relational Model อย่างเช่น Relational Algebra SQL ประกอบไปด้วยหลายส่วน
E N D
Introduction to SQL (MySQL) 353352 – Special Problem (Database) ChoopanRattanapoka
SQL (Structured Query Language) • SQL ที่ใช้ในระบบฐานข้อมูลแบบ Relational Database เกิดมาจากพื้นฐานของ Relational Model อย่างเช่น Relational Algebra • SQL ประกอบไปด้วยหลายส่วน • Data-Definition Language (DDL) : เป็นคำสั่งเพื่อกำหนด relation schemas • Interactive data-manipulation language (DML) : เป็นการรวมคำสั่งใน query language ที่มาจากพื้นฐานของ relational algebra และ relational calculus • Embedded DML : อยู่ในรูป library เพื่อติดต่อกับภาษาโปรแกรมอื่นๆเช่น C, Pascal, PHP • View Definition : คำสั่งเกี่ยวกับการสร้าง view • Authorization : คำสั่งเกี่ยวกับสิทธิการเข้าถึงข้อมูล • Integrity : คำสั่งเกี่ยวกับการกำหนดความถูกต้องของข้อมูล • Transaction Control : คำสั่งเกี่ยวกับการเริ่มต้นและสิ้นสุดของ transaction เช่น lock
MySQL • MySQLเป็นโปรแกรมระบบฐานข้อมูลแบบ Relational Database System • เป็น open source และสามารถ download มาใช้ได้ Free • สามารถทำงานได้กับระบบปฎิบัติการสำคัญๆ ได้หมด เช่น Windows, Linux, Mac OS • Website: http://www.mysql.com
AppServ • ในการเรียนการสอนต่อไป เราจะใช้ AppServซึ่งไปการรวม software หลายอย่างเข้าด้วยกัน เพื่อเป็น package ที่ง่ายในการติดตั้ง และ ใช้งาน • Website: http://www.appservnetwork.com • ในโปรแกรม AppServ (AppServ 2.5.10) จะประกอบไปด้วย • Apache 2.2.8 : เป็นโปรแกรม web server • PHP 5.2.6 : module PHP ที่ทำให้ web server สามารถใช้งานภาษา PHP ได้ • MySQL 5.0.51b : ระบบฐานข้อมูล mySQL • phpMyAdmin-2.10.3 : เป็น web page ที่ช่วยในการติดต่อการระบบฐานข้อมูล mySQLทำให้ทำงานกับระบบฐานข้อมูล mySQLได้ง่ายขึ้น
AppServ • เมื่อติดตั้งโปรแกรม AppServสามารถดูการทำงานว่าเริ่มต้นทำงานได้ด้วยดี โดยเปิด web browser และพิมพ์ 127.0.0.1 ที่ช่อง URL
การใช้ MySQLผ่านทาง terminal • ใน Windows ให้กด control panel -> run -> พิมพ์ cmd • เมื่อได้ terminal ให้พิมพ์ mysql –u root –p • หมายถึงเรียกใช้งานโปรแกรม mysqlโดยจะเข้าสู่ระบบฐานข้อมูลแบบ user (-u) ที่ชื่อ root และ –p หมายถึง เป็น account ที่มี password ป้องกันไว้อยู่ • เมื่อโปรแกรมถาม password ให้ใส่ password ของ root ที่ตั้งเอาไว้
การใช้ MySQLผ่านทาง terminal • ถ้าพิมพ์รหัสถูกต้องจะเข้าสู่ prompt ของโปรแกรม MySQL
คำสั่ง MySQL • เราสามารถตรวจดูระบบฐานข้อมูลทั้งหมด ที่ root สามารถมองเห็นด้วยคำสั่ง show databases;
คำสั่ง MySQL • ถ้าติดตั้ง AppServจะมีฐานข้อมูลเริ่มต้นอยู่ 4 ฐานข้อมูล • Information_schemaและ mysqlเป็นฐานข้อมูลที่ใช้ในการตั้งค่าระบบของ MySQL • Phpmyadminเป็นฐานข้อมูลที่เก็บค่าระบบของPhpMyAdmin • Test เป็นฐานข้อมูลทดลอง • เราสามารถเลือกการทำงานว่าจะทำงานกับฐานข้อมูลตัวไหนด้วยคำสั่ง use <ชื่อฐานข้อมูล>; เช่น use phpmyadmin;
คำสั่ง MySQL • เราสามารถทราบว่าระบบฐานข้อมูลที่เราใช้อยู่นั้นประกอบไปด้วย ตาราง อะไรบ้าง โดยการใช้คำสั่ง show tables;
การดูโครงสร้างของตารางที่ถูกสร้างมาแล้วการดูโครงสร้างของตารางที่ถูกสร้างมาแล้ว • สามารถดูโครงสร้างของตารางได้โดยใช้คำสั่ง DESCRIBE <ชื่อตาราง> หรือ DESC <ชื่อตาราง>;
Let’s go SQL • ในการค้นหาข้อมูลด้วย Relational Algebra ส่วนใหญ่จะอยู่ในรูป • ใน SQL นั้นจะมีคำสั่งในรูป SELECT A1, A2, … , An FROMR1, R2, … , Rm WHEREP
Relational Algebra -> SQL จาก Relational Schema Person(id, name, age) Relational Algebra เพื่อหารหัส และ ชื่อ ของคนที่มีอายุมากกว่า 20 SQL : SELECTid, name FROMpersonWHEREage > 20;
Relational Algebra -> SQL • ในกรณีที่ Relational Algebra ไม่มีการใช้ project ( ) หมายถึงให้แสดงผลลัพธ์ออกมาทุกฟิลด์ ซึ่งตรงกับเครื่องหมาย “*” ใน SQL • Relational Algebra • SQL SELECT*FROMpersonWHEREage > 20
Relational Algebra -> SQL • ในกรณีที่ Relational Algebra ไม่มีการใช้ select ( ) หมายถึงไม่มีเงื่อนไขในการกรองผลลัพธ์ ดังนั้นใน SQL สามารถละ WHERE ออกไปได้ • Relational Algebra • SQL SELECTid,nameFROMperson
Relational Algebra -> SQL • ถ้าอยากจะแสดงข้อมูลทุกแถว และทุกหลักในตาราง สามารถเขียนด้วย SQL คือ SELECT*FROM<ชื่อตาราง> เช่น SELECT * FROM person
SQL : SELECT • คำสั่ง SELECT ใน SQL ตามด้วยฟิลด์ที่จะค้นหา วิธี SELECT มีอยู่ 2 แบบ • SELECT ALL (เป็น default ของคำสั่ง SELECT ถ้าไม่ระบุ) • SELECT DISTINCT
SQL : SELECT • คำสั่ง SELECT สามารถทำการ + , - , * , / กับฟิลด์ที่เลือกแสดง ออกมาได้
SQL : FROM • ใช้สำหรับเลือกตารางที่จะค้นหาข้อมูล ถ้าใส่มากกว่า 1 และคั่นด้วยเครื่องหมาย “,” หมายถึงจะทำผลคูณ cartesianของตารางนั้นๆ
SQL : WHERE • ใน Relational Algebra เงื่อนไขของ จะเปลี่ยนจากสัญลักษณ์ทางคณิตศาสตร์ เป็น สัญลักษณ์ที่พิมพ์ได้ทาง keyboard ปกติ • Logical Operations (RA SQL) • AND • OR • NOT • Arithmetic Operations (SQL) • >, <, <=, >=, =, <>
Exercise 1 • กำหนดตารางนักเรียนที่มีโครงสร้างดังนี้ Student(Fname, Lname, Faculty, GPA) Fname = ชื่อ Lname = นามสกุล Faculty = คณะ GPA = คะแนน GPA • จงเขียน SQL เพื่อหา • ชื่อและนามสกุลของนักเรียนที่อยู่ที่คณะ “วทอ” • นามสกุลของนักเรียนที่มี GPA > 2.00 • ทุกข้อมูลของนักเรียนที่มีนามสกุล “ชินวัด” และ GPA < 2.00 • ทุกข้อมูลของนักเรียนที่มีนามสกุล “ชินวัด” หรือนามสกุล “วัดชิน”
SQL : UNION • ใน SQL สามารถทำการรวมค่าของ 2 SQL statements ด้วยการใช้คำสั่ง • UNION ลบข้อมูลที่ซ้ำกันออก • UNION ALL เก็บข้อมูลที่ซ้ำกันไว้
SQL : Set Difference • ใน MySQLไม่มีคำสั่ง set difference โดยตรงแต่สามารถเขียนได้ ดูตัวอย่าง • SELECTcust_idFROM borrowerWHEREcust_idNOT IN (SELECTcust_idFROM depositor);
SQL : Rename • ใน SQL การเปลี่ยนชื่อสามารถเปลี่ยนได้ทั้งชื่อ ฟิลด์ และ ชื่อตารางด้วยคำสั่ง ชื่อเก่า AS ชื่อใหม่ ตัวอย่าง
SQL : Set Intersect • ใน MySQLไม่มีคำสั่ง intersect ให้ใช้โดยตรงแต่สามารถเขียนได้ ดังนี้ • SELECTcust_idFROM borrowerWHEREcust_id IN(SELECTcust_idFROM depositor)
SQL : Natural Join CustName CustCity วิธีที่ใช้ Cartesian product : วิธีที่ใช้ Natural-Join :
Exercise 2 • จงแปลง Relational Algebra ต่อไปนี้ให้เป็นคำสั่ง SQL