Skip to content

Commit 25a14ba

Browse files
committed
모든 질의문 완성
완성 (정적 출력이라 비효율적 코딩)
1 parent 2104d04 commit 25a14ba

File tree

9 files changed

+107
-8
lines changed

9 files changed

+107
-8
lines changed
-1 KB
Binary file not shown.
0 Bytes
Binary file not shown.

mysql_201320897/mysql_201320897/CSQuery.cpp

Lines changed: 107 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}
275275
bool 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

11 KB
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
5.5 KB
Binary file not shown.
-88.3 KB
Binary file not shown.
-80 KB
Binary file not shown.

0 commit comments

Comments
 (0)