본문 바로가기

SQL

[ SQLD ] 빈출 개념 정리 #2

17. join

> Natural join

반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요하다.

조인에 이용되는 컬럼은 명시하지 않아도 자동으로 조인에 사용된다.

동일한 이름을 갖는 컬럼이 있지만 데이터 타입이 다르면 에러가 발생한다.

조인하는 테이블 간의 동일 컬럼이 SELECT 절에 기술되도록 테이블 이름을 생략해야 한다.

- select department_id 부서, department_name 부서이름, location_id 지역번호, city 도시

from departments

natural join locations

where city = 'Seattle';

 

> Using

USING 절은 조인에 사용될 컬럼을 지정한다.

NATURAL 절과 USING 절은 함께 사용할 수 없다.

조인에 이용되지 않은 동일 이름을 가진 컬럼은 컬럼명 앞에 테이블명을 기술한다.

조인 컬럼은 괄호로 묶어서 기술해야 한다.

- select department_id 부서번호, department_name 부서, location_id 지역번호, city 도시

  from departments

  join locations using (location_id);

 

> left outer join

- from table a left outer join table b

  on a.col = b.col 이것과 같은 오라클 sql 문법은

- from table a, table b

   where a.col = b.col(+)

 

> join 순서

- from a,b,c

   a 와 b가 join 되고, 그리고 c와 join 된다.

 

 

18. 서브쿼리

Select : 스칼라서브쿼리

From : 인라인뷰 (메인쿼리의 컬럼사용 가능)

Where : 중첩서브쿼리

Group by : 사용불가

Having : 중첩서브쿼리

Order by : 스칼라서브쿼리

In : 서브쿼리출력값들 or 조건

Any / Some : 서브쿼리출력값들 중 가장 작거나 큰값과 비교

All : any / some과 반대개념

Exists : 서브쿼리 내 select 절엔 뭐가와도 상관없다. Row가 있으면 true, 없으면 false

 

19. 집합연산자

  • Union : 정렬 O, 중복제거 O, 느리다
  • Intersect : 정렬 O, 교집합, 느리다
  • Minus (expect) : 정렬 O, 차집합, 느리다
  • Union all : 정렬 X, 중복제거 X, 빠르다

 

20. DDL

  • Truncate : drop & create , 테이블 내부구조는 남아있으나 데이터가 모두 삭제됨
  • Drop : 테이블 자체가 없어짐 (당연히 데이터도 없음)
  • Delete : 데이터만 삭제
  • Rollback, commit와 항상 같이 나옴

 

21. DML

Insert : 데이터 넣는 명령, insert into 테이블 (col1,col2, col3...) values ('11','22','33',...);

- values를 기준으로 좌우의 괄호 속 개수가 맞는지

update : 데이터의 특정 행 값을 변경 (delete & insert)

delete : 데이터의 특정 행을 삭제

- delete from 테이블 where col = '조건';

merge : 특정 데이터를 넣을 때 해당 테이블 키 값을 기준으로 있으면 update, 없으면 insert를 한다.  (최근 기출)

 

위 문제 모두 commit, rollback, savepoint와 주로 함께 출제된다.

 

22. 제약조건 ***

PK : not null + unique

테이블당 하나의 PK를 가질 수 있음 (하나라는 게 컬럼이 아님, 복합키 가능)

Not null : 해당 컬럼에 null이 올 수 없음

Unique : 해당 컬럼에 중복값이 올 수 없음

 

23. DCL

Grant, revoke 문법

GRANT 시스템권한명[, 시스템권한명...| 롤명] TO 유저명 [, 유저명...| 롤명 ...| PUBLIC | [WITH ADMIN OPTION];

REVOKE { 권한명[, 권한명...] ALL } ON 객체명 FROM {유저명[, 유저명...] | 롤명 (ROLE) | PUBLIC } [ CASCADE CONSTRAINTS];

 

- Role은 객체

 

 

24. VIEW

독립성, 편의성, 보안성

SQL을 저장하는 개념

 

SQL에서 select만 딱 가지고 있는 느낌

그러나 원래 테이블이 없어지면 view도 같이 실행이 안될 수 있음

 

25. 그룹함수

roll up

cube

groupingsets

grouping

어떤 결과가 나오고, 어떤 함수를 사용했는지에 대한 문제 기출

 

ROLLUP

(GROUP BY에 있는 컬럼들을 오른쪽에서 왼쪽 순으로 그룹 생성)

a, b 로 묶이는 그룹의 값

a로 묶이는 그룹의 소계

전체 합계

 

CUBE

(나올 수 있는 모든 경우의 수로 그룹 생성)

a, b로 묶이는 그룹의 값

a로 묶이는 그룹의 소계

b로 묶이는 그룹의 소계

전체합계

 

26. TCL

Commit, rollback

 - Auto commit, begin transaction (commit 기능 잠시 끄기) end