introduction to sql ( mysql ) 353352 – special problem (database)

28
Introduction to SQL (MySQL) 353352 – Special Problem (Database) Choopan Rattanapoka

Upload: melvin-gray

Post on 03-Jan-2016

40 views

Category:

Documents


5 download

DESCRIPTION

Introduction to SQL ( MySQL ) 353352 – Special Problem (Database). Choopan Rattanapoka. SQL (Structured Query Language). SQL ที่ใช้ในระบบฐานข้อมูลแบบ Relational Database เกิดมาจากพื้นฐานของ Relational Model อย่างเช่น Relational Algebra SQL ประกอบไปด้วยหลายส่วน - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Introduction to SQL (MySQL) 353352 – Special Problem (Database)

Choopan Rattanapoka

Page 2: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

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

Page 3: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

MySQL MySQL เป#นโปรแกิรมูระบบฐานข้�อมู�ลแบบ Relational

Database System

เป#น open source และส่ามูารถึ download มูาใช้�ได� Free

ส่ามูารถึที่%างานได�กิ&บระบบปฎิ�บ&ติ�กิารส่%าคำ&ญๆ ได�หมูด เช้�นWindows, Linux, Mac OS

Website: http://www.mysql.com

Page 4: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

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 ได�ง�าย่ข้.�น

Page 5: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

AppServ เมู��อติ�ดติ&�งโปรแกิรมู AppServ ส่ามูารถึด�กิารที่%างานว�าเร��มู

ติ�นที่%างานได�ด�วย่ด� โดย่เป3ด web browser และพื้�มูพื้4127.0.0.1 ที่��ช้�อง URL

Page 6: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

กิารใช้� MySQL ผ่�านที่าง terminal ใน Windows ให�กิด control panel -> run -> พื้�มูพื้4

cmd เมู��อได� terminal ให�พื้�มูพื้4 mysql –u root –p

หมูาย่ถึ.งเร�ย่กิใช้�งานโปรแกิรมู mysql โดย่จะเข้�าส่��ระบบฐานข้�อมู�ล แบบ user (-u) ที่��ช้��อ root –และ p หมูาย่ถึ.ง เป#น account ที่��มู�

password ป6องกิ&นไว�อย่��

เมู��อโปรแกิรมูถึามู password ให�ใส่� password ข้อง root ที่��ติ& �งเอาไว�

Page 7: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

กิารใช้� MySQL ผ่�านที่าง terminal ถึ�าพื้�มูพื้4รห&ส่ถึ�กิติ�องจะเข้�าส่�� prompt ข้องโปรแกิรมู MySQL

Page 8: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

คำ%าส่&�ง MySQL เราส่ามูารถึติรวจด�ระบบฐานข้�อมู�ลที่&�งหมูด ที่�� root ส่ามูารถึมูองเห7นด�วย่คำ%าส่&�ง

show databases;

Page 9: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

คำ%าส่&�ง MySQL ถึ�าติ�ดติ&�ง AppServ จะมู�ฐานข้�อมู�ลเร��มูติ�นอย่�� 4 ฐานข้�อมู�ล

Information_schema และ mysql เป#นฐานข้�อมู�ลที่��ใช้�ในกิาร ติ&�งคำ�าระบบข้อง MySQL

Phpmyadmin เป#นฐานข้�อมู�ลที่��เกิ7บคำ�าระบบข้องPhpMyAdmin

Test เป#นฐานข้�อมู�ลที่ดลอง

เราส่ามูารถึเล�อกิกิารที่%างานว�าจะที่%างานกิ&บฐานข้�อมู�ลติ&วไหนด�วย่คำ%าส่&�ง

use <ชื่��อฐานข้อมู�ล>; เช้�น

use phpmyadmin;

Page 10: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

คำ%าส่&�ง MySQL เราส่ามูารถึที่ราบว�าระบบฐานข้�อมู�ลที่��เราใช้�อย่��น& �นประกิอบไป

ด�วย่ ตาราง อะไรบ�าง โดย่กิารใช้�คำ%าส่&�งshow tables;

Page 11: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

กิารด�โคำรงส่ร�างข้องติารางที่��ถึ�กิส่ร�างมูาแล�ว ส่ามูารถึด�โคำรงส่ร�างข้องติารางได�โดย่ใช้�คำ%าส่&�ง

DESCRIBE <ชื่��อตาราง> หร�อ DESC <ชื่��อตาราง>;

Page 12: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Let’s go SQL ในกิารคำ�นหาข้�อมู�ลด�วย่ Relational Algebra ส่�วนใหญ�จะอย่��ในร�ป

ใน SQL น&�นจะมู�คำ%าส่&�งในร�ป

SELECT A1, A2, … , AnFROM R1, R2, … , RmWHERE P

))...21((,..,2,1 RmxxRxRPAnAA

Page 13: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Relational Algebra -> SQL

))(( 20, personagenameid

จากิ Relational SchemaPerson(id, name, age)

Relational Algebra เพื้��อหารห&ส่ และ ช้��อ ข้องคำนที่��มู�อาย่/มูากิกิว�า 20

SQL :

SELECT id, name FROM person WHERE age > 20;

Page 14: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Relational Algebra -> SQL ในกิรณี�ที่�� Relational Algebra ไมู�มู�กิารใช้� project ( )

หมูาย่ถึ.งให�แส่ดงผ่ลล&พื้ธิ4ออกิมูาที่/กิฟิ3ลด4 ซึ่.�งติรงกิ&บ “เคำร��องหมูาย่ *” ใน SQL

Relational Algebra

SQL

SELECT * FROM person WHERE age > 20

)(20 personage

Page 15: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Relational Algebra -> SQL ในกิรณี�ที่�� Relational Algebra ไมู�มู�กิารใช้� select ( )

หมูาย่ถึ.งไมู�มู�เง��อนไข้ในกิารกิรองผ่ลล&พื้ธิ4 ด&งน&�นใน SQL ส่ามูารถึละ WHERE ออกิไปได�

Relational Algebra

SQL

SELECT id,name FROM person

)(, personnameid

Page 16: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Relational Algebra -> SQL ถึ�าอย่ากิจะแส่ดงข้�อมู�ลที่/กิแถึว และที่/กิหล&กิในติาราง ส่ามูารถึ

เข้�ย่นด�วย่ SQL คำ�อ

SELECT * FROM <ช้��อติาราง>

เช้�น

SELECT * FROM person

Page 17: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : SELECT คำ%าส่&�ง SELECT ใน SQL ติามูด�วย่ฟิ3ลด4ที่��จะคำ�นหา ว�ธิ�

SELECT มู�อย่�� 2 แบบ SELECT ALL ( เป#น default ข้องคำ%าส่&�ง SELECT ถึ�าไมู�ระบ/)

SELECT DISTINCT

Page 18: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : SELECT คำ%าส่&�ง SELECT ส่ามูารถึที่%ากิาร + , - , * , / กิ&บฟิ3ลด4ที่��

เล�อกิแส่ดง ออกิมูาได�

Page 19: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : FROM ใช้�ส่%าหร&บเล�อกิติารางที่��จะคำ�นหาข้�อมู�ล ถึ�าใส่�มูากิกิว�า 1 และคำ&�น

ด�วย่เคำร��องหมูาย่ “,” หมูาย่ถึ.งจะที่%าผ่ลคำ�ณี cartesian ข้องติารางน&�นๆ

Page 20: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : WHERE ใน Relational Algebra เง��อนไข้ข้อง จะเปล��ย่นจากิ

ส่&ญล&กิษณี4ที่างคำณี�ติศาส่ติร4 เป#น ส่&ญล&กิษณี4ที่��พื้�มูพื้4ได�ที่างkeyboard ปกิติ�

Logical Operations (RA SQL) AND OR NOT

Arithmetic Operations (SQL) >, <, <=, >=, =, <>

Page 21: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Exercise 1 กิ%าหนดติารางน&กิเร�ย่นที่��มู�โคำรงส่ร�างด&งน��

Student(Fname, Lname, Faculty, GPA)Fname = ช้��อLname = นามูส่กิ/ลFaculty = คำณีะGPA = คำะแนน GPA

จงเข้�ย่น SQL เพื้��อหา “ ”ช้��อและนามูส่กิ/ลข้องน&กิเร�ย่นที่��อย่��ที่��คำณีะ วที่อ นามูส่กิ/ลข้องน&กิเร�ย่นที่��มู� GPA > 2.00 “ ” ที่/กิข้�อมู�ลข้องน&กิเร�ย่นที่��มู�นามูส่กิ/ล ช้�นว&ด และ GPA < 2.00 “ ” “ ”ที่/กิข้�อมู�ลข้องน&กิเร�ย่นที่��มู�นามูส่กิ/ล ช้�นว&ด หร�อนามูส่กิ/ล ว&ดช้�น

Page 22: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : UNION ใน SQL ส่ามูารถึที่%ากิารรวมูคำ�าข้อง 2 SQL statements ด�วย่กิารใช้�คำ%าส่&�ง UNION ลบข้�อมู�ลที่��ซึ่%�ากิ&นออกิ UNION ALL เกิ7บข้�อมู�ลที่��ซึ่%�ากิ&นไว�

Page 23: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : Set Difference ใน MySQL ไมู�มู�คำ%าส่&�ง set difference โดย่ติรงแติ�ส่ามูารถึ

เข้�ย่นได� ด�ติ&วอย่�าง

SELECT cust_id FROM borrower WHERE cust_id NOT IN (SELECT cust_id FROM depositor);

)()( __ depositorborrower idCustidCust

Page 24: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : Rename ใน SQL กิารเปล��ย่นช้��อส่ามูารถึเปล��ย่นได�ที่&�งช้��อ ฟิ3ลด4 และ ช้��อติารางด�วย่คำ%าส่&�ง

ชื่��อเก่�า AS ชื่��อใหมู�ต�วอย่�าง

Page 25: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : Set Intersect ใน MySQL ไมู�มู�คำ%าส่&�ง intersect ให�ใช้�โดย่ติรงแติ�ส่ามูารถึ

เข้�ย่นได� ด&งน��

SELECT cust_id FROM borrower WHERE cust_id IN (SELECT cust_id FROM depositor)

)()( __ depositorborrower idcustidcust

Page 26: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : Natural JoinCust_id Name

001-586-777

John

367-895-124

DJ

Cust_id City

001-586-777

Bangkok

367-895-124

NonthaburiCustName CustCity

ว�ธี�ที่��ใชื่ Cartesian product :))(( _._.,,_. CustCityXCustNameidCustCustCityidCustCustNameCityNameidCustCustName

ว�ธี�ที่��ใชื่Natural-Join :

))(,,_. CustCityCustNameCityNameidCustCustName

Page 27: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

SQL : Natural Join

Page 28: Introduction to SQL ( MySQL )  353352 – Special Problem (Database)

Exercise 2 จงแปลง Relational Algebra ติ�อไปน��ให�เป#นคำ%าส่&�ง SQL

))(( "Re"Pr,,_ SellerdcoloriceBrandidCust

)()( BuyerSeller BrandBrand

))(( 700000Pr600000PrPr,, BuyericeiceiceColorBrand

))(( 700000Pr600000PrPr,, BuyericeiceiceColorBrand