NULL
● NULL
- 정의되지 않은 값
- 빈 값 대신 미정 값을 부여할 때 사용(PK는 불가능, FK는 가능)
● NOT NULL 제약조건
ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;
● 제약조건 삭제
ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;
(ex)
TBL_CAR 테이블에서 BRAND 컬럼의 제약조건을 삭제한다.
ALTER TABLE TBL_CAR MODIFY BRAND NOT NULL;
● 조건식
1. 컬럼명 IS NULL : 컬럼 값이 NULL이면 참
(ex)
PLAYER 테이블에서 POSITION이 NULL이면 '미정'으로 결과 출력
SELECT NVL("POSITION", '미정') FROM PLAYER WHERE "POSITION" IS NULL;
2. 컬럼명 IS NOT NULL : 컬럼 값이 NULL이 아니면 참
(ex)
PLAYER 테이블에서 POSITION이 NULL이 아닌 선수 검색
SELECT * FROM PLAYER WHERE "POSITION" IS NOT NULL;
● NULL 값을 다른 값으로 변경
1. NVL() : NULL 값 대신 다른 값으로 변경 후 검색
(ex)
1. PLAYER 테이블에서 POSITION이 NULL이면 '미정'으로 결과 출력(AS 미사용)
SELECT NVL("POSITION", '미정') FROM PLAYER WHERE "POSITION" IS NULL;
2. PLAYER 테이블에서 POSITION이 NULL이면 '미정'으로 결과 출력(AS 사용)
SELECT PLAYER_NAME "선수 이름", NVL("POSITION", '미정') 포지션 FROM PLAYER;
2. NVL2() : NULL일 때의 값, NULL이 아닐 때의 값을 각각 설정
(ex)
1. PLAYER 테이블에서 POSITION이 NULL이 아니면 '확정', NULL이면 '미정'으로 결과 출력
SELECT PLAYER_NAME "선수 이름", NVL2("POSITION", '확정', '미정') AS 포지션 FROM PLAYER;
2. PLAYER 테이블에서 NATION이 NULL이 아니면 등록, NULL이면 미등록으로 변경
SELECT PLAYER_NAME "선수 이름", NVL2(NATION, '등록', '미등록') "국가 등록 여부" FROM PLAYER;
숫자형 함수(DUAL)
● ABS() : 절대값
- 10의 절대값
SELECT ABS(-10) FROM DUAL;

● SIGN() : 양의정수(1), 영(0), 음의정수(-1) 판단
- '-234, 0, 123' 판단
SELECT SIGN(-234), SIGN(0), SIGN(123) FROM DUAL;

● MOD() : 나머지(모듈러스)
- 10 나누기 3의 나머지
SELECT MOD(10,3) FROM DUAL;

● CEIL() : 값보다 큰 최근접 점수(올림)
- '3.14'와 '-3.14' 올림
SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL;

● FLOOR() : 값보다 작은 최근접 점수(버림)
- '3.14'와 '-3.14' 버림
SELECT FLOOR(3.14), FLOOR(-3.14) FROM DUAL;

● ROUND() : 반올림


● TRUNC() : 버림
- '3.9'의 소수점 버림
SELECT FLOOR(3.9) FROM DUAL;

※ 실습
- PLAYER 테이블에서 키는 소수점 두번째 자리까지 반올림, 몸무게는 소수점 버림
SELECT ROUND(HEIGHT, 2)||'cm' AS 키, TRUNC(WEIGHT)||'kg' 몸무게 FROM PLAYER;