본문 바로가기
  • 適者生存
WorkOut/정보처리기사

SQL 문제 풀이 | 데이터베이스 기본 3

by lcrvvxln 2024. 4. 15.

07. SQL 응용

Chapter 01. 데이터베이스 기본

 

#11. 다음은 성적 테이블의 일부이다. 이름, 과목, 성적을 성적순(내림차순)으로 출력하는 쿼리를 작성하시오.

 

[ 성적 테이블 ]

이름 과목 성적
문무왕 프로그래밍 4.0
문무왕 알고리즘 4.5
장보고 알고리즘 3.5
장보고 자료구조 3.0

 

 

 

A.

SELECT 이름, 과목, 성적
  FROM 성적
 ORDER BY 성적 DESC;

 

 

해설.

ORDER BY 절은 속성값 정렬할 때 사용한다. ( 키워드 생략 시, 오름차순 정렬)

▶ ASC : 오름차순

▶ DESC : 내림차순

ORDER BY 속성명 [ ASC | DESC ]

 

 

 

 

#12. 다음과 같이 도서와 도서가격이라는 테이블이 있다. 책 번호 컬럼을 기준으로 Left Outer Join을 하여 [결과] 테이블과 같이 나오도록 쿼리를 작성하시오.

 

[ 도서 테이블 ]

책번호 책명
111 운영체제
222 자료구조
555 컴퓨터구조

 

[ 도서가격 테이블 ]

책번호 가격
111 20000
222 25000
333 10000
444 15000

 

[ 결과 테이블 ]

책번호 책명 책번호 가격
111 운영체제 111 20000
222 자료구조 222 25000
555 컴퓨터구조 NULL NULL

 

 

 

A.

SELECT A.책번호, A.책명, B.책번호, B.가격
  FROM 도서 A
  LEFT JOIN 도서가격 B
    ON A.책번호 = B.책번호;

 

 

해설.

왼쪽 외부 조인 문법은 다음과 같다.

SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, B.컬럼2, ...
  FROM 테이블1 A LEFT
  JOIN 테이블2 B
    ON 조인조건
[WHERE 검색조건];

'도서' 테이블A라는 별칭으로, '도서가격' 테이블은 B라는 명칭으로 설정 후 왼쪽에 위치한 '도서' 테이블기준으로 왼쪽 외부 조인한다.

 

 

 

 

#13. 다음은 직원 테이블이다. 다음 쿼리를 실행 결과 튜플 수는 얼마인지 쓰시오.

 

[ 직원 테이블 ]

사번 이름 연봉
1 홍길동 1000
2 임꺽정 1500
3 장길산 2000

 

[ 쿼리 ]

SELECT *
  FROM 직원
 WHERE SAL >= 1500
 UNION ALL
SELECT *
  FROM 직원 
 WHERE SAL >= 2000;

 

 

 

A. 3개

 

 

 

해설.

UNION ALL중복 행제거되지 않은 쿼리 결과를 반환하는 집합 연산자이기 때문에

첫 번째 쿼리 결과인 연봉 1500 이상인 행은 임꺽정과 장길산 2개, 두 번째 쿼리 결과인 연봉 2000 이상인 행 장길산이 합쳐져 3개의 튜플이 조회된다.

 

 

 

#14. 다음은 테이블 및 컬럼명에 대한 명세이다. 사원명이 홍길동, 나이가 24, 급여가 300인 직원을 직원 테이블에 삽입하는 쿼리를 작성하시오.

  • 테이블명: EMPLOYEE (직원 테이블)
  • 컬럼명: NAME(사원명), AGE(나이), SALARY (급여)

 

 

A. 

INSERT INTO EMPLOYEE(NAME, AGE, SALARY)
VALUES('홍길동', 24, 300);

 

 

해설.

INSERT 명령문은 다음과 같다.

INSERT INTO 테이블명(속성명1, ...)
VALUES(데이터1, ...);

 

 

 

#15. 다음은 테이블 및 컬럼명에 대한 명세이다. 급여가 300 이하인 직원들을 직원 테이블에서 삭제하는 쿼리를 작성하시오.

  • 테이블명 : EMPLOYEE(직원 테이블)
  • 컬럼명 : NAME(사원명), AGE(나이), SALARY(급여)

 

 

 

A. 

DELETE FROM EMPLOYEE
 WHERE SALARY <= 300;

 

 

# 데이터 조작어 (DML; Data Manipulation Language)
데이터 조작어는 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어

※ 세인업데 : SELECT / INSERT / UPDATE / DELETE

1. SELECT - 조회 
테이블 내 컬럼에 저장된 데이터 조회 

※ 셀프 웨 구해오 : SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY

2. INSERT - 삽입
테이블 내 컬럼에 데이터 추가

※ 인인벨 : INSERT INTO / VALUES

INSERT INTO 테이블명(속성명1, ...)
VALUES (데이터1, ...);

- 속성과 데이터 개수, 데이터 타입이 일치해야 함
- 속성명 생략 가능
- 속성 타입 숫자 ▶ 따옴표 X
- 속성 타입 문자열 ▶ 따옴표 O

3. UPDATE - 갱신

테이블 내 컬럼에 저장된 데이터 수정

※ 업셋웨 : UPDATE / SET / WHERE

UPDATE 테이블명
       SET 속성명 = 데이터, ...
WEHRE 조건;

- WHERE 절을 통해 어떤 조건만족하는 특정 컬럼 값만 수정하는 용도로 자주 사용

4. DELETE - 삭제
테이블 내 컬럼에 저장된 데이터 삭제

※ 델프웨 : DELETE / FROM / WHERE

DELETE FROM 테이블명
WHERE 조건;

- 모든 레코드 삭제 시, WHERE 절 없이 DELETE만 사용
- 레코드 삭제해도 테이블 구조는 남아있어 테이블 자체삭제하는 DROP과 차이가 있음

 

 

해설.

DELETE 명령문은 다음과 같다.

DELETE FROM 테이블명
 WEHRE 조건;

 

 

 

#16. 관리자가 사용자 장길산에게 '학생' 테이블에 대해 UPDATE 할 수 있는 권한을 부여하는 쿼리를 작성하시오.

 

 

 

A.

GRANT UPDATE ON 학생 TO 장길산;

 

 

 

# 데이터 제어어 (DCL; Data Control Language)
데이터 제어어는 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어

※ GRANT / REVOKE

1. GRANT - 사용 권한 부여
관리자가 사용자에게 데이터베이스에 대한 권한을 부여하는 명령어

※ 그온투 : GRANT / ON / TO

GRANT 권한 ON 테이블 TO 사용자;

2. REVOKE - 사용 권한 취소/회수
관리자가 사용자에게 데이터베이스에 대해 부여했던 권한을 회수하는 명령어 

※ 리온프 : REVOKE / ON / FROM 

REVOKE 권한 ON 테이블 FROM 사용자;

 

 

해설.

GRNAT 명령문은 다음과 같다.

 

그온투GRNAT 권한 ON 테이블 TO 사용자;