
🌍SQL 기본
1. DB와 DMBS
DB : 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 의미한다.
DBMS : 효율적인 데이터 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요 시 필요한 데이터를 복구하기 위한 강력한 기능의 SW
2. DB의 발전
1960 : 플로우차트 중심의 개발, 파일구조 사용
1970 : DB 관리기법이 처음 태동, 계층-망형 DB등장
1980 : 관계형 DB 상용화, Oracle, Sybase 등장
1990 : 객체 관계형 DB로 발전
3. SQL이란?
관계형 DB에서 데이터 정의, 조작, 제어를 위해 사용하는 언어
4. SQL 문장 및 종류
- DML : SELECT, INSERT, UPDATE, DELETE 등 데이터 조작어
- DDL : CREATE, ALTER, DROP, RENAME 등 데이터 정의어
- DCL : GRANT, REVOKE 등 데이터 제어어
- TCL : COMMIT, ROLLBACK 등 트랜잭션 제어어
- 테이블 : 데이터를 저장하는 객체, 로우(가로, 행)와 칼럼(세로, 열)으로 구성
- 정규화 : 데이터의 정합성 확보와 데이터 입력/수정/삭제 시 발생할 수 있는 이상현상을 방지하기 위함
- 기본키 : 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼
- 외부키 : 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼
5. 데이터 유형
- CHAR(s) : 고정 길이 문자열 정보
- VARCHAR(s) : 가변 길이 문자열 정보
- NUMERIC : 정수, 실수 등 숫자 정보
- DATE : 날짜와 시각 정보
6. 제약조건
- PRIMARY KEY(기본키) : 기본키 정의
- UNIQUE KEY(고유키) : 고유키 정의
- NOT NULL : NULL 값 입력금지
- CHECK : 입력 값 범위 제한
- FOREIGN KEY(외래키) : 외래키 정의
7. 트랜잭션과 특성
7-1. 트랜잭션이란?
밀접히 관련되어 분리될 수 없는 1개 이상의 DB 조작
7-2. 구성
COMMIT : 올바르게 반영된 데이터를 DB에 반영
ROLLBACK : 트랜잭션 시작 이전의 상태로 되돌림
SAVEPOINT : 저장 지점
7-3. 트랜젝션의 특성
- 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않아야 함
- 일관성 : 트랜잭션 실행 전 DB 내용이 잘못 되지 않으면 실행 후도 잘못 되지 않아야 함
- 고립성 : 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
- 지속성 : 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장된다
8. 연산자의 종류
- BETWEEN a AND b : a와 b 값 사이에 있으면 됨
- IN (list) : 리스트에 있는 값중 어느 하나라도 일치
- LIKE ‘비교문자열’ : 비교문자열과 형태가 일치
- IS NULL : NULL 값인 경우
- NOT IN (list) : list의 값과 일치하지 않는다
- IS NOT NULL : NULL 값을 갖지 않는다.
연산자 우선순위 : ()->NOT->비교연산자->AND->OR
9. 문자형 함수
- LOWER : 문자열을 소문자로
- UPPER : 문자열을 대문자로
- ASCII : 문자의 ASCII 값 반환
- CHR/CHAR : ASCII 값에 해당하는 문자 반환
- CONCAT : 문자열1, 2를 연결
- SUBSTR/SUBSTRING : 문자열 중 m 위치에서 n개의 문자 반환
- LENGTH/LEN : 문자열 길이를 숫자 값으로 반환
- CONCAT(‘RDBMS’,‘ SQL’) -> ‘RDBMS SQL’
- SUBSTR(‘SQL Expert’,5,3) -> ‘Exp’
10. 숫자형 함수
- SIGN(n) : 숫자가 양수면1 음수면-1 0이면 0 반환
- MOD : 숫자1을 숫자2로 나누어 나머지 반환
- CEIL/CEILING(n) : 크거나 같은 최소 정수 반환
- FLOOR(n) : 작거나 같은 최대 정수 리턴
11. 날짜형 함수
- SYSDATE/GETDATE() 현재날짜와 시각 출력
- EXTRACT/DATEPART 날짜에서 데이터 출력
- TO_NUMBER(TO_CHAR(d,‘YYYY’))/YEAR(d)
12. NULL 관련 함수
- NVL(식1,식2)/ISNULL(식1,식2) : 식1의 값이 NULL 이면 식2 출력
- NULLIF(식1,식2) : 식1이 식2와 같으면 NULL을 아니면 식1을 출력
- COALESCE(식1,식2) : 임의의 개수표현식에서 NULL이 아닌 최초의 표현식, 모두 NULL이면 NULL 반환
13. 집계 함수
13-1. 정의
- 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.
- GROUP BY 절은 행들을 소그룹화 한다.
- SELECT, HAVING, ORDER BY 절에 사용 가능
-ALL : Default 옵션
-DISTINCT : 같은 값을 하나의 데이터로 간주 옵션
13-2. 종류
- COUNT(*) : NULL 포함 행의 수
- COUNT(표현식) : NULL 제외 행의 수
- SUM, AVG : NULL 제외 합계, 평균 연산
- STDDEV : 표준 편차
- VARIAN : 분산
- MAX, MIN : 최대값, 최소값
14. GROUP BY, HAVING 절의 특징
- GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다.
- 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.
- GROUP BY 절에서는 ALIAS 사용 불가
- 집계 함수는 WHERE 절에 올 수 없다.
- HAVING 절에는 집계함수를 이용하여 조건 표시o
- HAVING 절은 일반적으로 GROUP BY 뒤에 위치
15. ORDER BY 특징
- SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정한 칼럼을 기준으로 정렬하여 출력하는데 사용한다.
- ORDER BY 절에 칼럼명 대신 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다.
- DEFAULT 값으로 오름차순(ASC)이 적용되며 DESC 옵션을 통해 내림차순으로 정렬이 가능하다.
- SQL 문장의 제일 마지막에 위치한다.
- SELECT 절에서 정의하지 않은 칼럼 사용 가능
- Oracle에서는 NULL을 가장 큰 값으로 취급하며 SQL Server에서는 NULL을 가장 작은 값으로 취급한다.
16. SELECT 문장 실행 순서
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY