Study
SQLD 개념 정리
daehwi
2023. 11. 18. 15:50
반응형
SQL 관련 개략적인 내용 정리
연산 순서
from - where - group by - having - select - order by
명령어 종류
- DML(조작어): select, insert, delete, update
- DDL(정의어): alter, create, modify, rename, drop ...
- DCL(제어어): grant, revoke
- TCL(트랜잭션 제어): commit. rollback, savepoint
Select 기본
- distinct(집약)
- 중복된 값들을 하나로 집약해서 출력
- distinct a, b : 괄호가 없어도 a, b를 묶어서 distinct 처리된다.
- NULL도 하나의 종류로 포함된다.
- Alias
- select 절: as 생략 가능, column명에 띄어쓰기 있는 경우 큰따옴표("") 반드시 사용
- concat : 문자열 합치기
- 인수가 반드시 2개여야한다. (Oracle)
- SQL Server: +
- Oracle: ||
- 오라클에서는 NULL도 빈문자열로 치환해서 취급한다.
- 논리 연산자 (위부터 연산 우선 순위 N-A-O)
- NOT
- AND
- OR
- NOT으로 먼저 묶고, AND 연산 후, OR 연산SQL 연산자
- BETWEEN AND
- IN: A IN(1,2,3) == (A=1 or A=2 or A=3)
- LIKE: _ 는 임의의 1글자, %는 0글자 이상
- ESCAPE: 일종의 LIKE 탈출(?) 식별자
percent like "9_@%" escape '@'
와 같이 작성하면 @ 뒤의 %는 문자열 처리된다. (아무 문자나 가능)
- ESCAPE: 일종의 LIKE 탈출(?) 식별자
- ROWNUM (Oracle)
- 행에 번호를 매기고 싶을 때 사용
- order by와 함께 사용할 때, rownum -> order by 순으로 실행되기 때문에, 의도한 대로 동작하지 않을 수 있다.
- Top (SqlServer)
select Top(n) [컬럼명]
: 상위 n 개NULL"값을 알 수 없음" or "부재"를 의미함
- NULL이 들어간 모든 연산의 결과는 NULL
- NULL=NULL -> FASLE (모르는 것이지 특정한 값이 아니므로 비교가 불가능하다.)
- NULL의 정렬상 의미
- Oracle: 무한대
- SqlServer: -무한대
- 각종 함수
- NVL(V1,V2)
- V1이 NULL이면 V2, 아니면 V1
- NVL2(V1,V2,V3)
- V1이 NULL 이면 V3, 아니면 V2
- ISNULL(V1,V2)
- NVL과 동일
- NULLIF(V1,V2)
- 두 값이 같으면 NULL, 다르면 V1
- COALESCE(V1,V2, ...)
- NULL이 아닌 첫번째 값
- NULL 값을 치환할 때 용이하다.
- NVL(V1,V2)
ORDER BY (정렬)
- 정렬의 특성
- 가장 마지막에 실행된다.
- 성능이 느려질 가능성이 있다.
- null 값과의 관계 -> Oracle(무한대), SqlServer(-무한대)로 취급
- 컬럼 번호로 정렬하는 경우
- 출력되는 컬럼의 수보다 큰 값은 불가능하다
- 인수가 두 개인 경우
- 앞에서부터 순차적으로 적용된다.
- 출력되지 않는 컬럼으로도 정렬이 가능하다.
숫자 함수
- Round: 소수점 반올림
- Round(123.456) -> 소수점 첫 번째에서 반올림 -> 123
- Round(123.456,0) -> 소수점 첫 번째에서 반올림 -> 123
- Round(123.456,1) -> 소수점 두 번째에서 반올림 ->123.5
- Round(123.456,2) -> 소수점 세 번째에서 반올림 ->123.46 ...
- 역으로 정수 반올림도 가능하다.
- Round(123.456,-1) -> 정수 첫 번째에서 반올림 ->1240
- Trunc: 소수점 절사
- Ceil(Oracle) / Ceiling(SqlServer): 올림
- Floor: 내림 -> Floor(-2.6) = -3
문자열 함수 (생략)
- UPPER / LOWER
- LPAD / RPAD / LTRIM / RTRIM
- SUBSTR / NSTR
날짜 함수
- TO_CHAR / TO_DATE
- 형변환
- SYSDATE(Oracle) / GETDATE(SqlServer): 현재날짜
- 날짜 데이터 + 100 = 100일 이후
DECODE / CASE
- CASE WHEN ~ THEN ~ WHEN ~ THEN ~
- Else 가 없는 경우 NULL로 나옴
집계함수
- NULL 과의 관계
- SUM(컬럼명) -> NULL을 제외한 합
- AVG(컬럼명명) -> NULL 빼고 집계
- COUNT(*) / COUNT(1) -> NULL 집계
- COUNT(컬럼명) -> NULL 집계 안 함
GROUP BY
- 집약기능이 있다.
- 그룹 수준으로 정보를 바꾼다.
- 그룹에 대한 조건식 -> HAVING
반응형