▶ BEGIN TRANSACTION (BEGIN TRAN 구문도 가능)으로 트랜잭션을 시작
▶ 저장점(SAVEPOINT)
를 정의하면 롤백 할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.
[ORACLE]
SAVEPOINT SVPT1;
..
ROLLBACK TO SVPT1;
[SQL SERVER]
SAVE TRANSCTION
SVTR1;
..
ROLLBACK
TRANSACTION
SVTR1;
▶ 연산자의 우선순위
1. 괄호
2. 부정연산자 (NOT)
3. 비교연산자(=,< 등)와 SQL 비교 연산자(BETWEEN a AND b, IN(list), LIKE, IS NULL)
4. 논리연산자 중 AND, OR의 순으로 처리.
▶ NULL
값이 NULL이 아닌 경우를 찾아내는 문장
SELECT * FROM MYTABLE WHERE COLUMN1 IS NOT NULL
**부정비교 연산자 (같지 않다.)
!=
^=
<>
NOT 칼렴명 =
ORACLE에서 NULL 데이터 조회시 서비스명 IS NULL 조건
SQL Server에서 서비스명 = ''
특정)
-NULL 값을 포함하는 연산의 경우 결과 값도 널값이다.
▶
문자열 합치기
CONCAT(JOIN_YMD, JOIN_HH) = '2014120100' = JOIN_YMD | | JOIN_HH
▶
WHERE '201501' = TO_CHAR(SVC_END_DATE, 'YYYYMM')
SVC_END_DATE에 있는 모든 날짜형식 데이터를 YYYYMM 형태의 문자형 데이터로 만듭니다
EX) 2015.01.01 01:23:43 >> 201501
2015.01.05 06:22:55 >> 201501
결국 모든 1월 내 데이터를 가져온다는 조건
4번 WHERE TO_DATE('201501', YYYYMM) = SVC_END_DATE
TO_DATE('201501', YYYYMM)의 값이 2015.01.01 00:00:00이 됩니다
최종적으로는 WHERE 2015.01.01 00:00:00 = SVC_END_DATE 이므로
결국 2015.01.01 00:00:00이 아닌 SVC_END_DATE 값들은 가져오지 못함.
▶ 함수 https://yzink.tistory.com/42
벤더에서 제공하는 내장함수 / 사용자가 정의할 수 있는 함수
내장함수는 단일행 함수 / 다중행 함수
집계함수 / 그룹함수 / 윈도우 함수
* 함수의 입력 행수에 따라 단일행 함수와 다중행 함수로 구분할 수 있다.
단일행 함수는 SELECT, WHERE, ORDER BY, UPDATE의 SET절에 사용이 가능하다.
다중행 함수도 단일행 함수와 같이 단일 값만을 반환한다.
▶ 단일행 문자형 함수
C1
A
A
LENGTH(C1) = 3 (ENTER값 1 )
REPLACE(C1, CHR(10))) = AA (LENGTH값은 2)
LTRIM
RTRIM
TRIM '양쪽 공백 제거 '
▶
SEARCHED_CASE)
CASE WHEN LOC ='NEW YOUR' THEN 'EAST'
SIMPLE_CASE)
CASE LOC WHEN 'NEW YOUR' THEN 'EAST
▶
SQL Server) ORACLE)
ISNULL( __ , 0) = NVL( __ , 0)
▶NULL관련 함수
NVL( 표현식1, 표현식2)
COL2 = NULL xXXXX
COL2 ISNULL OOOOo
COALEASCE(칼럼1, 칼럼2,...)
https://jhnyang.tistory.com/387
NULLIF(EXPR1, EXPR2)
- EXPR1과 EXPR2가 같다면 NULL을 리턴한다.
- EXPR1과 EXPR2가 같지 않다면 EXPR1을 리턴한다.
▶ GROUP BY 절과 HAVING절의 특성
- 집계함수의 통계정보는 NULL값 제외하고 수행
- GROUP BY 절에서는 SELECT 절과 달리 ALIAS 명을 사용할 수 없다.
-집게함수는 WHERE 절에 올 수 없다 (WHERE 절이 GROUP BY 보다 먼저 수행)
** DESC 내림차순
ASC 오름차순
▶
**
SELECT 지역, 매출금액
FROM 지역별매출
ORDER BY 년 ASC
ORACLE은 가능
SQLServer 불가능!!
ORDER BY 절 특징
-ORACLE에서는 NULL이 가장 큰 값
SQLServer에서는 작은값
- 컬럼명 대신 Alias 명이나 컬럼순서를 나타내는 정수도 사용 가능하며 혼용하여 사용할 수 있다.
-GROUP BY 절을 사용하는 경우 ORDER BY 절에 집계함수를 사용할 수도 있다.
▶ EX) 팀별 승리건수가 높은 순으로 3위까지 출력하되 동일한 팀이 있다면 함께 출력
SELECT TOP(3) WITH TIES 팀명, 승리건수
FROM 팀별성적
ORDER BY 승리건수 DESC;
'공부 > SQLD' 카테고리의 다른 글
데이터 모델링의 이해 (0) | 2022.08.24 |
---|---|
SQL 기본 (0) | 2022.08.23 |
데이터 모델링 (0) | 2022.08.22 |