14
Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 SQL ทีใช ในระบบฐานข้อมูลแบบ Relational Database เ กิดมาจาก พื1นฐานของ Relational Model อย่างเ น Relational Algebra องค์ประกอบของภาษา SQL Data-Definition Language (DDL) : ป็ นคําส งเพือกําหนด relation schemas Interactive data-manipulation language (DML) : ป็ นการ รวมคําส งใน query language ทีมาจากพื1นฐานของ relational algebra และ relational calculus Embedded DML : อยู่ในรูป library เพือติดต่อกับภาษาโปรแกรมอืนๆ น C, Pascal, PHP View Definition : คําส งเ กียวกับการสร้าง view Authorization : คําส งเ กียวกับส ทธิการเ ข้าถึงข้อมูล Integrity : คําส งเ กียวกับการกําหนดความถูกต้องของข้อมูล Transaction Control : คําส งเ กียวกับการเ ริมต้นและส 1 นสุดของ transaction เ น lock MySQL MySQL เป็นโปรแกรมระบบฐานข้อมูลแบบ Relational Database System เป็น open source และสามารถ download มาใช้ได้ Free สามารถทํางานได้กับระบบปฎิบัติการสําคัญๆ ได้หมด เช่น Windows, Linux, Mac OS Website: Website: Website: Website: http://www.mysql.com 3 phpMyAdmin 4 เมือติดตั งโปรแกรม AppServ สามารถใช้งาน phpMyAdmin เพือจัดการกับ MySQL โดยเข้าไปที 127.0.0.1/phpmyadmin

07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

  • Upload
    others

  • View
    39

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

Structured Query Language (SQL)

1

Structured Query Language (SQL)

2

• SQL ที�ใชใ้นระบบฐานขอ้มลูแบบ Relational Database เกดิมาจากพื1นฐานของ Relational Model อยา่งเชน่ Relational Algebra

• องคป์ระกอบของภาษา SQL– Data-Definition Language (DDL) : เป็นคําสั�งเพื�อกําหนด

relation schemas– Interactive data-manipulation language (DML) : เป็นการ

รวมคําสั�งใน query language ที�มาจากพื1นฐานของ relational algebra และ relational calculus

– Embedded DML : อยูใ่นรปู library เพื�อตดิตอ่กบัภาษาโปรแกรมอื�นๆเชน่ C, Pascal, PHP

– View Definition : คําสั�งเกี�ยวกบัการสรา้ง view– Authorization : คําสั�งเกี�ยวกบัสทิธกิารเขา้ถงึขอ้มลู– Integrity : คําสั�งเกี�ยวกบัการกําหนดความถกูตอ้งของขอ้มลู– Transaction Control : คําสั�งเกี�ยวกบัการเริ�มตน้และสิ1นสดุของ

transaction เชน่ lock

MySQL

• MySQL เป็นโปรแกรมระบบฐานขอ้มลูแบบ Relational Database System

• เป็น open source และสามารถ download มาใชไ้ด ้Free

• สามารถทาํงานไดก้บัระบบปฎบิตักิารสาํคญัๆ ไดห้มด เชน่ Windows, Linux, Mac OS

• Website: Website: Website: Website: http://www.mysql.com

3

phpMyAdmin

4

• เมื�อตดิตั �งโปรแกรม AppServ สามารถใช้งาน phpMyAdmin เพื�อจดัการกบั

MySQL โดยเข้าไปที� 127.0.0.1/phpmyadmin

Page 2: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

การใช ้MySQL ผา่นทาง terminal

5

• ใน Windows ใหก้ด control panel -> run -> พมิพ์ cmd

• เมืMอได ้terminal ใหพ้มิพ์ mysql –u root –p

– หมายถงึเรียกใชง้านโปรแกรม mysql โดยจะเขา้สูร่ะบบฐานขอ้มลูแบบ user (-u) ทีMชืMอ root และ –p หมายถงึ เป็น account ทีMม ีpassword ป้องกนัไวอ้ยู่

• เมืMอโปรแกรมถาม password ใหใ้ส ่password ของ root ทีMต ัVงเอาไว้

6

การใช ้MySQL ผา่นทาง terminal

• ถา้พมิพร์หสัถกูตอ้งจะเขา้สู ่prompt ของโปรแกรม MySQL

คาํส ัMง MySQL

• เราสามารถตรวจดรูะบบฐานขอ้มลูทั 1งหมด ที� root สามารถมองเห็นดว้ยคําสั�ง

show databases;

7

คาํส ัMง MySQL

• ถา้ตดิตั 1ง AppServ จะมฐีานขอ้มลูเริ�มตน้อยู ่4 ฐานขอ้มลู– Information_schema และ mysql เป็นฐานขอ้มลูที�ใชใ้นการตั 1ง

คา่ระบบของ MySQL– Phpmyadmin เป็นฐานขอ้มลูที�เก็บคา่ระบบของ PhpMyAdmin– Test เป็นฐานขอ้มลูทดลอง

• เราสามารถเลอืกการทํางานวา่จะทํางานกบัฐานขอ้มลูตวัไหนดว้ยคําสั�ง

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

use phpmyadmin;

8

Page 3: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

คาํส ัMง MySQL

• เราสามารถทราบวา่ระบบฐานขอ้มลูที�เราใชอ้ยูน่ั 1นประกอบไปดว้ย ตาราง อะไรบา้ง โดยการใชค้ําสั�ง

show tables;

9

การดโูครงสรา้งของตารางทีMถกูสรา้งมาแลว้

• สามารถดโูครงสรา้งของตารางไดโ้ดยใชค้ําสั�งDESCRIBE <ชื)อตาราง> หรอื DESC <ชื)อตาราง>;

10

การสรา้งฐานขอ้มลู

• เมื�อเราตอ้งการออกแบบฐานขอ้มลูใหม ่เราควรจะสรา้งฐานขอ้มลูกอ่น ดว้ยคําสั�ง

CREATE database <ชื)อฐานขอ้มลู>; เชน่ CREATE database CITLibrary;

11

การสรา้งฐานขอ้มลู

• เมื�อเราตอ้งการลบฐานขอ้มลู สามารถทําไดด้ว้ยคําสั�งDROP database <ชื)อฐานขอ้มลู>;

เชน่ DROP database CITLibrary;

12

Page 4: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

การสรา้งตาราง (Create)

� Create Table: CREATE TABLE r (A1 D1 <NOT NULL, UNIQUE> , … ,An Dn<integrity constraints 1>...<integrity constraints k>)

� Integrity Constraints: ขอ้กําหนดเกี�ยวกบัขอ้มลู (attribute, รายการ หรอื ตาราง) เชน่� PRIMARY KEY ( Aj1, Aj2, …, Ajm )� CHECK ( P )

Tuple or Attribute Constraints

AttributeConstraint

13

Domain Types ใน SQL

� char(n) เก็บตวัอักษร n ตวั จองพื1นที�แบบคงที�

� varchar(n) เก็บตวัอักษร n ตวั จองพื1นที�แบบ dynamic

� text เก็บขอ้มลูที�อยูใ่นรปูตวัอักษร

� smallint (2byte) เก็บคา่ตวัเลข -32768 ถงึ 32767

� int (4byte) เก็บคา่ตวัเลข -2147483648 ถงึ 2147483647

� double (8byte) เก็บคา่ไดท้ี�ตวัเลข 15 ตําแหน่งหลงัจดุทศนยิม

� float(n) (4byte) เก็บคา่ไดท้ี�ตวัเลข 7 ตําแหน่งหลงัจดุทศนยิม

� date YYYY-MM-DD

� time HH:MM:SS

� datetime YYYY-MM-DD HH:MM:SS

� bool คา่ 0 คอื false, คา่ที�ไมใ่ช ่0 คอื true14

ตวัอยา่งการสรา้งตารางพืVนฐาน

• สรา้งตาราง EmployeeCREATE TABLE employee (

ssn INT, fname VARCHAR(20),lname VARCHAR(20),address VARCHAR(50),salary INT,deptno SMALLINT

)

� สรา้งตาราง DepartmentCREATE TABLE department (

deptno SMALLINT,dname VARCHAR(30),mgrssn INT,startdate DATE

)

15

ตวัอยา่งการสรา้งตารางพรอ้มกาํหนดขอ้กาํหนด

� สรา้งตาราง EmployeeCREATE TABLE employee (

ssn INT NOT NULL AUTO_INCREMENT,fname VARCHAR(20) NOT NULL,lname VARCHAR(20) NOT NULL,address VARCHAR(50),salary INT,deptno SMALLINT NOT NULL,PRIMARY KEY (ssn),)

16

Page 5: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

ตวัอยา่งการสรา้งตารางพรอ้มกาํหนดขอ้กาํหนด

� สรา้งตาราง DepartmentCREATE TABLE department (

deptno SMALLINT,dname VARCHAR(30) NOT NULL,mgrssn INT NOT NULL AUTO_INCREMENT,startdate DATE DEFAULT Sysdate,PRIMARY KEY (deptno),CONSTRAINT dname_uk

UNIQUE (dname),CONSTRAINT dept_mgr_fk

FOREIGN KEY (mgrssn)REFERENCES employee(ssn))

17

Domain Constraints

• การกําหนดลกัษณะชนดิของขอ้มลู• ตรวจสอบเมื�อมกีารเพิ�มขอ้มลู• ตวัอยา่งการสรา้ง domain

– CREATE DOMAIN gender CHAR CONSTRIANT gender_test

– CHECK (gender IN (‘F’, ‘M’))

Constraint Name

Constraint Condition

18

การลบและเปลีMยนตาราง (Drop)

• การลบตาราง -- DROP TABLE r– ลบตาราง Employee ออกจากระบบฐานขอ้มลู

DROP TABLE employee;

• การเปลี�ยนตาราง (Alter) -- ALTER TABLE r ADD (a d)– เพิ�ม attribute COMMISSION ในตาราง Employee

ALTER TABLE EMPLOYEE ADD (commission int)

– เปลี�ยน attribute fname ในตาราง Employee ใหม้ขีนาดใหญ่ขึ1น

ALTER TABLE EMPLOYEE MODIFY (fname varchar(40))

19

การเพิMมขอ้มลู (Insert)

• INSERT INTO table-name VALUES (a1, a2, … ,an)• INSERT INTO table-name(a1-name, a2-name, …, an-

name) VALUES (a1, a2, …, an)

• ตวัอยา่งINSERT INTO employee VALUES (1, ‘John’,

‘Terry’,’Chelsea, London’, 100000, 2)INSERT INTO employee(fname, lname, ssn, deptno)

VALUES (‘John’, ‘Terry’, 1, 2)

20

Page 6: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

การลบขอ้มลู (Delete)

• DELETE FROM r [WHERE <conditions>]– ลบรายการของพนักงานทั 1งหมด

DELETE FROM employee– ลบรายการของพนักงาน ที�มรีหสั 001

DELETE FROM employee WHERE SSN = 001

21

การเปลีMยนขอ้มลู (Update)

• UPDATE r SET a = value• UPDATE r SET a = value WHERE <conditions>

– เปลี�ยนชื�อและนามสกลุพนักงาน ssn = 1 เป็น Frank LampardUPDATE employee SET fname=‘Frank’,lname=‘Lampard’WHERE ssn = 1

– เพิ�มเงนิเดอืนใหก้บัพนักงานทกุคน 10 %UPDATE employee SET salary = salary*1.1

– ลดเงนิเดอืน 5% ของพนักงานทกุคนใน deptNo = 15UPDATE employee SET salary = salary*0.95 WHERE dNo = 15

22

SQL• ในการคน้หาขอ้มลูดว้ย Relational Algebra สว่นใหญจ่ะอยูใ่น

รปู

• ใน SQL นั1นจะมคีําสั�งในรปู

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

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

23

Relational Algebra -> SQL

))(( 20, personagenameid >Π σ

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

Relational Algebra เพื�อหารหสั และ ชื�อ ของคนที�มอีายมุากกวา่ 20

SQL :

SELECT id, name FROM personWHERE age > 20;

24

Page 7: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

Relational Algebra -> SQL

• ในกรณีที� Relational Algebra ไมม่กีารใช ้project ( ) หมายถงึใหแ้สดงผลลพัธอ์อกมาทกุฟิลด ์ซึ�งตรงกบัเครื�องหมาย “*” ใน SQL

– Relational Algebra

– SQL SELECT * FROM person WHERE age > 20

Π

)(20 personage>σ

25

Relational Algebra -> SQL• ในกรณีที� Relational Algebra ไมม่กีารใช ้select ( ) หมายถงึไมม่ี

เงื�อนไขในการกรองผลลพัธ ์ดงันั1นใน SQL สามารถละ WHERE ออกไปได ้– Relational Algebra

– SQL SELECT id,name FROM person

σ

)(, personnameidΠ

26

Relational Algebra -> SQL

• ถา้อยากจะแสดงขอ้มลูทกุแถว และทกุหลักในตาราง สามารถเขยีนดว้ย SQL คอื

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

เชน่

SELECT * FROM person

27

SQL : SELECT• คําสั�ง SELECT ใน SQL ตามดว้ยฟิลดท์ี�จะคน้หา วธิ ีSELECT มอียู ่2 แบบ

– SELECT ALL (เป็น default ของคําสั�ง SELECT ถา้ไมร่ะบ)ุ– SELECT DISTINCT

28

Page 8: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

SQL : SELECT• คําสั�ง SELECT สามารถทําการ + , - , * , / กบัฟิลดท์ี�เลอืก

แสดง ออกมาได ้

29

SQL : FROM• ใชส้ําหรับเลอืกตารางที�จะคน้หาขอ้มลู ถา้ใสม่ากกวา่ 1 และคั�นดว้ย

เครื�องหมาย “,” หมายถงึจะทําผลคณู cartesian ของตารางนั1นๆ

30

SQL : WHERE

• ใน Relational Algebra เงื�อนไขของ จะเปลี�ยนจากสญัลักษณ์ทางคณติศาสตร ์เป็น สญัลักษณ์ที�พมิพไ์ดท้าง keyboard ปกติ

• Logical Operations (RA � SQL)– � AND– � OR– � NOT

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

σ

¬

31

SQL : WHERE• หารหสัลูกค้าที กู้และฝากเงนิกับธนาคาร

32

Page 9: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

SQL : String Operations

• LIKE operator

– Percent ( % ): ตรงกบัทกุ substring

• “Bang%” ตรงกบัคาํทกุคาํทีMขึVนตน้ดว้ย Bang (e.g., BangSue, Bangkok)

• %ko% คอื คาํทีMม ีko อยูข่า้งใน เชน่ Bangkok, kingkong

– Underscore ( _ ): ตรงกบัทกุอกัขระ

• “Bang _ _” ตรงกบัคาํทกุคาํทีMขึVนตน้ดว้ย Bang และตามดว้ยอกี 2 ตวัอกัษร (e.g., Bangna)

• _ _ _ คอื คาํทีMม ี3 ตวัอกัษร เชน่ kok, abc, xxx• _ _ _ % คอื คาํทีMมอียา่งน้อย 3 ตวัอกัษร เชน่ kok, bangk

33

SQL : String Operations

• escape (\) ใชใ้นกรณีทีMตอ้งการรวม special character (I.e., %, \) ไวใ้น string เอง เชน่ like “ab\%cd%” ตรงกบัทกุ string ทีMขึVนตน้ดว้ย ab%cd

• || concatenation

– การตอ่ strings เชน่ “(662)” || “585-8541” == “(662)585-8541”

• extract substrings

• หาความยาวของคาํ

• แปลงใหเ้ป็นอกัษรตวัพมิพ์ใหญ,่ เล็ก หรือ Title

• soundex (การหาคาํเสียงคลา้ย)

34

ตวัอยา่ง

Relational SchemaRelational SchemaRelational SchemaRelational Schema – Student ( Student ( Student ( Student ( IDIDIDID, Firstname, Lastname), Firstname, Lastname), Firstname, Lastname), Firstname, Lastname)

จงเขียนคาํส ัMง จงเขียนคาํส ัMง จงเขียนคาํส ัMง จงเขียนคาํส ัMง SQL SQL SQL SQL เพืMอแสดงเพืMอแสดงเพืMอแสดงเพืMอแสดง• ชืMอของนกัเรียนทีMขึVนตน้ดว้ย Wat

SELECTSELECTSELECTSELECT Firstname FROMFROMFROMFROM Student WHEREWHEREWHEREWHERE Firstname LIKELIKELIKELIKE ““““Wat%Wat%Wat%Wat%””””

• ชืMอและนามสกุลของนกัเรียนทีMมชีืMอยาว 5 ตวัอกัษรSELECTSELECTSELECTSELECT Firstname, Lastname FROMFROMFROMFROM Student WHEREWHEREWHEREWHERE Firstname LIKELIKELIKELIKE ““““____________________” ” ” ” AND AND AND AND

Lastname LIKELIKELIKELIKE ““““____________________” ” ” ”

LIMITLIMITLIMITLIMIT• คาํส ัMง LIMIT ใน mySQL ใชต้อ่ทา้ยคาํส ัMง SELECT เพืMอจาํกดั

ผลลพัธ์ทีMแสดงออก

• วธิีใชแ้บบทีM วธิีใชแ้บบทีM วธิีใชแ้บบทีM วธิีใชแ้บบทีM 1111 LIMIT <LIMIT <LIMIT <LIMIT <จาํนวนแถวทีMจะใหแ้สดงจาํนวนแถวทีMจะใหแ้สดงจาํนวนแถวทีMจะใหแ้สดงจาํนวนแถวทีMจะใหแ้สดง>>>>

Page 10: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

• วธิีใชแ้บบทีM วธิีใชแ้บบทีM วธิีใชแ้บบทีM วธิีใชแ้บบทีM 2222 LIMIT <LIMIT <LIMIT <LIMIT <แถวเริMมตน้แถวเริMมตน้แถวเริMมตน้แถวเริMมตน้> , <> , <> , <> , <จาํนวนแถวทีMจะแสดงจาํนวนแถวทีMจะแสดงจาํนวนแถวทีMจะแสดงจาํนวนแถวทีMจะแสดง>>>>

• ระวงัระวงัระวงัระวงั!! แถวเริMมตน้จะเริMมนบัทีMแถวทีM 0

LIMITLIMITLIMITLIMIT Order

• การเรียงลาํดบัผลลพัธ์SELECT a1, a2, …, an

FROM r

ORDER BY aj1, …, ajn [ASC, DESC]

• การเรียงลาํดบัโดย default เรียงจากน้อยไปมาก (ASC)• เรียงจากมากไปน้อย (DESC)• หากตอ้งการเรียงลาํดบัมากกวา่ 1 attributes หรือทีMแตกตา่งไปจาก

default ตอ้งระบปุะทา้ย ASC หรือ DESC ของแตล่ะ attribute นัVน

• เป็น operation ทีMใชเ้วลาในการทาํงานมาก จงึควรทาํเฉพาะทีMจาํเป็น

ตวัอยา่ง order by

• หาชืMอพนกังาน ชืMอแผนก และเงนิเดอืนของพนกังานคนนัVน ๆ เรียง ตามชืMอแผนก และ ตามเงนิเดอืนจากมากไปน้อย

SELECT fname, lname, dName, salary

FROM employee, department

WHERE employee.dNo = department.dNumber

ORDER BY dName ASC, salary DESC

Page 11: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

Aggregation Functions

• Built-in aggregate functions– คา่เฉลีMย : avg– คา่ตํMาสดุ: min– คา่สงูสดุ: max– คา่รวม: sum– นบัจาํนวน tuples: count

• มกัใชร้ว่มกบั group by

ตวัอยา่ง Aggregation Functions

� นบัจาํนวนพนกังานในบรษิทัSELECT COUNT(*) FROM employee

� หาเงนิเดอืนเฉลีMยของพนกังานSELECT AVG(salary)FROM employee

� หาเงนิเดอืนรวม, เงนิเดอืนตํMาสดุและสงูสดุของพนกังานSELECT SUM(salary),

MIN(salary), MAX(salary)

FROM employee

� นบัจาํนวนพนกังานในแตล่ะแผนกSELECT dNo, COUNT(*)FROM employeeGROUP BY dNo;

� หาเงนิเดอืนเฉลีMยของแผนกทีMมีคา่เฉลีMยสงูกวา่ 50000SELECT dNo,AVG(salary)FROM employeeGROUP BY dNoHAVING AVG(salary)>

50000

AccountID BranchName Balance

023-8-0254 Bangsue 10000

158-7-7894 Bangsue 30000

568-8-7483 Bangkhen 5000

120-3-0478 Bangkhen 40000

347-1-5640 Bangkhen 20000

Bangsue 40000

Bangkhen 65000

ตวัอยา่ง Aggregation Functions & Group BY having clause: GROUP BY … HAVING ...

• เพิMมเงืMอนไขโดยการใช ้Aggregate function กบัคาํส ัMง GROUP BY

SELECT a1, a2, …, an

FROM r

GROUP BY aj

HAVING avg(aj) > 50000

Page 12: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

• จงหาชืMอสาขาธนาคารทีMมเีงนิฝากรวมมากกวา่ 60000 บาท

SELECTSELECTSELECTSELECT BranchName FROMFROMFROMFROM Account GROUP BY GROUP BY GROUP BY GROUP BY BranchName HAVINGHAVINGHAVINGHAVING SUM(Balance) > 60000;

AccountID BranchName Balance

023-8-0254 Bangsue 10000

158-7-7894 Bangsue 30000

568-8-7483 Bangkhen 5000

120-3-0478 Bangkhen 40000

347-1-5640 Bangkhen 20000

Bangsue 40000

Bangkhen 65000

ตวัอยา่ง HAVING สรุปรูปแบบการทาํ SQL Query

• SELECT/FROM/WHERE

SELECT <attribute list>FROM <table list>[WHERE <conditions P>][GROUP BY <grouping attributes>][HAVING <group condition>][ORDER BY <attribute list>]

Rename Operation

• สามารถทาํการ rename ไดท้ ัVง attributes และ relations

• รูปแบบ: <old name> AS <new name>

– Rename Attribute:

SELECT fname AS “Name”, dName, salary

FROM employee, department

WHERE employee.dNo = department.dNumber

– Rename ตาราง:

SELECT fname, lname, e.dNo, dName, salary

FROM employee AS e, department AS d

WHERE e.dNo = d.dNumber

SQL : Set Operations

• Union: union และ union all

• Intersect: intersect และ intersect all

• Except : except และ except all (ในบาง DBMS ใช ้MINUS)

• ถา้ตอ้งการใหไ้มก่าํจดัคา่ซํVา ใช ้ <set operation> all (e.g. union all)

Page 13: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

SQL : Union

borrower depositor

จงหา รหสัของลูกคา้ของธนาคารทีMกูเ้งนิกบัธนาคารหรือมีเงนิฝากกบัธนาคาร

SQL : Union

)()( __ depositorborrower idCustidCust Π∪Π

• ใน MySQL ไมม่คีาํส ัMง intersect ใหใ้ชโ้ดยตรงแตส่ามารถเขยีนได ้ดงันีV

• SELECTSELECTSELECTSELECT cust_id FROMFROMFROMFROM borrower WHEREWHEREWHEREWHERE cust_id

ININININ (SELECTSELECTSELECTSELECT cust_id FROMFROMFROMFROM depositor)

)()( __ depositorborrower idcustidcust Π∩Π

SQL : Set Intersect

• ใน MySQL ไมม่คีาํส ัMง set difference โดยตรงแตส่ามารถเขยีนได ้ดตูวัอยา่ง

• SELECTSELECTSELECTSELECT cust_id FROMFROMFROMFROM borrower WHEREWHEREWHEREWHERE cust_id NOT IN NOT IN NOT IN NOT IN (SELECTSELECTSELECTSELECT cust_id FROMFROMFROMFROM depositor);

)()( __ depositorborrower idCustidCust Π−Π

SQL : Set Difference

Page 14: 07 Structured Query Language - Worayoot · 2014-01-17 · Structured Query Language (SQL) 1 Structured Query Language (SQL) 2 • SQL ทีใชในระบบฐานข้อมูลแบบ

Cust_id Name

001-586-777 John

367-895-124 DJ

Cust_id City

001-586-777 Bangkok

367-895-124 Nonthaburi

CustName CustCity

วธิีทีMใช ้วธิีทีMใช ้วธิีทีMใช ้วธิีทีMใช ้Cartesian product :Cartesian product :Cartesian product :Cartesian product :

))(( _._.,,_. CustCityXCustNameidCustCustCityidCustCustNameCityNameidCustCustName =Π σ

วธิีทีMใช ้วธิีทีMใช ้วธิีทีMใช ้วธิีทีMใช ้NaturalNaturalNaturalNatural----Join :Join :Join :Join :

))(,,_. CustCityCustNameCityNameidCustCustNameΠ

SQL : Natural Join SQL : Natural Join

• เมืMอผูด้แูลระบบตอ้งการจะ backup ฐานขอ้มลู หรือ นําฐานขอ้มูลนีVไปใช้กบัเครืMองอืMน ใน MySQL สามารถใชค้าํส ัMง

mysqldump mysqldump mysqldump mysqldump ----uuuu login ––––pppp database_name >>>> FILE.sql

– login login login login คอื login ของผูม้สีทิธิ �ในการทาํงานกบัฐานขอ้มูลนัVน เชน่ root– passwordpasswordpasswordpassword คอืรหสัผา่น– database_namedatabase_namedatabase_namedatabase_name คอื ชืMอของฐานขอ้มูลทีMตอ้งการจะ backup– FILE.sqlFILE.sqlFILE.sqlFILE.sql คอื ชืMอ file ทจีะเก็บฐานขอ้มูลทีMตอ้งการจะ backup

ตวัอยา่งตวัอยา่งตวัอยา่งตวัอยา่งmysqldump mysqldump mysqldump mysqldump ––––u u u u root ––––pppp ectstudent > > > > ect.sql

Export A MySQL Database

• เมืMอผูด้แูลระบบตอ้งการนําฐานขอ้มูลทีM backup ไวแ้ลว้มาใชใ้นฐานขอ้มลูปจัจุบนั ใน MySQL สามารถใชค้าํส ัMง

mysql mysql mysql mysql ----uuuu login ––––pppp database_name <<<< FILE.sql

– login login login login คอื login ของผูม้สีทิธิ �ในการทาํงานกบัฐานขอ้มูลนัVน เชน่ root– passwordpasswordpasswordpassword คอืรหสัผา่น– database_namedatabase_namedatabase_namedatabase_name คอื ชืMอของฐานขอ้มูลทีMตอ้งการจะ import– FILE.sqlFILE.sqlFILE.sqlFILE.sql คอื ชืMอ file ทจีะเก็บฐานขอ้มูลทีMตอ้งการจะ import

ตวัอยา่งตวัอยา่งตวัอยา่งตวัอยา่งmysql mysql mysql mysql ––––u u u u root ––––pppp ectstudent <<<< ect.sql

Import A MySQL Database