본문 바로가기

DBMS

[DBMS] 09

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() : 반올림

'3.5515616' 반올림 및 결과
'3.5515616' 소수 첫째 자리까지 반올림 및 결과

 

TRUNC() : 버림

- '3.9'의 소수점 버림

SELECT FLOOR(3.9) FROM DUAL;

 

결과

 

※ 실습

- PLAYER 테이블에서 키는 소수점 두번째 자리까지 반올림, 몸무게는 소수점 버림

SELECT ROUND(HEIGHT, 2)||'cm' AS 키, TRUNC(WEIGHT)||'kg' 몸무게 FROM PLAYER;

 

'DBMS' 카테고리의 다른 글

[DBMS] 11  (0) 2021.11.04
[DBMS] 10  (0) 2021.11.03
[DBMS] 08  (0) 2021.11.01
[DBMS] 07  (0) 2021.10.31
[DBMS] 06  (0) 2021.10.30