1. SQL
1-1. 그 외 자주 쓰는 함수
NVL 함수 : NULL값을 원하는 값으로 조회
문법 : NVL(값 혹은 컬럼, 치환값) -> 자료형은 일치시켜야 함!
SELECT EMPNO
, ENAME
, NVL(COMM,0)
-- , NVL(COMM, '인센티브 없음') 자료형 일치!
FROM EMP;
NVL2(값 혹은 컬럼, NULL이 아닐 때 값, NULL일 때 치환 값)
-- NVL2(값 혹은 컬럼, NULL이 아닐 때 값, NULL일 때 치환 값)
SELECT COMM
, NVL(COMM, 0)
, NVL2(COMM, 1000, 0)
, NVL2(COMM, '널이 아님', '널임')
, NVL2(COMM, '널이 아님', 0) -- 둘 다 문자로 들어감
FROM EMP;
DECODE() 함수 : Java의 If Else
SELECT DEPTNO
, DECODE(DEPTNO, 10, '인사부')
, DECODE(DEPTNO, 10, '인사부', '개발부')
, DECODE(DEPTNO, 10, '인사부', 20, '개발부', '영업부')
FROM EMP;
CASE문
-- CASE문
SELECT DEPTNO
, CASE
WHEN DEPTNO = 10 THEN '인사부'
WHEN DEPTNO = 20 THEN '개발부'
ELSE '영업부' END AS 부서명1
, CASE DEPTNO
WHEN 10 THEN '인사부'
WHEN 20 THEN '개발부'
ELSE '영업부' END AS 부서명2
FROM EMP;
1-2. 단일행 함수, 다중행 함수(그룹함수)
MAX(), MIN() : 최대, 최소 값을 조회
SELECT MAX(SAL), MIN(SAL)
FROM EMP;
-- 다중행 함수(그룹함수)는 일반적인 컬럼과 같이 조회 불가
SELECT SAL, MAX(SAL)
FROM EMP;
COUNT() : 컬럼 개수를 세어 줌, NULL은 카운트가 되지 않기 때문에 PK로 COUNT하는 것이 좋다.
SELECT COUNT(EMPNO), COUNT(ENAME), COUNT(COMM)
FROM EMP;
+) 연산에 NULL이 포함되면 결과는 무조건 NULL
SELECT 10 + NULL FROM DUAL; --NULL
다중행 함수 사용 시 NULL값을 꼭 신경써야 한다.
--> NULL값이 포함되어 있는 컬럼의 개수를 세고 싶다면, 아래와 같이 NULL값을 0으로 바꿔준 상태에서 COUNT해 준다.
SELECT COUNT(NVL(COMM, 0)) FROM EMP;
1-3. 외래키 (FOREIGN KEY, FK)
선언 방법 : REFERENCES 참조하는 테이블명 (참조하는 컬럼명)
외래키는 참조하는 테이블의 PK키만 참조할 수 있다.
-- 게시글의 작성자는 BOARD_MEMBER 테이블의 MEM_ID 컬럼과 일치하는 데이터만 들어갈 수 있음
CREATE TABLE BOARD (
BOARD_NUM NUMBER PRIMARY KEY
, TITLE VARCHAR2(100) NOT NULL
, WRITER VARCHAR2(50) REFERENCES BOARD_MEMBER (MEM_ID)
, CONTENT VARCHAR2(100)
);
2. 세션 & 쿠키
request.setAttribute();로 던진 데이터는 단발성으로 저장되지 않기 때문에 필요할 때마다 데이터를 보내야 한다. 따라서 서버와 클라이언트가 통신할 때 한 번 던진 데이터를 오래 가지고 있고 싶을 때 세션(Session)과 쿠키(Cookie)를 쓴다.
서버는 세션에, 클라이언트는 쿠키에 데이터를 저장한다.
세션은 페이지를 닫을 때까지 데이터를 가지고 있으며, 저장 시간을 설정할 수 있다.
'TIL' 카테고리의 다른 글
| 230228 [SQL, Javascript] (트랜잭션 / 함수) (0) | 2023.02.28 |
|---|---|
| 230227 [SQL] (조인) (0) | 2023.02.27 |
| 230222 [Mybatis] (Mybatis로 MVC 패턴 구현) (0) | 2023.02.22 |
| 230221 [SQL] (집합연산자 / 문자 & 숫자 & 형 변환 함수) (0) | 2023.02.21 |
| 230220 [SQL, Java] (ORDER BY / MVC 패턴) (0) | 2023.02.20 |