begin transaction;
save transaction sp1; # sp1 저장점 설정
update 상품 set 상품명='LCD-TV' where 상품ID='001';
save transaction sp2; # sp2 저장점 설정
update 상품 set 상품명='평면-TV' where 상품ID='001';
rollback transaction sp2;
commit;
논리연산자의 우선순위는 NOT > AND > OR 순이다.
''
)?????
1:M 조인이라 하더라도 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용할 수 있다.
다중행 함수도 단일행 함수와 동일하게 단일 값만을 반환한다.
↓
는 LENGTH 에 포함된다.
CHR(10) : →
줄바꿈을 의미한다.
즉, ↓
이렇게 줄바꿈 되던 문자가 →
이렇게 줄바꿈이 된다.
1/24 : 1일 / 24시간 = 1시간
1/24/6 : 1시간 / 6분 = 10분
1/24/60 : 1시간 / 60분 = 1분
1/24/60/6 : 1분 / 6초 = 10초
CASE WHEN LOC = 'NEW YORK' THEN 'EAST' ELSE 'ETC' END
CASE LOC WHEN 'NEW YORK' THEN 'EAST' ELSE 'ETC' END
③ NULL 값을 확인할 때는 IS NULL 을 사용해야 한다. COLUMN = NULL (X)
함수 | 함수 설명 |
---|---|
NVL(표현식1, 표현식2) ISNULL(표현식1, 표현식2) | 표현식1이 NULL이면 표현식2의 값을 출력하고, 표현식1이 NULL이 아니면 표현식1을 그대로 출력한다. |
NULLIF(표현식1, 표현식2) | 표현식1이 표현식2와 같으면 NULL, 같지 않으면 표현식1을 리턴한다. |
COALESCE(표현식1, 표현식2, ...) | NULL이 아닌 최초의 표현식 모든 표현식이 NULL이라면 NULL을 리턴한다. |
오라클에서는 NVL , SQL Server에서는 ISNULL 함수를 사용한다.
NULL이 포함된 연산의 결과는 무조건 NULL !!!!
SUM, AVG, COUNT 등의 집계함수들은 NULL 값을 제외하고 계산한다.
SQL3) COUNT(컬럼이름) : NULL 값 제외 / COUNT(*) : NULL 값 포함
② HAVING 절은 일반적으로 GROUP BY 절과 함께 사용되지만, 반드시 GROUP BY 절과 같이 사용될 필요는 없다. HAVING 절은 집계 함수 결과를 기준으로 행을 필터링하는 데 사용된다.
④ 중첩된 그룹함수 => 최종 결과값 1건일 수 밖에 없음! GROUP BY 가 필요없음
뭐가 오류라는거야? PASS
③ ORDER BY 절에 컬럼명 대신 alias명이나 컬럼 순서를 나타내는 정수를 혼용하여 사용할 수 있다.
④ ORDER BY 절을 사용하는 경우 ORDER BY 절에 집계 함수를 사용할 수도 있다.
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
SELECT TOP 3 WITH TIES FROM 테이블명;
TOP 3 는 3개의 데이터만 출력하지만, TOP 3 WITH TIES 는 TOP 3에서 출력되는 데이터와 동일한 데이터까지 함께 출력된다.
여러 테이블로부터 원하는 데이터를 조회하기 위해서는 전체 테이블 개수에서 최소 N-1 개 만큼의 JOIN 조건이 필요하다.
SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;
SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;