가자공부하러!

데이터베이스(4) - SQL(JOIN, DML, DCL) 본문

공부/정보처리기사(실기)

데이터베이스(4) - SQL(JOIN, DML, DCL)

오피스엑소더스 2019. 5. 29. 09:33


1. SQL - DDL

2. SQL - SELECT

3. SQL - JOIN

4. SQL - DML

5. SQL - DCL

6. 뷰(VIEW)

7. 내장 SQL

8. 스토어드 프로시져(Stored Procedure)




1. SQL - DDL


https://dotheright.tistory.com/90#1

2. SQL - SELECT


https://dotheright.tistory.com/90#2

3. SQL - JOIN


1. JOIN의 개념

  > 2개의 테이블에 대해 연관된 튜플들을 결합하여 하나의 새로운 릴레이션을 반환

  > 일반적으로 FROM절에 기술한다.

ㄴ 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다.


2. INNER JOIN

  > 일반적으로 EQUI JOIN과 NON-EQUI JOIN으로 구분

  > EQUI JOIN

- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방식이다.

- 중복된 속성을 제거하여 같은 속성은 한 번만 표기하는 방법을 NATURAL JOIN이라 한다.

- 연결고리가 되는 공통 속성을 JOIN 속성이라고 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--EQUI 조인
 
-- WHERE절을 이용한 EQUI JOIN의 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명;
 
-- NATURAL JOIN을 이용한 EQUI JOIN의 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;
 
-- JOIN ~ USING절을 이용한 EQUI JOIN의 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING(속성명);
cs

  > NON-EQUI JOIN

- JOIN 조건에 '='조건이 아닌 나머지 비교 연산자를 사용하는 JOIN 방법이다.

ㄴ >, <, <>, >=, <= 등

1
2
3
4
5
--NON-EQUI 조인
 
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE (NON-EQUI JOIN 조건);
cs

3. OUTER JOIN

  > 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기위한 JOIN 방법

  > LEFT OUTER JOIN

- INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다.

1
2
3
4
5
6
7
8
9
--LEFT OUTER JOIN 1
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
 
--LEFT OUTER JOIN 2
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
cs

  > RIGHT OUTER JOIN

- INNER JOIN의 결과를 구한 후 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가

1
2
3
4
5
6
7
8
9
--RIGHT OUTER JOIN 1
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
 
--RIGHT OUTER JOIN 2
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명(+= 테이블명2.속성명;
cs

  > FULL OUTER JOIN

- LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐놓은 것

- 좌측도 추가 우측도 추가

1
2
3
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
cs


4. SELF JOIN

  > 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN을 하는 JOIN 방법

  > 표기 형식

1
2
3
4
5
6
7
8
9
--SELF JOIN 1
SELECT [별칭1.]속성명, [별칭2.]속성명, ...
FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2
ON 별칭1.속성명 = 별칭2.속성명;
 
--SELF JOIN 2
SELECT [별칭1.]속성명, [별칭1.]속성명, ...
FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2
WHERE 별칭1.속성명 = 별칭2.속성명;
cs



4. SQL - DML


1. DML ( Data Manipulation Language )

  > 저장된 데이터를 실질적으로 관리하는데 사용되는 언어

  > DB사용자와 DBMS간의 인터페이스를 제공

  > 유형 : 

- INSERT : 테이블에 새로운 튜플을 삽입

- DELETE : 테이블에서 튜플을 삭제

- UPDATE : 테이블에서 튜플의 내용을 갱신한다.


2. INSERT

  > 테이블에 새로운 튜플을 삽입

  > 표기 형식

1
2
3
4
5
6
7
8
9
10
INSERT INTO 테이블명 [ (속성명1, 속성명2, ... ) ]
VALUES (데이터1, 데이터2, ... );
 
--<사원>테이블에 이름이 "이순신"이고, 부서가 "기획"인 사원 삽입
INSERT INTO 사원(이름, 부서) VALUES ('이순신''기획');
 
--<사원>테이블에 있는 편집 부서의 모든 튜플을
--<편집부원(이름, 생일, 주소, 기본급)> 테이블에 삽입
INSERT INTO 편집부원(이름, 생일, 주소, 기본급)
SELECT 이름, 생일, 주소, 기본급 FROM 사원 WHERE 부서='편집';
cs


3. DELETE

  > 테이블에 있는 튜플들 중에서 특정 튜플을 삭제

  > 표기 형식

1
2
3
4
5
6
7
8
--표기 형식
DELETE FROM 테이블명 WHERE 조건;
 
--<사원>테이블에서 이름이 "임꺽정"인 튜플을 삭제
DELETE FROM 사원 WHERE 이름 = '임꺽정';
 
--<사원>테이블의 모든 튜플을 삭제하는 SQL문
DELETE FROM 사원;
cs


4. UPDATE

  > 특정 튜플의 내용을 갱신할 때 사용

1
2
3
4
5
6
7
8
9
--표기 형식
UPDATE 테이블명 SET 속성명=데이터[, 속성명=데이터, ...]
WHERE 조건;
 
--<사원> 테이블에서 홍길동의 주소를 "퇴계동"으로 갱신
UPDATE 사원 SET 주소='퇴계동' WHERE 이름='홍길동';
 
--<사원> 테이블에서 황진이의 부서를 "기획"으로 변경하고 기본급을 5 인상
UPDATE 사원 SET 부서='기획', 기본급=기본급+5 WHERE 이름='황진이';
cs

  


5. SQL - DCL


1. DCL ( Data Control Language )

  > 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 용도로 사용

  > DBA가 데이터 관리를 목적으로 사용

  > DCL의 유형

- COMMIT : DB 조작 작업을 영구적으로 반영하여 완료

- ROLLBACK : DB 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구

- GRANT : DB 사용자에게 권한을 부여

- REVOKE : DB 사용자의 사용 권한을 취소


2. COMMIT / ROLLBACK

  > COMMIT

- 트랜잭션의 모든 변경 내용들을 영구적으로 DB에 반영하는 명령어

ㄴ 트랜잭션? : DB의 작업단위 (하나의 논리적 기능을 수행하기 위한 일련의 연산 집합)

- 트랜잭션이 성공적으로 완료되면 수행된 모든 변경을 DB에 반영하여 완료(COMMINT)해야 한다.

ㄴ DB가 새로운 일관성 상태를 가지기 위함


  > ROLLBACK

- 변경된 모든 내용들을 취소하고 DB를 이전 상태로 되돌리는 명령어


3. GRANT / REVOKE

  > GRANT : 권한 부여를 위한 명령어

  > 표기 형식 (사용자등급 지정 및 해제)

1
2
3
4
5
6
7
8
9
--사용자 등급 지정 및 해제
GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;
 
--DB및 테이블 생성 권한 부여 예시
GRANT RESOURCE TO minhj;
 
--DB 검색 권한 부여 예시
GRANT CONNECT TO minhj;
cs

  > 표기 형식(테이블 및 속성에 대한 권한 부여 및 취소)

1
2
3
4
5
6
7
8
9
--테이블 및 속성에 대한 권한 부여 및 취소
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
 
--minhj에게 <고객>테이블에 대한 모든 권한과 권한부여 권한까지 부여하는 SQL문
GRANT ALL ON 고객 TO minhj WITH GRANT OPTION;
 
--minhj에게 부여한 권한 중 UPDATE 권한을 부여할 수 있는 권한만 취소하는 SQL문
REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM minhj
cs

- 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE 등

- WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한 부여

- GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소한다

- CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 부여한 권한들도 모두 취소



6. 뷰(VIEW)


https://dotheright.tistory.com/105#6

7. 내장 SQL


https://dotheright.tistory.com/105#7

8. 스토어드 프로시져(Stored Procedure)


https://dotheright.tistory.com/105#8



맨 위로
















Comments