@@ -80,7 +80,7 @@ bool CSQuery::Progress() {
8080 `Mgr_start_date` DATE NULL ,
8181 PRIMARY KEY (`Dnumber`),
8282 UNIQUE INDEX `Dname_UNIQUE` (`Dname` ASC),
83- INDEX `fk_Mgr_ssn_idx` (`Mgr_ssn` ASC)) ENGINE = InnoDB;
83+ INDEX `fk_Mgr_ssn_idx` (`Mgr_ssn` ASC)); // ENGINE = InnoDB;
8484 ));
8585 printf (" DEPARTMENT 테이블 생성완료\n " );
8686
@@ -97,14 +97,14 @@ bool CSQuery::Progress() {
9797 `Dno` INT NOT NULL ,
9898 PRIMARY KEY (`Ssn`),
9999 INDEX `fk_Super_ssn_idx` (`Super_ssn` ASC),
100- INDEX `fk_Dno_idx` (`Dno` ASC)) ENGINE = InnoDB;
100+ INDEX `fk_Dno_idx` (`Dno` ASC)); // ENGINE = InnoDB;
101101 ));
102102 printf (" EMPLOYEE 테이블 생성완료\n " );
103103
104104 QUERY (QUOTE (CREATE TABLE IF NOT EXISTS `COMPANYX`.`DEPT_LOCATIONS` (
105105 `Dnumber` INT NOT NULL ,
106106 `Dlocation` VARCHAR (15 ) NOT NULL ,
107- PRIMARY KEY (`Dnumber`, `Dlocation`)) ENGINE = InnoDB;
107+ PRIMARY KEY (`Dnumber`, `Dlocation`)); // ENGINE = InnoDB;
108108 ));
109109 printf (" DELP_LOCATIONS 테이블 생성완료\n " );
110110
@@ -115,7 +115,7 @@ bool CSQuery::Progress() {
115115 `Dnum` INT NOT NULL ,
116116 PRIMARY KEY (`Pnumber`),
117117 UNIQUE INDEX `Pname_UNIQUE` (`Pname` ASC),
118- INDEX `fk_Dnum_idx` (`Dnum` ASC)) ENGINE = InnoDB;
118+ INDEX `fk_Dnum_idx` (`Dnum` ASC)); // ENGINE = InnoDB;
119119 ));
120120 printf (" PROJECT 테이블 생성완료\n " );
121121
@@ -124,7 +124,7 @@ bool CSQuery::Progress() {
124124 `Pno` INT NOT NULL ,
125125 `Hours` DECIMAL (3 , 1 ) NOT NULL ,
126126 PRIMARY KEY (`Essn`, `Pno`),
127- INDEX `fk_Pno_idx` (`Pno` ASC)) ENGINE = InnoDB;
127+ INDEX `fk_Pno_idx` (`Pno` ASC)); // ENGINE = InnoDB;
128128 ));
129129 printf (" WORKS_ON 테이블 생성완료\n " );
130130
@@ -134,7 +134,7 @@ bool CSQuery::Progress() {
134134 `Sex` CHAR NULL ,
135135 `Bdate` DATE NULL ,
136136 `Relationship` VARCHAR (8 ) NULL ,
137- PRIMARY KEY (`Essn`, `Dependent_name`)) ENGINE = InnoDB;
137+ PRIMARY KEY (`Essn`, `Dependent_name`)); // ENGINE = InnoDB;
138138 ));
139139 printf (" DEPENDENT 테이블 생성완료\n\n " );
140140#pragma endregion
@@ -274,7 +274,9 @@ bool CSQuery::Progress() {
274274}
275275bool CSQuery::Print () {
276276 // 과제에서 요구하는 쿼리와 강의노트에 있는 쿼리문들을 실행하고 결과를 보여주는 함수
277+ #pragma region 질의1
277278 // 1. SELECT * FROM <Relation name>;
279+ printf (" ###첫번째 쿼리###\n " );
278280 if (!SelectAllFromTable (" SELECT * FROM DEPARTMENT;" , DEPARTMENT))
279281 return false ;
280282 if (!SelectAllFromTable (" SELECT * FROM EMPLOYEE;" , EMPLOYEE))
@@ -288,10 +290,107 @@ bool CSQuery::Print() {
288290 if (!SelectAllFromTable (" SELECT * FROM DEPENDENT;" , DEPENDENT))
289291 return false ;
290292 printf (" \n " );
291-
293+ #pragma endregion
294+ #pragma region 질의2
292295 // 2. 강의노트 Chapter 4의 page 26 & 27에 있는 쿼리0, 1, 2
296+ // 2-1 쿼리0
297+ printf (" ###두번째 쿼리###\n " );
298+ printf (" %s\n " , " SELECT Bdate, Address FROM EMPLOYEE WHERE Fname='John' AND Minit='B' AND Lname='Smith';" );
299+ QUERY (" SELECT Bdate, Address FROM EMPLOYEE WHERE Fname='John' AND Minit='B' AND Lname='Smith';" );
300+ sql_result = mysql_store_result (m_pConnection); // 저장
301+
302+ printf (" %15s %35s\n " , " Bdate" , " Address" );
303+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
304+ printf (" %15s %35s\n " , sql_row[0 ], sql_row[1 ]);
305+ }
306+
307+ // 2-2 쿼리1
308+ printf (" %s\n " , " SELECT Fname, Lname, Address FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research' AND Dnumber=Dno;" );
309+ QUERY (" SELECT Fname, Lname, Address FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research' AND Dnumber=Dno;" );
310+ sql_result = mysql_store_result (m_pConnection); // 저장
311+
312+ printf (" %10s %10s %35s\n " , " Fname" , " Lname" , " Address" );
313+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
314+ printf (" %10s %10s %35s\n " , sql_row[0 ], sql_row[1 ], sql_row[2 ]);
315+ }
316+
317+ // 2-3 쿼리2
318+ printf (" %s\n " , " SELECT Pnumber, Dnum, Lname, Address, Bdate FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Plocation='Stafford';" );
319+ QUERY (" SELECT Pnumber, Dnum, Lname, Address, Bdate FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Plocation='Stafford';" );
320+ sql_result = mysql_store_result (m_pConnection); // 저장
321+
322+ printf (" %10s %5s %10s %35s %15s\n " , " Pnumber" , " Dnum" , " Lname" , " Address" , " Bdate" );
323+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
324+ printf (" %10s %5s %10s %35s %15s\n " , sql_row[0 ], sql_row[1 ], sql_row[2 ], sql_row[3 ], sql_row[4 ]);
325+ }
326+ printf (" \n " );
327+ #pragma endregion
328+ #pragma region 질의3
329+ // 3. 강의노트 Chapter 4의 page 35(33쪽)에 있는 쿼리4
330+ printf (" ###세번째 쿼리###\n " );
331+ printf (" %s\n %s\n %s\n " ,
332+ " (SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname='Smith')" ,
333+ " UNION" ,
334+ " (SELECT DISTINCT Pnumber FROM PROJECT, WORKS_ON, EMPLOYEE WHERE Pnumber=Pno AND Essn=Ssn AND Lname='Smith');"
335+ );
336+ QUERY (QUOTE (
337+ (SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum = Dnumber AND Mgr_ssn = Ssn AND Lname = ' Smith' )
338+ UNION
339+ (SELECT DISTINCT Pnumber FROM PROJECT, WORKS_ON, EMPLOYEE WHERE Pnumber = Pno AND Essn = Ssn AND Lname = ' Smith' );
340+ ));
341+ sql_result = mysql_store_result (m_pConnection); // 저장
342+ printf (" %6s\n " , " Pnumber" );
343+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
344+ printf (" %6s\n " , sql_row[0 ]);
345+ }
346+ printf (" \n " );
347+ #pragma endregion
348+ #pragma region 질의4
349+ // 4. 강의노트 Chapter 5의 page 20에 있는 쿼리20, 21, 22와 page 22에 있는 쿼리28 - from 절에 "Join"을 사용하지 않음
350+ // 4-1 쿼리20
351+ printf (" ###네번째 쿼리###(Join 사용X)\n " );
352+ printf (" %s\n " , " SELECT SUM(Salary), MAX(Salary), MIN(Salary), AVG(Salary) FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research';" );
353+ QUERY (" SELECT SUM(Salary), MAX(Salary), MIN(Salary), AVG(Salary) FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research';" );
354+ sql_result = mysql_store_result (m_pConnection); // 저장
355+ printf (" %15s %15s %15s %15s\n " , " SUM(Salary)" , " MAX(Salary)" , " MIN(Salary)" , " AVG(Salary)" );
356+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
357+ printf (" %15s %15s %15s %15s\n " , sql_row[0 ], sql_row[1 ], sql_row[2 ], sql_row[3 ]);
358+ }
293359
294-
360+ // 4-2 쿼리21
361+ printf (" %s\n " , " SELECT COUNT(*) FROM EMPLOYEE;" );
362+ QUERY (" SELECT COUNT(*) FROM EMPLOYEE;" );
363+ sql_result = mysql_store_result (m_pConnection); // 저장
364+ printf (" %15s\n " , " COUNT(*)" );
365+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
366+ printf (" %15s\n " , sql_row[0 ]);
367+ }
368+
369+ // 4-3 쿼리22
370+ printf (" %s\n " , " SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research';" );
371+ QUERY (" SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research';" );
372+ sql_result = mysql_store_result (m_pConnection); // 저장
373+ printf (" %15s\n " , " COUNT(*)" );
374+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
375+ printf (" %15s\n " , sql_row[0 ]);
376+ }
377+
378+ // 4-4 쿼리28
379+ printf (" %s\n " , QUOTE (
380+ SELECT Dnumber, COUNT (*) FROM DEPARTMENT, EMPLOYEE WHERE Dnumber = Dno AND Salary > 40000 AND
381+ (SELECT Dno FROM EMPLOYEE GROUP BY Dno HAVING COUNT (*) > 5 );
382+ ));
383+ QUERY (QUOTE (
384+ SELECT Dnumber, COUNT (*) FROM DEPARTMENT, EMPLOYEE WHERE Dnumber = Dno AND Salary > 40000 AND
385+ (SELECT Dno FROM EMPLOYEE GROUP BY Dno HAVING COUNT (*) > 5 );
386+ ));
387+ sql_result = mysql_store_result (m_pConnection); // 저장
388+ printf (" %15s %15s\n " , " Dnumber" , " COUNT(*)" );
389+ while ((sql_row = mysql_fetch_row (sql_result)) != NULL ) {
390+ printf (" %15s %15s\n " , sql_row[0 ], sql_row[1 ]);
391+ }
392+ printf (" \n " );
393+ #pragma endregion
295394 return true ;
296395}
297396
0 commit comments