-- SQL SELECT(Basic)
-- 춘대학시스템
✅답안과 비교하여 스스로 SQL 구문 개선점 짚어보기 완료(2022.01.23)
Basic SELECT 1. ❎✅
문제에 주어진 조건을 잘 읽도록 하자. 학과명이 아니라 "학과 명"으로 명시해야 한다.
-- 1. 춘 기술대학교의 학과 이름과 계열 표시
-- 단, 출력 헤더는 "학과 명", "계열"으로 표시하도록 한다.
SELECT
DEPARTMENT_NAME "학과 명"
, CATEGORY 계열
FROM TB_DEPARTMENT;
Basic SELECT 2. ✅
-- 2. 학과별 정원 조회
SELECT
DEPARTMENT_NAME || '의 정원은 ' || CAPACITY || '명 입니다.' "학과별 정원"
FROM TB_DEPARTMENT;
Basic SELECT 3. ❎✅
답안에서는 SELECT문 두 개를 나눠썼다. '국어국문학과'를 먼저 조회한 뒤, 결과값 '001'을 토대로 두 번째 SELECT문을 작성한다. 국어국문학과의 NO를 알지 못하니 답안처럼 조회 작업을 거치거나, '국어국문학과'를 검색하는 방향으로 작성해야 맞겠다. 다시 보니 문제에 학과코드는 특정 테이블에서 얻어내라고 조건으로 주어져 있기도 하다...
또, 성별을 조회할 때도 STUDENT_SSN LIKE '_______2%'처럼 연산자 LIKE 및 와일드카드 조합을 활용한 모습이다.
-- 3. 국어국문학과 여학생 중 현재 휴학중인 학생 조회
-- 국어국문학과 학과코드는 TB_DEPARTMENT에서 조회한다.
SELECT
ST.STUDENT_NAME
FROM TB_DEPARTMENT DP
JOIN TB_STUDENT ST ON(DP.DEPARTMENT_NO = ST.DEPARTMENT_NO)
WHERE DP.DEPARTMENT_NO = '001'
AND SUBSTR(ST.STUDENT_SSN, 8, 1) = '2'
AND ST.ABSENCE_YN = 'Y';
Basic SELECT 4. ✅
-- 4. 대출 도서 장기 연체자 이름 조회
-- 대상자 학번 : A513079, A513090, A513091, A513110, A513119
SELECT
STUDENT_NAME
FROM TB_STUDENT
WHERE STUDENT_NO IN('A513079', 'A513090', 'A513091', 'A513110', 'A513119')
ORDER BY 1 DESC;
Basic SELECT 5. ✅
-- 5. 입학정원이 20명 이상 30명 이하인 학과 이름과 계열 조회
SELECT
DEPARTMENT_NAME
, CATEGORY
FROM TB_DEPARTMENT
WHERE CAPACITY BETWEEN 20 AND 30;
Basic SELECT 6. ✅
-- 6. 춘 기술대학교 총장의 이름 조회
-- 총장을 제외하고 모든 교수들이 소속 학과를 가지고 있다.
SELECT
PROFESSOR_NAME
FROM TB_PROFESSOR
WHERE DEPARTMENT_NO IS NULL;
Basic SELECT 7. ✅
-- 7. 전산상의 착오로 학과가 지정되어 있지 않은 학생이 있는지 확인
SELECT
*
FROM TB_STUDENT
WHERE DEPARTMENT_NO IS NULL;
Basic SELECT 8. ✅
-- 8. 수강신청 위해 선수과목 여부 조회
-- 선수과목이 존재하는 과목들은 어떤 과목인지 과목번호 조회
SELECT
CLASS_NO
FROM TB_CLASS
WHERE PREATTENDING_CLASS_NO IS NOT NULL;
Basic SELECT 9. ✅
DISTINCT 연산자 사용 시에 소괄호는 필요하지 않다.
-- 9. 춘 대학에는 어떤 계열들이 있는지 조회
SELECT
DISTINCT CATEGORY
FROM TB_DEPARTMENT
ORDER BY 1 ASC;
Basic SELECT 10. ✅
답안에서 쓴 WHERE절 조건은 다음과 같다.
02학번 조회를 위해 02년 1월 1일부터 12월 31일까지를 조건으로 걸었다: ENTRANCE_DATE BETWEEN '02/01/01' and '02/12/31'
전주 거주자 조회를 위해 LIKE 연산자를 활용했다: STUDENT_ADDRESS LIKE '전주%'
-- 10. 02학번 전주 거주자들의 모임 생성 목적으로
-- 휴학한 사람들 제외하고, 재학중인 학생들의 학번, 이름, 주민번호 조회
SELECT
STUDENT_NO
, STUDENT_NAME
, STUDENT_SSN
FROM TB_STUDENT
WHERE SUBSTR(ENTRANCE_DATE, 1, 2) = '02'
AND SUBSTR(STUDENT_ADDRESS, 1, 2) = '전주'
AND ABSENCE_YN = 'N';
'Database' 카테고리의 다른 글
[Oracle/SQL] 5. 서브쿼리 | 상관쿼리 | 스칼라 서브쿼리 | 인라인뷰 (0) | 2022.01.21 |
---|---|
[Oracle/수업 과제 practice] SELECT(Additional - 함수) (0) | 2022.01.20 |
[Oracle/수업 과제 practice] JOIN (0) | 2022.01.19 |
[Oracle/SQL] 4. JOIN | OUTER JOIN | SELF JOIN | 다중 JOIN (0) | 2022.01.19 |
[Oracle/SQL] 3. GROUP BY | HAVING | ROLLUP | CUBE | SET OPERATION (0) | 2022.01.19 |