728x90
반응형

SQLD

SQL 기본

데이터 무결성

  1. 개체 무결성
    - 기본키는 NULL 값이나 중복값을 가질 수 없음
  2. 참조 무결성
    - 외래키는 NULL이거나 참조 테이블의 기본키와 동일
  3. 도메인 무결성
    - 속성 값이 정의된 도메인에 속한 값
  4. NULL 무결성
    - 특정 속성에 NULL을 허용하지 않는 것
  5. 고유 무결성
    - 특정 속성에 값이 중복되지 않는 것
  6. 키 무결성
    - 하나의 관계에는 적어도 하나의 키가 존재해야 함

SQL 종류

DDL
(Data Definition Language)
CREATE, ALTER, DROP, TRUNCATE
DML
(Data Mnipulation Language)
INSERT, DELETE, UPDATE, MERGE
DCL
(Data Control Language)
GRANT, REVOKE
TCL
(Transaction Control Language)
COMMIT, ROLLBACK
DQL
(Data Query Language)
SELECT

SELECT 문

  • FROM -> WHERE -> GROUP -> HAVING -> SELECT -> ORDER BY 순서로 실행
SELECT (칼럼명)
FROM (테이블명)
WHERE (조회 조건)
GROUP BY (그룹핑 컬럼명)
HAVING (그룹핑 필터 조건)
ORDER BY (정렬 컬럼명) (정렬방법)

SELECT 절

  • 테이블을 불러오는 구문
  • Alias 지정 가능

Alias (별칭)

  • SELECT 절에서 정의 가능
SELECT EMPNO AS 회원번호
  • SELECT 뒤 실행되는 ORDER BY 에서만 사용 가능
  • 예약어 사용 불가, 공백, 특수문자 포함하면 쌍따옴표

 

FROM 절

  • 불러올 테이블 명 or 뷰 명
  • 여러개 가능하지만, 조인 조건 없으면 카타시안 곱

WHERE 절

  • 조회하고 싶은 조건 사용
  • NULL 조회는 IS NULL / IS NOT NULL 사용

LIKE 연산자

  • LIKE S% : S로 시작하는 모든 속성
  • LIKE %S% : S를 포함하는 모든 속성
  • LIKE %S : S로 끝나는 모든 속성
  • LIKE _S% : 2번째 글자가 S인 모든 속성

GROUP BY 절

  • 각 행을 조건에 따라 그룹으로 분리하여 계산하는 구문

HAVING 절

  • 그룹 함수 결과를 조건으로 사용할 때 사용

ORDER BY 절

  • 행의 순서를 변경할 때 사용

복합 정렬

  • 정렬한 값에 동일 값이 있을 경우, 2차 정렬
SELECT NAME, SALARY, H_DATE
FROM EMPLOYEE
WHERE SALARY > 5000
ORDER BY SALARY DESC, H_DATE ASC;
  • SALARY 기준 내림차순으로 1차 정렬, 만약 동일값이 있다면 H_DATE 기준 오름차순 정렬

 

조인(JOIN)

  • 여러 테이블을 동시 출력 혹은 참조 할때 사용, FROM 절에 사용
  • 테이블 명이 동일 할 경우 Alias 사용

조인 종류

1. 조건에 따라

  • EQUI JOIN : JOIN 조건이 동등인 경우
  • NON EQUI JOIN : JOIN 조건이 동등이 아닌 경우
-------<EQUI JOIN>-------
SELECT TABLE1.COL, TABLE2.COL
FROM TABLE1, TABLE2
WHERE TABLE1.COL = TABEL2.COL;

-------<NON-EQUI JOIN>-------
SELECT TABLE1.COL, TABLE2.COL
FROM TABLE1, TABLE2
WHERE TABLE1.COL > TABEL2.COL;

2. 조인 결과에 따라

  • INNER JOIN : 조인 조건에 성립하는 데이터만 출력
  • OUTER JOIN : 조건에 성립하지 않는 데이터도 출력(LEFT, RIGHT, OUTER)

3. 그외

  • NATURAL JOIN : 조건 생략 시 두 테이블에 같은 이름으로 연결되는 조인
  • CROSS JOIN : 조건 생략 시 두 테이블 사이 발생 가능한 모든 행을 출력
  • SELF JOIN : 한개의 테이블을 두 번 이상 참조하여 연결하는 조인
-------<SELF JOIN>-------
SELECT T1.EMP_ID, T1.FIR_NAME, T1.LAST_NAME, T1.MAN_ID,
	   T2.EMP_ID, T2.FIR_ID, T2.LAST_NAME
FROM H_TABLE T1, H_TABLE T2
WHERE T1.MAN_ID = T2.EMP_ID
ORDER BY 1, 4;

 

표준 조인

INNER 조인

  • 조인 조건이 일치하는 행만 출력
  • ANSI 표준, USING or ON 조건절 필수
-------<ON절 사용시>--------
SELECT TABLE1.COL, TABLE2.COL
  FROM TABLE1 INNER JOIN TABLE2
    ON TABLE1.J_COL = TABLE2.J_COL;
    
-------<USING절 사용시>-------
SELECT TABLE1.COL, TABLE2.COL
  FROM TABLE1 INNER JOIN TABLE2
 USING DEPTNO;
  • USING에는 Alias 불가

CROSS 조인

  • 생성 가능한 모든 데이터를 출력(카타시안 곱, m*n)
SELECT TABLE1.COL, TABLE2.COL
  FROM TABLE1 CROSS JOIN TABLE2;

OUTER 조인

  • 동일한 값이 없는 행도 출력

LEFT OUTER JOIN

  • 왼쪽 테이블 기준, 오른쪽 데이터 채우기
  • 우측 값에서 같은 값이 없으면 NULL

RIGHT OUTER JOIN

  • 오른쪽 테이블 기준, 왼쪽 데이터 채우기
  • 좌측 값에서 같은 값이 없으면 NULL

FULL OUTER JOIN

  • LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합(UNION)

 

참고

홍샘의 데이터랩

728x90
반응형

'SQL > 제 2과목' 카테고리의 다른 글

3장_관리구문  (44) 2024.05.15
2장_SQL 활용  (0) 2024.05.15