Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
รายงานกลม01. ชอโครงงานฐานขอมล02. ทมาของฐานขอมล03. ขอมลทจะจดเกบ 04. Entity-Relationship Diagram 05. ตาราง (Relation) 06. Normalization07. Data Dictionary08. พฒนาฐานขอมล MySQL
0สงสไลดงานกลมท [email protected] 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 : [email protected] 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