728x90
정규형
- 제 2정규형 : 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된 상태
CROSS JOIN
- CROSS JOIN : 테이블 간 모든 가능한 조합을 생성
- ‘전체’를 선정 = 가능한 모든 경우의 수 = CROSS JOIN
CONNECT BY 와 계층형
SELECT C1, C2, C3
FROM SQLD44
CONNECT BY PRIOR C1 = C2
START WITH C1 = 1
ORDER SIBLINGS BY C1 DESC;
- CONNECT BY PRIOR C1 = C2: 계층적인 연결을 설정합니다. **C1**이 **C2**와 관계를 맺음을 의미합니다.
- START WITH C1 = 1: 계층 구조의 시작 지점을 설정합니다. 여기서는 C1 값이 1인 행을 시작으로 설정합니다.
- ORDER SIBLINGS BY C1 DESC: 형제 노드 간의 정렬을 지정합니다. 여기서는 C1 값을 내림차순으로 정렬합니다.
데이터 제어어 분류
- 데이터 제어어 (DCL : Data Control Language)
- 데이터베이스에 접근하고 객체들을 사용하도록 **권한(GRANT)**을 주고 **회수(REVOKE)**하는 명령어
- 권한 관련 — REVOKE, GRANT = DCL
- DDL Data Definition Language
- 데이터 정의 언어
- DB, 테이블, 인덱스 등 — 데이터 구조 정의/변경/삭제 시 사용
- CREATE, ALTER, DROP, TRUNCATE
- DML Data Manipulation Language
- 데이터 조작 언어
- 테이블에 저장된 데이터를 조회/변경 시 사용
- SELECT, INSERT, UPDATE, DELETE
- DCL Data Control Language
- 데이터 제어 언어
- DB에 접근 or 객체를 사용하는 권한 제어
- GRANT, REVOKE
- TCL Transaction Control Language
- 트랜잭션 제어 언어
- DB에서 트랜잭션 제어 시 사용
- COMMIT, ROLLBACK, SAVEPOINT
- SAVEPOINT : 중간 상태 저장
- ROLLBACK TO SAVEPOINT → COMMIT ⇒ SAVEPOINT 이후에 수정한 건에 대해서 취소할 수 있음
- SAVEPOINT : 중간 상태 저장
ORDER BY
SELECT 학생, 점수, NTILE(4) OVER (ORDER BY 점수 DESC) as 그룹
FROM 학생점수;
이 쿼리를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
학생 점수 그룹
-----------------
최지은 92 1
박영희 90 1
윤하은 88 2
김철수 85 2
김민지 86 3
박지성 82 3
장현진 80 4
이민수 78 4
여기서 '그룹' 열은 NTILE() 함수에 의해 생성된 것으로, 각 학생이 속한 그룹을 나타냅니다. 그룹 1은 상위 25%, 그룹 2는 상위 50%, 그룹 3은 상위 75%, 그룹 4는 하위 25%를 의미합니다.
따라서 이 결과를 통해 각 학생이 전체 중에서 상위 몇 %에 속하는지 알 수 있습니다.
- ORDER BY 다음에 뭐 안붙으면 → ASC 기본값
- OVER : 그룹화, 정렬, 범위 지정 등 ⇒ 복잡한 집계 연산 수행 가능
- RANGE BETWEEN ~
- BETWEEN 0 PRECEDING AND 50 FOLLOWING 구문 : 현재 행을 기준으로 앞에는 0개의 행(즉, 현재 행만), 뒤에는 50개의 행을 포함하는 윈도우를 정의
LIKE : 문자열 패턴 정보
- LIKE 연산자 : 문자열의 특정 패턴 정보
- '%' : 0개 이상의 임의의 문자와 일치
- LIKE '%abc%'는 'abc'를 어디에든 포함하는 모든 문자열과 일치
- '_' : 정확히 한 개의 임의의 문자와 일치
- LIKE '_abc'는 'abc' 앞에 어떤 한 문자가 있는 모든 문자열과 일치
- 이 두 와일드카드를 조합하여 복잡한 패턴을 만들 수 있습니다.
- LIKE 'abc%' : 'abc'로 시작하는 모든 문자열과 일치합니다.
- LIKE '%abc' : 'abc'로 끝나는 모든 문자열과 일치합니다.
- LIKE '_abc%' : 'abc'로 시작하며 그 앞에 한 문자가 있는 모든 문자열과 일치합니다.
- LIKE 'abc_%' : 'abc'로 시작하며 그 뒤에 한 문자가 있는 모든 문자열과 일치합니다.
- LIKE '_abc_' : 'abc'를 중간에 포함하며 그 앞뒤로 한 문자가 있는 모든 문자열과 일치합니다.
- LIKE 'a_c%' : 첫 번째 문자가 'a'이고, 세 번째 문자가 'c'인 모든 문자열과 일치합니다.
- LIKE '_L%' : 두 번째 문자가 'L'인 모든 문자열과 일치합니다.
- '%' : 0개 이상의 임의의 문자와 일치
도메인 특징
- 도메인 : ‘속성이 가질 수 있는 값의 범위’
- 특정 필드에 입력할 수 있는 데이터의 타입, 크기, 형식, 범위 등을 지정
- 데이터의 유효성 보장 & 일관성 유지
NULL 예외처리 종류
- NVL (Oracle) : 첫 번째 인수가 NULL → 두 번째 인수를 반환 / 첫 번째 인수가 NOT NULL → 첫 번째 인수를 그대로 반환
- 예외처리로 사용
- employees 테이블의 salary 필드 값을 조회하는데, 만약 salary 필드의 값이 NULL이면 0을 반환합니다.
- SELECT NVL(salary, 0) FROM employees;
- 예외처리로 사용
- IFNULL (My SQL) : (= NVL)
- ISNULL (My SQL Server) : (=NVL)
- COALESCE (표준) : NULL이 아닌 첫 번째 값을 반환 / 모든 인수가 NULL일 경우에만 NULL을 반환
- AVG() : NULL값 무시 — NOT NULL인 값들의 평균만 계산함
- Oracle OUTER JOIN: Oracle에서는 (+) 연산자를 사용 → OUTER JOIN을 표현합니다. 이는 한 테이블의 모든 행을 반환하고, 다른 테이블에서 일치하는 행이 없는 경우 NULL 값을 반환하게 됩니다. (+) 연산자가 붙은 테이블이 outer 테이블이 됩니다.
- (+)가 붙은 테이블이 기준
728x90
'Study' 카테고리의 다른 글
[IT기사] "애플 생태계", 美 법무부에 독점 혐의 조사 받는다 (0) | 2024.01.07 |
---|---|
[SQLD] GROUP BY와 HAVING (1) | 2023.11.21 |
[SQLD] 서브쿼리 개념 톺아보기 (1) | 2023.11.21 |
[SQLD] VIEW는 가상테이블! (0) | 2023.11.21 |
[SQLD] JOIN 종류 : OUTER/INNER/NATURAL/CROSS/SELF (0) | 2023.11.21 |