Lecture 4 : การพัฒนาระบบฐานข้อมูล (Database System ......

Preview:

Citation preview

รายงานกลม01. ชอโครงงานฐานขอมล02. ทมาของฐานขอมล03. ขอมลทจะจดเกบ 04. Entity-Relationship Diagram 05. ตาราง (Relation) 06. Normalization07. Data Dictionary08. พฒนาฐานขอมล MySQL

0สงสไลดงานกลมท tinybronko@gmail.com4612 342 Database Design and Development 2

ขอควรเขาใจในการเรยน0 ตวอยางค าสง MYSQL ทแสดงใน slide เชน

0 มกจะมรหสค าสงของ PPT ท MYSQL ไมเขาใจ เปนผลให Run ค าสงไมได

0 ไมแนะน าใหใช Copy&Paste

412 342 Database Design and Development 3

ALTER TABLE studentADD FOREIGN KEY (fac_ID)REFERENCES Faculty (fac_ID);

ไมปรากฏในหนาตาง SQL

เพอให Appserv แสดง Relation View

412 342 Database Design and

Development4

‘Relation View’ จะแสดงดวยการก าหนด default-storage-engine=INNODB1 แกไขไฟล my.ini (folder Appserv\Mysql)2 ทบรรทด 86 เอา # ออก--> default-storage-engine=INNODB ออก3 บรรทด 183 เอา # ใสหนาทบรรทด --> #skip-innodb4. บนทกการแกไข5 restart services apache6 ถาไมปรากฏ Relation View ใชค าสง ALTER TABLE tbl_name ENGINE = InnoDB

ก าหนดใหทก Table เปน INNODB

412 342 Database Design and

Development5

ALTER TABLE tbl_name ENGINE = InnoDB

0 AppsServ จะแสดง relation view โดยการก าหนดให Table เปน InnoDB ดวยค าสง

0ตอง 6 Table ใหเปน INNODB

1 faculty2 student3 student_course4 course5 teaching6 teacher7 book

ประเภทของค าสง SQL 0 ค าสงในภาษา SQL สามารถแบงออกตามลกษณะการใชงานไดเปน 3

กลม ดงนคอ0 ค าสงทใชก าหนดโครงสรางหรอการนยามขอมล (Data Definition

Language : DDL)0 ค าสงทใชส าหรบจดการขอมล (Data Manipulation Language : DML)

0 ค าสงทใชในการควบคมระบบฐานขอมล (Data Control Language : DCL)

412 342 Database

Design and Development

6

ค าสงทใชส าหรบจดการขอมล (DML)0 2. การแสดงขอมลตามเงอนไข

0 เพอแสดงขอมลตามทตองการ0 ดวยค าสง SEELCT , FROM, WHERE

0 รปแบบทวไป

412 342 Database

Design and Development

7

SELECT student_id, course_id, gradefrom student_coursewhere grade = 'F'

SELECT <field name>FROM <table name>WHERE <condition>;

ค าสงทใชส าหรบจดการขอมล (DML)

412 342 Database Design and Development 8

ค าสงทใชส าหรบจดการขอมล (DML)

0 3. การสรางตารางใหมจากขอมลเดม

0 เพอสรางตารางใหม โดยใชขอมลจากตารางเดม0 ดวยค าสง INSERT INTO รวมกบค าสง SELECT

0 รปแบบทวไป

412 342 Database

Design and Development

9

INSERT INTO <ชอตารางทจะเพมขอมล><ประโยคค าสง SELECT>

ค าสงทใชส าหรบจดการขอมล (DML)0 ตวอยาง สมมตวามการสรางตาราง GRADE_F (ตารางใหม)เพอเกบขอมลของนกศกษาทไดเกรด “F” ในรายวชาตางๆ ซงประกอบดวยฟลดดงน Student_ID , Course_ID , Grade โดยมการน าเอาขอมลทเกบอยในตาราง STUDENT_COURSE มาเพมเขาไปในตาราง GRADE_F สามารถท าไดโดยใชค าสง ตอไปน

412 342 Database

Design and Development

10

CREATE TABLE Grade_F ( Student_ID CHAR(11) NOT NULL,Course_ID CHAR(6) NOT NULL,

Grade CHAR(2));INSERT INTO GRADE_F

SELECT student_id, course_id, gradefrom student_coursewhere grade = 'F'

ค าสงทใชส าหรบจดการขอมล (DML)

412 342 Database Design and Development 11

ตาราง Grade_F

ค าสงทใชส าหรบจดการขอมล (DML)0 ค าสงทใชปรบปรงแถวขอมล

0 เปนค าสงทใชส าหรบปรบปรงหรอแกไขคาในคอลมนหรอฟลด ซงอาจมมากกวา 1 คอลมนในแถวทกแถว ทมเงอนไขสอดคลองกบทระบไวหลงค าวา WHERE ในค าสง UPDATE0รปแบบทวไป

412 342 Database

Design and Development

12

UPDATE <ชอตาราง>SET <ชอฟลด> = <คาขอมล>WHERE <เงอนไขตามทระบ>;

ค าสงทใชส าหรบจดการขอมล (DML)0 ค าสงทใชปรบปรงแถวขอมล

0ตวอยาง ตองการปรบปรงฟลด Credit ในตาราง COURSE ของรายวชา 412414 จากเดม 3 หนวยกต เปน 4 หนวยกต

412 342 Database

Design and Development

13

UPDATE COURSESET Credit = '4'WHERE Course_ID = '412414';

ถาไมใชค าสง WHERE ขอมล credit จะถกปรบปรงทกรายการ

ผลลพธ

ค าสงทใชส าหรบจดการขอมล (DML)0 ค าสงลบแถวขอมล

0ค าสงทใชในการลบแถวขอมลในตาราง ทกๆ แถวทมเงอนไขสอดคลองกบทระบไวหลงค าวา WHERE ในค าสง DELETE0รปแบบทวไป

412 342 Database

Design and Development

14

DELETE FROM <ชอตารางทตองการจะลบขอมล>WHERE <เงอนไขตามทระบ>;

ค าสงทใชส าหรบจดการขอมล (DML)

0 ค าสงลบแถวขอมล0 ตวอยางเชน ถามนกศกษารหส “452112589-5” ไดจบการศกษาออกไปแลว ตองการจะลบขอมลของนกศกษาคนนออกไปจากตารางนกศกษา (STUDENT) ท าไดโดยใชค าสง ดงน

0ถาไมมเงอนไข WHERE จะท าใหมการลบขอมลทกๆ แถวออกไปจากตารางนกศกษา

412 342 Database

Design and Development

15

DELETE FROM STUDENTWHERE Student_ID = '452112589-5';

ค าสงทใชส าหรบจดการขอมล (DML)

0 ค าสงทใชเรยกดขอมล

0ใชค าสง SELECT ซงเปนค าสงทใชส าหรบเรยกดขอมลหรอคนหาขอมล ตามเงอนไขทระบ ซงเปนค าสงทส าคามาก

0ค าสง SELECT นเปนค าสงทมรปแบบในการใชงานทงาย และสามารถก าหนดเงอนไขในการเรยกดขอมลไดตามตองการ โดยใชเงอนไขทางตรรกศาสตรเขามา

412 342 Database

Design and Development

16

SELECT Student_ID , ScoreFROM STUDENT_COURSE WHERE (Course_ID = '412141') AND (Score >= 55 AND Score <= 65);

ค าสงทใชส าหรบจดการขอมล (DML)0 ขอมลชนดตรรกศาสตร (Boolean-Type Data)

0 เปนขอมลทแสดงคาความจรงของขอมลออกมาเปน 2 แบบ0ขอมลจรง (TRUE) และ ขอมลเทจ (FALSE)

0 โดยทวไปจะใชในการเปรยบเทยบนพจนทางตรรกศาสตร (Boolean Expressions) สามารถแบงนพจนทางตรรกศาสตรออกเปน 2 แบบ คอ0นพจนทางตรรกศาสตรทใชสญลกษณแสดงความสมพนธเปนตวเชมม0นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชมม

412 342 Database

Design and Development

17

ค าสงทใชส าหรบจดการขอมล (DML)

0 นพจนทางตรรกศาสตรทใชสญลกษณแสดงความสมพนธเปนตวเชอม0เปนนพจนทประกอบดวยสวนของ Operands ซงเชอมดวย

Operator ซงเปนเครองหมายทแสดง ความสมพนธ(Relational Operators) หรอการเปรยบเทยบ

412 342 Database

Design and Development

18

ค าสงทใชส าหรบจดการขอมล (DML)

19

นพจนทางตรรกศาสตรทใชสญลกษณแสดงความสมพนธเปนตวเชอม

ตารางแสดงเครองหมายแสดงความสมพนธของขอมล

ความหมาย สญลกษณ ตวอยาง นพจน คาของนพจน

เทากบ X Y 5 6 FALSE

มากกวา X Y 6 5 TRUE

นอยกวา X Y 5/6 6/5 TRUE

นอยกวาหรอเทากบ

X Y 4 -4 FALSE

มากกวาหรอเทากบ

X Y 0.74 -

4/7TRUE

ไมเทากบ X Y 25 52 TRUE

zz

ค าสงทใชส าหรบจดการขอมล (DML)0 นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชอม

0เปนนพจนทประกอบดวยสวนของ Operands (ตวถกด าเนนการ)และ Operator (สญลกษณเพอด าเนนการ/Logical Operator)

412 342 Database

Design and Development

20

X Y

OperatorOperandsOperands

ค าสงทใชส าหรบจดการขอมล (DML)

สญลกษณ ความหมาย

AND ใชเชอม Operand ตงแต 2 Operand ขนไปซงนพจนจะเปนจรงกตอเมอทกๆ Operand จะตองเปน จรง

OR ใชเชอม Operand ตงแต 2 Operand ขนไป ซงนพจนจะเปนจรงกตอเมอ Operand ตวใดตวหนงหรอทกตวเปนจรง

NOT ใชน าหนา Operand ถาน าหนา Operand ทเปน จรง จะท าใหนพจนเปน เทจ แตถาน าหนา Operand ทเปนเทจจะท าใหนพจนเปน จรง

412 342 Database Design and Development 21

นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชอม

ค าสงทใชส าหรบจดการขอมล (DML)0 นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชอม

AND

OP1 สญลกษณตรรก OP2 ผลลพธ ตวอยาง

T AND T T (30>10)AND (100>10)

T AND F F (30>10)AND (10>100)

F AND T F (1>10)AND (30>10)

412 342 Database Design and Development 22

ค าสงทใชส าหรบจดการขอมล (DML)0 นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชอม

NOT

OP NOT(OP) ตวอยาง

T F NOT (2=2)

F T NOT (2=3)

OR

OP1 สญลกษณตรรก OP2 ผลลพธ ตวอยาง

T OR T T (30>10)OR (100>10)

T OR F T (30>10)OR (10>100)

F OR T T (3>10) OR (100>10)

F OR F F (3>10) OR (10>100)

412 342 Database Design and Development 23

ค าสงทใชส าหรบจดการขอมล (DML)0 นพจนทางตรรกศาสตรทใชสญลกษณทางตรรกศาสตรเปนตวเชอม

0 ก าหนดให n = 5

412 342 Database Design and Development 24

นพจน คาของนพจน

(n 0) AND (n 7) True

T T

T

F

NOT(n 5) False

NOT(n 7) True

(n 2) OR (n 5) False

F F

ค าสงทใชส าหรบจดการขอมล (DML)

0 ค าสงทใชในการเรยกดขมมลมยางงาย (Simple Queries)

0 เปนรปแบบของค าสง SELECT ทสามารถเขยนไดงายทสด โดยจะประกอบดวยสวนหลกๆ 3 สวน และมรปแบบทวไป ดงน

412 342 Database

Design and Development

25

SELECT <ชอฟลดทตองการเรยกดขอมล>FROM <ชอตาราง>WHERE <เงอนไขตามทระบ>;

หมายเหต ถาตองการเรยกดขอมลในทกๆฟลดของตารางใหใชเครองหมายดอกจน ( * ) แทนชอฟลดทกฟลด

ค าสงทใชส าหรบจดการขอมล (DML)

0 ค าสงทใชในการเรยกดขมมลมยางงาย (Simple Queries)

0 ตวอยางของการเรยกดขอมลอยางงาย ดวยค าสง SELECT จากฐานขอมลทะเบยนนกศกษาเชนตองการเรยกดรายชอของนกศกษาทกคน (ตวอยางท 1.12)

412 342 Database

Design and Development

26

ค าสงทใชส าหรบจดการขอมล (DML)

412 342 Database

Design and Development

27

SELECT Student_NameFROM STUDENT;

ผลลพธ

ค าสง SQL เขยนดงน

ค าสงทใชส าหรบจดการขอมล (DML)0ค าสงทใชในการเรยกดขมมลมยางงาย (Simple Queries)

0 เชน ตองการทราบรหสนกศกษา และชอของนกศกษาทเปน “เพศหาง” (ตวอยางท 1.13 )

412 342 Database

Design and Development

28

SELECT Student_ID , Student_Name, SexFROM STUDENTWHERE Sex = 'F';

ผลลพธ

ค าสงทใชส าหรบจดการขอมล (DML)0 ค าสงทใชในการเรยกดขมมลมยางงาย (Simple Queries)

0 เชน ตองการทราบรหสนกศกษา และคะแนนสอบของนกศกษาทเรยนวชา “412141” และมคะแนนอยในชวง 55 ถง 65 คะแนน(ตวอยางท 1.15 )

0 ค าสง SQL เขยนดงน

412 342 Database

Design and Development

29

SELECT Student_ID , Score

FROM STUDENT_COURSE

WHERE (Course_ID = '412141')

AND (Score >= 55 AND Score <= 65);

ค าสงทใชส าหรบจดการขอมล (DML)0 พจารณาเงอนไข WHERE (Course_ID = '412141‘)

AND (Score >= 55 AND Score <= 65);

412 342 Database Design and Development 30

ผลลพธ

ค าสงทใชส าหรบจดการขอมล (DML)0 ค าสงทใชในการเรยกดขมมลจากหลายตาราง (Multiple-Table

Queries)0ใชลกษณะของการเชอมโยงขอมลระหวางตาราง โดยตารางทตองการจะเรยกดขอมลนนๆ จ าเปนตองมฟลดทมการมางมงถงกนผานคยนมก (Foreign Key) เพอเปนการเชอมโยงขอมลระหวางตาราง มรปแบบทวไปดงน

412 342 Database

Design and Development

31

SELECT <ชอตาราง>.<ชอฟลดทตองการ>, ….FROM <ชอตารางท 1>,<ชอตารางท 2>WHERE <เงอนไขตามทระบ>AND <ชอตารางท 1.ชอฟลด> = <ชอตารางท 2.ชอฟลด>;

ค าสงทใชส าหรบจดการขอมล (DML)0 ตวอยางท 1.18 ตองการทราบรหสนกศกษาและชอนกศกษาทสงกดคณะ“วทยาศาสตร”

0 วเคราะหโจทย01 รหสนกศกษาและชอนกศกษา STUDENT.student_id, student_name02 คณะ “วทยาศาสตร” FACULTY.Fac_Name03 Foreign key ทเชอม 2 ตาราง STUDENT.Fac_ID = FACULTY.Fac_ID

412 342 Database

Design and Development

32

Student

Faculty

จาก Data Dic ของ Student, Faculty

412 342 Database Design and

Development33

เชอมตารางโดยการเพมขอก าหนด Foreign Key

0ค าสงแกไขการก าหนด Foreign key

412 342 Database Design and

Development34

ALTER TABLE ตารางหลก

ADD FOREIGN key (ฟลดทหลก )

REFERENCES ตาราง Foreign (ฟลด Foreign );

ALTER TABLE studentADD FOREIGN KEY (fac_ID)REFERENCES Faculty (fac_ID);

ค าสงทใชส าหรบจดการขอมล (DML)0ใชค าสงเลอกขอมลตาง Table ทถกเชอมกน

412 342 Database

Design and Development

35

SELECT Student_ID , student_Name,faculty.fac_name

FROM STUDENT , FACULTYWhere fac_name='sciences'AND STUDENT.Fac_ID = FACULTY.Fac_ID;

ค าสงทใชส าหรบจดการขอมล (DML)

0ล าดบการท างานหลงรนค าสง SQL

01.ท างานตามประโยค From02.ท างานตามประโยค Where03.ท างานตามประโยค Select

412 342 Database

Design and Development

36

ค าสงทใชส าหรบจดการขอมล (DML)0 ตวอยางท 1.20 ตองการทราบรหสนกศกษาและชอนกศกษาทสงกดอยคณะ“มนษยฯ” และลงทะเบยนรายวชา “412102”

0 วเคราะหโจทย01 รหสนกศกษา STUDENT.STUDENT_ID02 ชอนกศกษา STUDENT.STUENT_NAME03 คณะมนษยฯ FACULTY.FAC_NAME = ‘Humanities and Social Sciences’04 รายวชา “412102” STUDENT_COURSE.COURSE_ID = ‘412102’

412 342 Database

Design and Development

37

ตองเชอมตาราง

412 342 Database Design and

Development38

Student

Student_course

Faculty

ALTER TABLE student ADD FOREIGN KEY (fac_ID)REFERENCES Faculty (fac_ID);

ALTER TABLE student_course ADD FOREIGN KEY(Student_ID)REFERENCES student (student_ID);

ค าสงทใชส าหรบจดการขอมล (DML)

0 ค าสง SQL เขยนดงน

412 342 Database

Design and Development

39

SELECT STUDENT.STUDENT_ID, STUDENT.STUDENT_NAME, FACULTY.FAC_NAME, STUDENT_COURSE.COURSE_ID

FROM STUDENT, FACULTY, STUDENT_COURSE

WHERE STUDENT_COURSE.COURSE_ID = '412141'AND FAC_NAME = 'HUMANITIES AND SOCIAL SCIENCES'AND STUDENT.FAC_ID = FACULTY.FAC_IDAND STUDENT.STUDENT_ID = STUDENT_COURSE.STUDENT_ID

ตวอยางท 1.20 ตองการทราบรหสนกศกษาและชอนกศกษาทสงกดอยคณะ “มนษยฯ” และลงทะเบยนรายวชา “412102”

ค าสงทใชส าหรบจดการขอมล (DML)

0 ล าดบการท างานหลงรนค าสง SQL

1. ท างานตามประโยค From

2. ท างานตามประโยค Where

3. ท างานตามประโยค Select

412 342 Database

Design and Development

40

412 342 Database

Design and Development

41

FROM STUDENT , STUDENT_COURSE, FACULTY

WHERE STUDENT_COURSE.COURSE_ID = '412141'AND FAC_NAME = 'HUMANITIES AND SOCIAL SCIENCES'AND STUDENT.FAC_ID = FACULTY.FAC_IDAND STUDENT.STUDENT_ID = STUDENT_COURSE.STUDENT_ID

STUDENT_COURSE

STUDENT

FACULTY

ค าสงทใชส าหรบจดการขอมล (DML)

412 342 Database

Design and Development

42

การใชฟงกชน (Built-In Functions)

ค าสงทใชส าหรบจดการขอมล (DML)0 การใชฟงกชน (Built-In Functions)

0 SQL จะมฟงกชนทางสถตเพอชวยในการค านวณกลมแถวขอมลของฟลดทระบในตาราง ซงประกอบดวยฟงกชนตางๆ ดงตอไปน

ฟงกชน ความหมาย

COUNT นบจ านวนแถวขอมลของคอลมนหรอฟลด

SUM หาผลรวมขอมลทเปนตวเลขของคอลมน

AVG หาคาเฉลยของขอมลทเปนตวเลขของคอลมน

MAX หาคาขอมลตวเลขทมากทสดของคอลมน

MIN หาคาขอมลตวเลขทนอยทสดของคอลมน

412 342 Database Design and Development 43

การใชฟงกชนจะใชในสวน SELECT หรอ HAVING เทานน

ค าสงทใชส าหรบจดการขอมล (DML)0 การใชฟงกชน (Built-In Functions)

412 342 Database Design and Development 44

การใชฟงกชนจะใชในสวน SELECT หรอ HAVING เทานนโดยในสวนของ Select ถามการใชฟงกชนกบฟลดใด ฟลดอนๆก

จะตองมการใช ฟงกชนดวยเชนกน ไมเชนนนจะเกด Syntax Error ขน ซงหากเกด Syntax Error มทางแกไข 2 วธ

1. ใสฟงกชนใหกบฟลดทกฟลดท Select มา (ทงนในบางฟงกชนตองดทชนดของขอมลดวยจงจะใชได)

2. ใชค าสง Group by เขาชวย

ค าสงทใชส าหรบจดการขอมล (DML)0 การใชฟงกชน (Built-In Functions)

0ตวอยางท 1.21 ตองการทราบคะแนนรวม คะแนนเฉลย คะแนนมากทสด และคะแนนนอยทสดของนกศกษาทลงทะเบยนเรยนรายวชา “412141”

0 เขยนค าสง SQL ไดดงน

412 342 Database

Design and Development

45

SELECT SUM(Score), AVG(Score), MAX(Score), MIN(Score)

FROM STUDENT_COURSE

WHERE Course_ID = '412141';

ค าสงทใชส าหรบจดการขอมล (DML)0 การใชฟงกชน (Built-In Functions)

412 342 Database

Design and Development

46

ผลลพธคอ

SELECT SUM(Score) , AVG(Score) , MAX(Score) , MIN(Score)FROM STUDENT_COURSEWHERE Course_ID = “412141”;

ค าสงทใชส าหรบจดการขอมล (DML)

0การใชฟงกชน (Built-In Functions)0ตวอยางท 1.23 ตองการทราบจ านวนรหสรายวชาทมนกศกษาลงทะเบยนเรยนทงหมด

0 เขยนค าสง SQL ไดดงน

412 342 Database

Design and Development

47

SELECT COUNT(DISTINCT Course_ID)

FROM STUDENT_COURSE;

ค าสงทใชส าหรบจดการขอมล (DML)0การใชฟงกชน (Built-In Functions)

412 342 Database

Design and Development

48

ผลลพธคอ

1

2

3

ค าสงทใชส าหรบจดการขอมล (DML)

0ตวอยางท 1.24 ตองการทราบจ านวนนกศกษาทเกดในป พ.ศ. 2525 (1982)

412 342 Database

Design and Development

49

SELECT COUNT(*)

FROM STUDENT

WHERE Birthdate BETWEEN ‘1982-01-01’ AND ‘1982-12-31’;

412 342 Database

Design and Development

50

ผลลพธคอ

SELECT COUNT(*)FROM STUDENTWHERE Birthdate BETWEEN ‘1983-01-01’ AND ‘1983-12-31’;

1

2

ค าสงทใชส าหรบจดการขอมล (DML)0 การใช GROUP BY , ORDER BY และ HAVING

0 ค าสง GROUP BY , ORDER BY และ HAVING เปนค าสงเพมเตมทสามารถใชรวมกบค าสง SELECT ในการเรยกดขอมล

412 342 Database

Design and Development

51

ค าสงทใชส าหรบจดการขอมล (DML)

0 การใช GROUP BY

0ค าสง GROUP BY <ชอฟลด>0 เปนค าสงทใชในการจดกลมแถวขอมลตามฟลดทระบหลง

GROUP BY โดยขอมลทเหมอนกนจะถกจดใหอยกลมเดยวกน

412 342 Database

Design and Development

52

ค าสงทใชส าหรบจดการขอมล (DML)0การใช GROUP BY

0ตวอยางท 1.24 ตองการทราบรหสรายวชา และจ านวนของนกศกษาทไดเกรด “B” ในรายวชาแตละรายวชา

412 342 Database

Design and Development

53

SELECT Course_ID , count(student_id)

FROM STUDENT_COURSE

where grade = 'B'

group by course_id;

ผลลพธคอ

ค าสงทใชส าหรบจดการขอมล (DML)

0 การใช ORDER BY0 ค าสง ORDER BY <ชอฟลด> [DESC]

0ใชในกรณทตองการเรยงล าดบขอมลในฟลดหรอคอลมนใดๆ ทระบ 0ถาไมมการใชค าวา DESC ใน ORDER BY จะท าการเรยงล าดบขอมลจากนอยไปมาก

0ถามการใชค าวา DESC จะท าการเรยงล าดบจากมากไปนอย0ORDER BY สามารถใชในการเรยงล าดบฟลดหรอคอลมนทมากกวา 1 คอลมนไดอกดวย

412 342 Database

Design and Development

54

DESC=descending

ค าสงทใชส าหรบจดการขอมล (DML)0 การใช ORDER BY

0 ตวอยางท 1.26 ตองการทราบรหสรายวชา และคะแนนสอบทมากทสดของรายวชาแตละรายวชา โดยเรยงล าดบจากมากไปนอย

412 342 Database

Design and Development

55

SELECT Course_ID , MAX(Score) 'Max_Score'FROM STUDENT_COURSEGROUP BY Course_IDORDER BY Max_Score DESC;

ผลลพธคอ

ค าสงทใชส าหรบจดการขอมล (DML)0 การใช HAVING

0 ค าสง HAVING <ชมฟลด>

0ค าสง HAVING จะเหมอนกบค าสง WHERE ทตองตามดวยเงอนไข 0แต HAVING จะใชในกรณทมการจดกลมหรอการใชกบ GROUP BY เทานน

0ขอแตกตางระหวาง HAVING กบ WHERE คอ 0 HAVING จะใชในการก าจดกลมทไมตองการออก0 WHERE จะใชในการก าจดแถวทไมตองการออก

412 342 Database

Design and Development

56

ค าสงทใชส าหรบจดการขอมล (DML)0 การใช HAVING

0 ตวอยางท 1.27 ตองการทราบรหสรายวชา และจ านวนนกศกษา โดยทรายวชานนๆ จะตองมนกศกษาลงทะเบยนเรยนมากกวา 1 คน

412 342 Database

Design and Development

57

SELECT Course_ID , COUNT(Student_ID)FROM STUDENT_COURSEGROUP BY Course_IDHAVING COUNT(Student_ID) > 1;

412 342 Database

Design and Development

58

SELECT Course_ID , COUNT(Student_ID)FROM STUDENT_COURSEGROUP BY Course_IDHAVING COUNT(Student_ID) 1;

1

2

1

2

3

ผลลพธคอ

ค าสงทใชส าหรบจดการขอมล (DML)

0 สรปล าดบการท างานหลงรนค าสง SQL

1. ท างานตามประโยค From

2. ท างานตามประโยค Where

3. ท างานตามประโยค Group by

4. ท างานตามประโยค Having

5. ท างานตามประโยค Select

6. ท างานตามประโยค Order by412 342 Database

Design and Development

59

ค าสงทใชก าหนดโครงสรางหรอการนยามขอมล (Data Definition Language : DDL)

0 ค าสงในการสรางวว และลบวว0 ค าสงในการสรางวว

0จะใชค าสง CREATE VIEW แลวตามดวยชอววทตงขน และค าสง SELECT ทเปนค าสงดงขอมลบางสวนจากตารางจรงน าเปนสรางเปนวว รปแบบทวไป

412 342 Database

Design and Development

60

CREATE VIEW <ชอววทตงขน>

[(<ชอฟลด_1> , <ชอฟลด_2> , …)]

AS <ประโยคค าสง SELECT>;

ค าสงทใชก าหนดโครงสรางหรอการนยามขอมล (Data Definition Language : DDL)

0ค าสงในการสรางวว และลบวว0 ตวอยางท 1.28 ตองการสรางววเกยวกบขอมลนกศกษาทลงทะเบยนเรยนรายวชา “412141”

412 342 Database Design and Development61

create view s412141 (Student_ID, student_Name,Fac_ID,Advisor,Grade,Score, Term)

as select STUDENT.Student_ID,STUDENT.student_Name,STUDENT.Fac_ID,Advisor,Grade,Score,Term

FROM STUDENT_COURSE, student

where course_id='412141'

and STUDENT.Student_ID = STUDENT_COURSE.Student_ID;

View เปน Virtual table ทสรางขนเพอใหเหนเฉพาะขอมลทตองการใหเหน

ค าสงทใชก าหนดโครงสรางหรอการนยามขอมล (Data Definition Language : DDL)

0ค าสงในการสรางวว และลบวว0 ผลลพธคอ

412 342 Database

Design and Development

62

เมอไดววตามทตองการแลว เมอตองการจะปรบปรงขอมล ไมวาจะเปนการเพมการลบขอมลทอยในวว กจะใชค าสง SQL เชนเดยวกนกบตารางปกต แตใหเปลยนชอของตารางเปนชอววทสรางไว

ค าสงทใชก าหนดโครงสรางหรอการนยามขอมล (Data Definition Language : DDL)

0ค าสงในการสรางวว และลบวว

0 ค าสงในการลบวว

0 ค าสงในการลบวว กเชนเดยวกนกบค าสงในการลบตาราง แตเปลยนชมตารางใหเปนชมวว

รปแบบทวไป

412 342 Database

Design and Development

63

DROP VIEW <ชอววทตองการลบ>;

แบบฝกหด

0 1. ตองการขอมลรหสประจ าตว,ชอ-นามสกล, ชอคณะทเรยน, ชออาจารยทปรกษา ของนกเรยนทกคน (ไมซ ารายชอ)

0 2. ตองการขอมลรหสประจ าตว,ชอ-นามสกล, คณะทเรยน, รหสวชา, ชอวชา ของนกเรยนทมผลการเรยน B+

0 3. ตองการทราบ รหสวชา, ชอ อจ, ชอหนงสอ (ไมซ ารายชอ)

0 สง link (ค าสง) งานท (14 กพ 57)

0 วชาเอก http://goo.gl/RSh89f

0 วชาโท http://goo.gl/xN9naa

0 ระบผมสทธเปด Link : sakda@kku.ac.t h

412 342 Database Design and

Development64

การเชอมตารางดวย Foreign Key

0 การค าสงเพม เงอนไข Foreign key0 ALTER TABLE Tbl_nm1 ADD FOREIGN KEY(Fld_nm) REFERENCES Tbl_nm2 (Fld_nm);

0 ALTER TABLE student ADD FOREIGN KEY(Fac_ID) REFERENCES Faculty (Fac_ID);

Faculty

Student

ตารางหลก (foreign key)

ตารางน ามาเชอม

ตองเชอม 7 ตาราง 6 ค าสงเชอม

412 342 Database Design and Development66

Student

Student_course

Faculty

Teacher

CourseTeaching

Book

จากค าสงสามารถจ ารปแบบเพอเขยนพรอมๆ กนได

ALTER TABLE student ADD FOREIGN KEY(Fac_ID) REFERENCES Faculty (Fac_ID );ALTER TABLE student_course ADD FOREIGN KEY(………….) REFERENCES ……….. (………….);ALTER TABLE course ADD FOREIGN KEY(………….) REFERENCES ……….. (………….);ALTER TABLE Teacher ADD FOREIGN KEY(………….) REFERENCES ……….. (………….);ALTER TABLE Teacher ADD FOREIGN KEY(………….) REFERENCES ……….. (………….);ALTER TABLE Teacher ADD FOREIGN KEY(………….) REFERENCES ……….. (………….);

Relation of Registration table

Student

Faculty

Teacher

ALTER TABLE studentADD FOREIGN KEY(Fac_ID)REFERENCES Faculty (Fac_ID);

Teaching

CourseALTER TABLE TeacherADD FOREIGN KEY(Fac_ID)REFERENCES Faculty (Fac_ID);

Student_course

Book

Recommended