Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
Introduction to SQL ( MySQL ) 353352 – Special Problem (Database)
-
Upload
melvin-gray -
Category
Documents
-
view
40 -
download
5
description
Transcript of Introduction to SQL ( MySQL ) 353352 – Special Problem (Database)
Introduction to SQL (MySQL) 353352 – Special Problem (Database)
Choopan Rattanapoka
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 ส่ามูารถึด�กิารที่%างานว�าเร��มู
ติ�นที่%างานได�ด�วย่ด� โดย่เป3ด web browser และพื้�มูพื้4127.0.0.1 ที่��ช้�อง URL
กิารใช้� 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 ที่��ติ& �งเอาไว�
กิารใช้� MySQL ผ่�านที่าง terminal ถึ�าพื้�มูพื้4รห&ส่ถึ�กิติ�องจะเข้�าส่�� prompt ข้องโปรแกิรมู MySQL
คำ%าส่&�ง MySQL เราส่ามูารถึติรวจด�ระบบฐานข้�อมู�ลที่&�งหมูด ที่�� root ส่ามูารถึมูองเห7นด�วย่คำ%าส่&�ง
show databases;
คำ%าส่&�ง MySQL ถึ�าติ�ดติ&�ง AppServ จะมู�ฐานข้�อมู�ลเร��มูติ�นอย่�� 4 ฐานข้�อมู�ล
Information_schema และ mysql เป#นฐานข้�อมู�ลที่��ใช้�ในกิาร ติ&�งคำ�าระบบข้อง MySQL
Phpmyadmin เป#นฐานข้�อมู�ลที่��เกิ7บคำ�าระบบข้องPhpMyAdmin
Test เป#นฐานข้�อมู�ลที่ดลอง
เราส่ามูารถึเล�อกิกิารที่%างานว�าจะที่%างานกิ&บฐานข้�อมู�ลติ&วไหนด�วย่คำ%าส่&�ง
use <ชื่��อฐานข้อมู�ล>; เช้�น
use phpmyadmin;
คำ%าส่&�ง MySQL เราส่ามูารถึที่ราบว�าระบบฐานข้�อมู�ลที่��เราใช้�อย่��น& �นประกิอบไป
ด�วย่ ตาราง อะไรบ�าง โดย่กิารใช้�คำ%าส่&�งshow tables;
กิารด�โคำรงส่ร�างข้องติารางที่��ถึ�กิส่ร�างมูาแล�ว ส่ามูารถึด�โคำรงส่ร�างข้องติารางได�โดย่ใช้�คำ%าส่&�ง
DESCRIBE <ชื่��อตาราง> หร�อ DESC <ชื่��อตาราง>;
Let’s go SQL ในกิารคำ�นหาข้�อมู�ลด�วย่ Relational Algebra ส่�วนใหญ�จะอย่��ในร�ป
ใน SQL น&�นจะมู�คำ%าส่&�งในร�ป
SELECT A1, A2, … , AnFROM R1, R2, … , RmWHERE P
))...21((,..,2,1 RmxxRxRPAnAA
Relational Algebra -> SQL
))(( 20, personagenameid
จากิ Relational SchemaPerson(id, name, age)
Relational Algebra เพื้��อหารห&ส่ และ ช้��อ ข้องคำนที่��มู�อาย่/มูากิกิว�า 20
SQL :
SELECT id, name FROM person WHERE age > 20;
Relational Algebra -> SQL ในกิรณี�ที่�� Relational Algebra ไมู�มู�กิารใช้� project ( )
หมูาย่ถึ.งให�แส่ดงผ่ลล&พื้ธิ4ออกิมูาที่/กิฟิ3ลด4 ซึ่.�งติรงกิ&บ “เคำร��องหมูาย่ *” ใน SQL
Relational Algebra
SQL
SELECT * FROM person WHERE age > 20
)(20 personage
Relational Algebra -> SQL ในกิรณี�ที่�� Relational Algebra ไมู�มู�กิารใช้� select ( )
หมูาย่ถึ.งไมู�มู�เง��อนไข้ในกิารกิรองผ่ลล&พื้ธิ4 ด&งน&�นใน SQL ส่ามูารถึละ WHERE ออกิไปได�
Relational Algebra
SQL
SELECT id,name FROM person
)(, personnameid
Relational Algebra -> SQL ถึ�าอย่ากิจะแส่ดงข้�อมู�ลที่/กิแถึว และที่/กิหล&กิในติาราง ส่ามูารถึ
เข้�ย่นด�วย่ SQL คำ�อ
SELECT * FROM <ช้��อติาราง>
เช้�น
SELECT * FROM person
SQL : SELECT คำ%าส่&�ง SELECT ใน SQL ติามูด�วย่ฟิ3ลด4ที่��จะคำ�นหา ว�ธิ�
SELECT มู�อย่�� 2 แบบ SELECT ALL ( เป#น default ข้องคำ%าส่&�ง SELECT ถึ�าไมู�ระบ/)
SELECT DISTINCT
SQL : SELECT คำ%าส่&�ง SELECT ส่ามูารถึที่%ากิาร + , - , * , / กิ&บฟิ3ลด4ที่��
เล�อกิแส่ดง ออกิมูาได�
SQL : FROM ใช้�ส่%าหร&บเล�อกิติารางที่��จะคำ�นหาข้�อมู�ล ถึ�าใส่�มูากิกิว�า 1 และคำ&�น
ด�วย่เคำร��องหมูาย่ “,” หมูาย่ถึ.งจะที่%าผ่ลคำ�ณี cartesian ข้องติารางน&�นๆ
SQL : WHERE ใน Relational Algebra เง��อนไข้ข้อง จะเปล��ย่นจากิ
ส่&ญล&กิษณี4ที่างคำณี�ติศาส่ติร4 เป#น ส่&ญล&กิษณี4ที่��พื้�มูพื้4ได�ที่าง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 เกิ7บข้�อมู�ลที่��ซึ่%�ากิ&นไว�
SQL : Set Difference ใน MySQL ไมู�มู�คำ%าส่&�ง set difference โดย่ติรงแติ�ส่ามูารถึ
เข้�ย่นได� ด�ติ&วอย่�าง
SELECT cust_id FROM borrower WHERE cust_id NOT IN (SELECT cust_id FROM depositor);
)()( __ depositorborrower idCustidCust
SQL : Rename ใน SQL กิารเปล��ย่นช้��อส่ามูารถึเปล��ย่นได�ที่&�งช้��อ ฟิ3ลด4 และ ช้��อติารางด�วย่คำ%าส่&�ง
ชื่��อเก่�า AS ชื่��อใหมู�ต�วอย่�าง
SQL : Set Intersect ใน MySQL ไมู�มู�คำ%าส่&�ง intersect ให�ใช้�โดย่ติรงแติ�ส่ามูารถึ
เข้�ย่นได� ด&งน��
SELECT cust_id FROM borrower WHERE cust_id IN (SELECT cust_id FROM depositor)
)()( __ depositorborrower idcustidcust
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
SQL : Natural Join
Exercise 2 จงแปลง Relational Algebra ติ�อไปน��ให�เป#นคำ%าส่&�ง SQL
))(( "Re"Pr,,_ SellerdcoloriceBrandidCust
)()( BuyerSeller BrandBrand
))(( 700000Pr600000PrPr,, BuyericeiceiceColorBrand
))(( 700000Pr600000PrPr,, BuyericeiceiceColorBrand