본문
SQL (Structured Query Language)
# SQL (Structured Query Language)
1. <사원> 테이블에서 부서만 검색하되, 같은 부서는 한 번만 검색하는 SQL문을 작성하시오.
SELECT DISTINCT 부서
FROM 사원;
※ DISTINCT : 중복제거
- 실행결과 예시
부서 |
기획 |
인터넷 |
편집 |
2. <사원> 테이블에서 이름에 문자열 "월급은", 기본급에 10을 더한 값을 검색하는 SQL을 작성하시오. 단, '이름' 속성에 있을지 모르는 좌우 공백을 모두 제거하시오.
SELECT Trim(이름)+"월급은" AS 이름, 기본급+10 AS 기본급
FROM 사원;
- 실행결과 예시
이름 |
기본급 |
홍길동월급은 |
130 |
※ 기본급 + 10 AS 기본급
기본급에 10을 더한 다음 '기본급'이라는 속성명으로 표시한다.
3. <사원> 테이블에서 부서가 '기획'인 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 부서 = '기획';
4. <사원> 테이블에서 부서는 '기획'이고, 기본급이 110보다 큰 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 부서='기획' AND 기본급 > 110;
5. <사원> 테이블에서 부서가 '기획'이거나 '인터넷'인 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 부서='기획' OR 부서='인터넷';
SELECT *
FROM 사원
WHERE 부서 IN ('기획','인터넷);
6. <사원> 테이블에서 이름의 첫 번째 글자가 '김'인 모든 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 이름 LIKE '김%';
7. <사원> 테이블에서 기본급이 85에서 95사이인 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 기본급 BETWEEN 85 AND 95;
8. <사원> 테이블에서 주소가 NULL인 튜플을 검색하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 주소 IS NULL;
9. <사원> 테이블에서 부서가 '기획'인 튜플을 검색하되, 이름을 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT *
FROM 사원
WHERE 부서='기획'
ORDER BY 이름;
10. <사원> 테이블의 모든 튜플을 검색하되, 부서를 기준으로 오름차순 정렬하고 같은 부서에 대해서는 이름을 기준으로 내림차순 정렬하는 SQL문을 작성하시오.
SELECT *
FROM 사원
ORDER BY 부서 ASC, 이름 DESC;
11. <사원> 테이블에서 부서별로 기본급의 평균을 구하여 부서를 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT 부서, AVG(기본급) AS 평균
FROM 사원
GROUP BY 부서
ORDER BY 부서 ASC;
※ 'GROUP BY 부서'에 의해서 부서별로 그룹을 지정한다.
- 실행결과 예시
부서 |
평균 |
기획 |
110 |
인터넷 |
85 |
편집 |
103.3 |
12. <사원> 테이블에서 기본급이 100 이상인 사원이 2명 이상인 부서의 부서명과 사원수를 검색하는 SQL문을 작성하시오.
SELECT 부서, COUNT(*) AS 사원수
FROM 사원
WHERE 기본급 >=100
GROUP BY 부서
HAVING COUNT(*) >=2;
※ 그룹 함수에 대한 조건을 제한하기 위해서는 반드시 HAVING절을 사용해야 한다.
- 실행결과 예시
부서 |
사원수 |
기획 |
3 |
편집 |
2 |
13. <여가활동> 테이블에서 취미가 '나이트댄스'인 사원에 대해 <사원> 테이블에서 해당 사원의 이름과 주소를 검색하는 SQL문을 작성하시오.
SELECT 이름, 주소
FROM 사원
WHERE 이름 IN (SELECT 이름 FROM 여가활동 WHERE 취미='나이트댄스');
※ 먼저 SELECT 이름 FROM 여가활동 WHERE 취미='나이트댄스' 를 수행하여 <여가활동> 테이블에서 '성춘향'을 찾는다.
SELECT 이름, 주소 FROM 사원 WHERE 이름 IN('성춘향') 과 같이 된다.
- 실행결과 예시
이름 |
주소 |
성춘향 |
후평동 |
14. 경력이 10년 이상인 사원의 이름, 부서, 취미, 경력을 검색하는 SQL문을 작성하시오.
SELECT 사원.이름, 사원.부서, 여가활동, 취미, 여가활동.경력
FROM 사원, 여가활동
WHERE 여가활동.경력 >= 10 AND 사원.이름 = 여가활동.이름;
15. 사원들의 명단이 <임원> 테이블과 <직원> 테이블에 저장되어 있다. 두 테이블을 통합하는 SQL문을 작성하시오.
단, 같은 레코드가 중복되어 나오지 않게 하시오.
SELECT *
FROM 임원
UNION SELECT * FROM 직원;
※ UNION은 일반 집합 이론에서의 합집합과 같다. 따라서 UNION을 사용하여 두 테이블을 합치면
테이블에 모두 속해있는 튜플은 중복이 제거되어 1개만 표시된다.
댓글