Search

RDBMS NULL

Image
220px-Db-omega.svg.png
Category
Start.Date
End.Date
Member

RDBMS VERSION

RDBMS
VERSION
VERSION CHECK SQL
TIBERO
7 FS02 (Compiled at Jun 20 2022 11:29:40 build seq 202489 init rev {2022-03-10})
SELECT * FROM VT_VERSION;
ORACLE
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SELECT * FROM V$VERSION;
MySQL
8.0.29
SELECT VERSION();
MariaDB
10.8.3-MariaDB-1:10.8.3+maria~jammy
SELECT VERSION();
MS SQL Server
Microsoft SQL Server 2022 (CTP2.0) - 16.0.600.9 (X64)
SELECT @@VERSION;
IBM Db2
DB2 v11.5.7.0
SELECT * FROM SYSIBMADM.ENV_INST_INFO;
PostgreSQL
PostgreSQL 14.3 (Debian 14.3-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
SELECT VERSION();
CUBRID
11.2.0.0658
SELECT VERSION();

NULL

โ€ข
NULL์˜ ์ถ”์ƒ์ ์ธ ์˜๋ฏธ
โ—ฆ
๋ฏธ์ง€์˜ ๊ฐ’
โ—ฆ
์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’
โ—ฆ
์ •ํ•ด์ง€์ง€ ์•Š์€ ๊ฐ’
โ€ข
NULL โ‡’ ์Šคํ์…œ ๋งˆ์ปค

NULL ์ €์žฅ

RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
'NULL'
string
string
string
string
string
string
string
string
string
' '
string
string
string
string
string
string
string
string
string
''
NULL
NULL
string
string
string
string
string
string
string
โ€ข
'' โ‡’ empty ๊ฐ’์— NULL ๋˜๋Š” string์œผ๋กœ RDBMS ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ
์ด๊ธฐ์ข… RDBMS๊ฐ„์— ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—… ์ˆ˜ํ–‰ ์‹œ ์ฃผ์˜ ORACLE (NULL) โ‡’ PostgreSQL(NULL) : ๋ฌธ์ œ ์—†์Œ PostgreSQL('') โ‡’ ORACLE(NULL) : '' ๊ฐ’์ด NULL๋กœ ์น˜ํ™˜ ๋˜์–ด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ // '' ๊ฐ’์„ ์ž…๋ ฅ ์‹œ ORACLE NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์— ์˜ํ•ด ์ž…๋ ฅ ์‹คํŒจ ํ•  ์ˆ˜ ์žˆ์Œ (์‚ฌ์ „ ํ˜‘์˜ ํ•„์š”)
NULL ์ €์žฅ SQL

NULL ํฌ๊ธฐ

โ€ข
์ •ํ•ด์ง€์ง€ ์•Š์€ ๊ฐ’์ด๋ผ๊ณ  ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ •ํ•ด์ง€์ง€ ์•Š์€ ๊ฐ’์ด๋ผ๊ณ  ๋งˆํ‚น ์ •๋„๋Š” ํ•ด์ฃผ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ช… NULL๋„ ์ •ํ•ด์ง„ ํฌ๊ธฐ๊ฐ€ ์žˆ์Œ

TIBERO

ORACLE

TIBERO | ORACLE

MySQL / MariaDB

PostgreSQL

MS SQL Server

CUBRID

IBM Db2

RDBMS๋ณ„ NULL์ด HEAP์— ์ €์žฅ๋˜๋Š” ์‹ค์ œ ํฌ๊ธฐ
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
CUBRID
NULL ํฌ๊ธฐ (byte)
0
0 ๋˜๋Š” 1
0
0
0
0
-
0 ๋˜๋Š” ์„ ์–ธ๋œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋”ฐ๋ฆ„

NULL ์ฒ˜๋ฆฌ ๋ฐฉ์‹

SELECT NULL

SELECT ์ ˆ NULL ์—ฐ์‚ฐ
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
1 + NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
1 - NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
1 * NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
1 / NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
SELECT ์ ˆ NULL ๋ฌธ์ž ๊ฒฐํ•ฉ
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
'A'||NULL||'Cโ€™
AC
AC
NULL (์—ฐ์‚ฐ)
NULL (์—ฐ์‚ฐ)
-
NULL
NULL
NULL
NULL
'A'+NULL+'Cโ€™
-
NULL (์—ฐ์‚ฐ)
NULL (์—ฐ์‚ฐ)
NULL (์—ฐ์‚ฐ)
NULL
-
-
NULL (์—ฐ์‚ฐ)
NULL
CONCAT('A',NULL,'C')
-
-
NULL
NULL
AC
AC
-
-
NULL
CONCAT('A',NULL)
A
A
NULL
NULL
A
A
NULL
-
NULL
โ€ข
NULL (์—ฐ์‚ฐ) : ๋ฌธ์ž ๊ฒฐํ•ฉ์ด ์•„๋‹Œ ๋ฌธ์ž ์—ฐ์‚ฐ
โ€ข
- : ๋ฏธ์ง€์›
SELECT ์ ˆ NULL ๋‚ ์งœ์‹œ๊ฐ„ ์—ฐ์‚ฐ
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
๋‚ ์งœ์‹œ๊ฐ„ํ•จ์ˆ˜ + NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
SELECT ์ ˆ NULL ๋ถ€์šธ ๋น„๊ต
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
NULL or TRUE
-
-
TRUE (1)
TRUE (1)
-
TRUE
TRUE
TRUE (1)
-
NULL or FALSE
-
-
NULL
NULL
-
NULL
NULL
NULL
-
โ€ข
TRUE : TRUE ๋ฐ˜ํ™˜
โ€ข
TRUE (1) : 1 ๋ฐ˜ํ™˜
โ€ข
- : ๋ฏธ์ง€์›
SELECT ์ ˆ NULL์ฒ˜๋ฆฌ SQL

์ง‘๊ณ„ ํ•จ์ˆ˜

โ€ข
ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด NULL๊ณผ์˜ ์—ฐ์‚ฐ/ ๋น„๊ต๋Š” NULL์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ฑฐ๋‚˜ NULL์„ ๋ฌด์‹œํ•ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.
โ€ข
์ง‘๊ณ„ ๊ด€๋ จ ํ•จ์ˆ˜์—์„œ๋Š” NULL์ด ํฌํ•จ๋œ ๋กœ์šฐ๋กœ ์ธํ•œ ์–ด๋–ค ์˜ํ–ฅ์ด ์žˆ์„๊นŒ์š”
ํ…Œ์ŠคํŠธ ํ…Œ์ด๋ธ”
x
xx
1
NULL
2
NULL
3
NULL
4
40
5
50
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
COUNT(*)
5
5
5
5
5
5
5
5
5
COUNT(x)
5
5
5
5
5
5
5
5
5
COUNT(xx)
2
2
2
2
2
2
2
2
2
SUM(x)
15
15
15
15
15
15
15
15
15
SUM(xx)
90
90
90
90
90
90
90
90
90
SUM(x+xx)
99
99
99
99
99
99
99
99
99
AVG(x)
3
3
3
3
3
3
3
3
3
AVG(xx)
45
45
45
45
45
45
45
45
45
AVG(x+xx)
49.5
49.5
49.5
49.5
49
49.5
49
49.5
49.5
โ€ข
์ง‘๊ณ„ ํ•จ์ˆ˜์—์„œ๋Š” NULL ๋กœ์šฐ๋Š” ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์ง‘๊ณ„๊ฐ€ ์ˆ˜ํ–‰ ๋ฉ๋‹ˆ๋‹ค.
โ—ฆ
COUNT(xx), SUM(xx), AVG(xx)
โ€ข
์ง‘๊ณ„ ํ•จ์ˆ˜์—์„œ ๋‘๊ฐœ ์ด์ƒ์˜ COLUMN์„ ๊ฐ™์ดํ•  ๊ฒฝ์šฐ NULL ๋กœ์šฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์€ ์ „๋ถ€ ๋ฌด์‹œ ๋ฉ๋‹ˆ๋‹ค.
โ—ฆ
x ์ปฌ๋Ÿผ๊ณผ xx์ปฌ๋Ÿผ์˜ NULL ๊ฐ’์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ง‘๊ณ„ ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ ๋  ๊ฒฝ์šฐ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ถœ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ—ฆ
SUM(x+xx), AVG(x+xx)
โ€ข
๋น„๊ต ๋Œ€์ƒ RDBMS ๋ชจ๋‘ ๋™์ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์†Œ์ˆ˜์  ์ฒ˜๋ฆฌ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
โ—ฆ
์†Œ์ˆ˜์ ์ž๋ฆฌ๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ.
โ–ช
MS SQL, IBM Db2 : ์ •์ˆ˜๋ฅผ ์—ฐ์‚ฐํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜์ ์ด ๋‚˜์˜ค๋ฉด ๋ฒ„๋ฆฌ๋Š” ํŠน์„ฑ
์ฃผ์˜ ์‚ฌํ•ญ
โ€ข
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ PROCEDURE๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ ํ•  ๋•Œ ์ฃผ์˜
์™ธ๋ถ€ ํ•จ์ˆ˜/ํ”„๋กœ์‹œ์ € ์ž‘์„ฑ ์‹œ ์ฃผ์˜ SQL
์ง‘๊ณ„ ํ•จ์ˆ˜ NULL์ฒ˜๋ฆฌ SQL

NULL ์ •๋ ฌ

์ˆซ์žํ˜•
x
xx
1
NULL
2
NULL
3
NULL
4
40
5
50
6
NULL
๋ฌธ์žํ˜•
x
xx
1
NULL
2
NULL
3
NULL
4
A
5
Z
6
NULL
๋‚ ์งœํ˜•
x
xx
1
NULL
2
NULL
3
NULL
4
2022-01-01 00:00:00.000
5
2022-12-31 00:00:00.000
6
NULL
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
SQLite
CUBRID
NUMBER ORDER BY xx ASC;
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
STRING ORDER BY xx ASC;
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
DATETIME ORDER BY xx ASC;
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
๊ฐ€์žฅ ํฐ ๊ฐ’
โ€ข
ORDER BY ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ถ„๋ช… NULL์˜ ํฌ๊ณ  ์ž‘์Œ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
MIN/MAX ์ง‘๊ณ„ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ์—์„œ๋Š” NULL์„ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ
RDBMS
ORACLE, TIBERO, MySQL, MariaDB, MS SQL Server, PostgreSQL, IBM Db2, SQLite, CUBRID
NUMBER MIN(x),MIN(xx)
1 40
NUMBER MAX(x),MAX(xx)
6 50
STRING MIN(x),MIN(xx)
1 A
STRING MAX(x),MAX(xx)
6 Z
DATETIME MIN(x),MIN(xx)
1 2022-01-01-00.00.00.000000
DATETIME MAX(x),MAX(xx)
6 2022-12-31-00.00.00.000000
NULL SORT SQL

NULL INDEX

INDEX์™€ NULL
1๋ฒˆ SQL : SELECT * FROM tbl WHERE xx IS NOT NULL; 2๋ฒˆ SQL : SELECT * FROM tbl WHERE xx IS NULL; CREATE INDEX idx_tbl_x ON tbl(xx);
SQL
๋ณต์‚ฌ
โ€ข
INDEX์— NULL ํฌํ•จ
โ—ฆ
1๋ฒˆ SQL : NULL์ด ์•„๋‹Œ ๊ฒƒ๋งŒ INDEX FFS SCAN ์ˆ˜ํ–‰
โ—ฆ
2๋ฒˆ SQL : NULL์ธ ๊ฒƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด INDEX RANGE SCAN ์ˆ˜ํ–‰
โ€ข
INDEX์— NULL ๋ฏธํฌํ•จ
โ—ฆ
1๋ฒˆ SQL : NULL์ด ์•„๋‹Œ ๊ฒƒ๋งŒ INDEX FFS SCAN ์ˆ˜ํ–‰
โ—ฆ
2๋ฒˆ SQL : NULL์ธ ๊ฒƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด TABLE ACCESS (FULL) ์ˆ˜ํ–‰
๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜(NOT NULL: 60,000 / NULL: 4,000)
TOTAL_CNT
NOTNULL_CNT
NULL_CNT
64,000
60,000
4,000
๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„
X
XX
COUNT(*)
1
NULL
1,000
2
20
10,000
3
NULL
1,000
4
40
10,000
5
NULL
1,000
6
60
10,000
7
70
10,000
8
NULL
1,000
9
90
10,000
10
100
10,000

TIBERO

ORACLE

MySQL / MariaDB

PostgreSQL

MS SQL Server

IBM Db2

CUBRID

RDBMS๋ณ„ INDEX์— NULL ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ
RDBMS
ORACLE
TIBERO
MySQL
MariaDB
MS SQL Server
PostgreSQL
IBM Db2
CUBRID
INDEX NULL ํฌํ•จ ์—ฌ๋ถ€ (๋‹จ์ผ)
X (๋‹จ์ผ)
X (๋‹จ์ผ)
O (๋‹จ์ผ,๋ณตํ•ฉ)
O (๋‹จ์ผ,๋ณตํ•ฉ)
O (๋‹จ์ผ,๋ณตํ•ฉ)
O (๋‹จ์ผ,๋ณตํ•ฉ)
O (๋‹จ์ผ,๋ณตํ•ฉ)
X (๋‹จ์ผ)
RDBMS
ORACLE
TIBERO
CUBRID
๋‹จ์ผ ์ปฌ๋Ÿผ
X
X
X
๋ณตํ•ฉ ์ปฌ๋Ÿผ ํŠน์ • ์ปฌ๋Ÿผ์˜ NOT NULL์ผ ๊ฒฝ์šฐ
O
O
X
๋ณตํ•ฉํ‚ค NULL ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ๊ฒ€์ฆ SQL
โ€ข
IS NULL
โ—ฆ
INDEX์— NULL ํฌํ•จ RDBMS
โ–ช
INDEX ์Šค์บ”์„ ํ†ตํ•ด NULL์˜ ๊ฒฐ๊ณผ ํ™•์ธ
โ—ฆ
INDEX์— NULL ๋ฏธํฌํ•จ RDBMS
โ–ช
ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค ํ™œ์šฉ : NVL(xx, โ€˜unkownโ€™) ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์„œ ํ™œ์šฉ
โ–ช
ORACLE, TIBERO์˜ ๊ฒฝ์šฐ ๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์— ํฌํ•จ ๋œ ์ปฌ๋Ÿผ์ด 1๊ฐœ ์ด์ƒ NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋ฉด ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์€ NULL์„ ํฌํ•จํ•œ๋‹ค.
โ€ข
([notnull column], xx)
โ–ช
ORACLE, TIBERO์˜ ๊ฒฝ์šฐ ๋ณตํ•ฉ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ์‹œ NOT NULL ์ œ์•ฝ ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด ์—†์„ ๊ฒฝ์šฐ NULL์„ ์ธ๋ฑ์Šค์— ํฌํ•จํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ
โ€ข
(xx,โ€™1โ€™)
โ€ข
IS NOT NULL
โ—ฆ
INDEX์— NULL ํฌํ•จ RDBMS
โ–ช
INDEX ์Šค์บ”์„ ํ†ตํ•ด NULL์ด ์•„๋‹Œ ๊ฒฐ๊ณผ ํ™•์ธ
โ—ฆ
INDEX์— NULL ๋ฏธํฌํ•จ RDBMS
โ–ช
ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ MIN ๊ฐ’์„ ๊ตฌํ•ด์„œ ํ™œ์šฉ
โ€ข
๊ณต๋ฐฑ์„ string์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” RDBMS์˜ ๊ฒฝ์šฐ
โ—ฆ
์ •์ˆ˜ ๋˜๋Š” ๋ฌธ์ž: WHERE xx >=โ€™โ€™; ํ™œ์šฉ
โ—ฆ
์Œ์ˆ˜ : WHERE xx > (select MIN(xx)-99 from tbl9_null limit1);
โ€ข
ORACLE, TIBERO๋Š” INDEX FFS ์ž๋™์œผ๋กœ ๋™์ž‘
โ–ช
ORACLE, TIBERO์˜ ๊ฒฝ์šฐ ๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์— ํฌํ•จ ๋œ ์ปฌ๋Ÿผ์ด 1๊ฐœ ์ด์ƒ NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋ฉด ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์€ NULL์„ ํฌํ•จํ•œ๋‹ค.
โ€ข
([notnull column], xx)
โ–ช
ORACLE, TIBERO์˜ ๊ฒฝ์šฐ ๋ณตํ•ฉ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ์‹œ NOT NULL ์ œ์•ฝ ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด ์—†์„ ๊ฒฝ์šฐ NULL์„ ์ธ๋ฑ์Šค์— ํฌํ•จํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ
โ€ข
(xx,โ€™1โ€™)

์ •๋ฆฌ

NULL ์ €์žฅ

โ€ข
'' (empty) ๊ฐ’์ด RDBMS(์ดํ•˜: DB) ๋งˆ๋‹ค NULL ๋˜๋Š” ๋ฌธ์ž์—ด ์ทจ๊ธ‰์ด ๋‹ค๋ฅด๋‹ค.
โ€ข
๋ฌธ์ž์—ด ์ทจ๊ธ‰ DB์—์„œ NULL ์ฒ˜๋ฆฌ DB๋กœ ์ด๊ด€ ์‹œ ์ฃผ์˜ ํ•„์š” (๊ฒฐ๊ณผ ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉด ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜์ด ๋˜์–ด ์ด๊ด€ ์ž์ฒด ๊ฑด์ˆ˜์—์„œ ๋ฐฐ์ œ ๋  ์ˆ˜ ์žˆ๋‹ค.)

NULL ํฌ๊ธฐ

โ€ข
DB๋งˆ๋‹ค NULL ํฌ๊ธฐ 3๊ฐœ ํŒจํ„ด์ด ์žˆ๋‹ค.
โ—ฆ
NULL ๋ฌด์กฐ๊ฑด 0 byte
โ—ฆ
TIBERO์˜ ๊ฒฝ์šฐ ์—ฐ์† ๋œ NuLL์— ๋Œ€ํ•œ ํฌ๊ธฐ ๋ถ€์—ฌ
col1
col2
col3
BYTE
NULL
NULL
NULL
1 + 0 + 0
col1
col2
col3
BYTE
NULL
NULL
1
1 + 1 + type
col1
col2
col3
BYTE
NULL
1
NULL
1 + type +
TIBERO์˜ ๊ฒฝ์šฐ NULL ํ—ˆ์šฉ ์ปฌ๋Ÿผ์„ ์ตœ๋Œ€ํ•œ ๋’ค๋กœ ๋นผ๋Š”๊ฒŒ TABLE ํฌ๊ธฐ์—์„œ ํšจ์œจ์ ์ด๋‹ค.
โ—ฆ
CUBRID์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹น
INT โ‡’ 4 byte / datetime โ‡’ 8 byte / VARCHAR, CLOB โ‡’ 0 byte

NULL ์—ฐ์‚ฐ/๋‚ด๋ถ€ ํ•จ์ˆ˜/์™ธ๋ถ€ ํ•จ์ˆ˜,ํ”„๋กœ์‹œ์ €

โ€ข
NULL ์—ฐ์‚ฐ
โ—ฆ
NULL ๊ณผ ์—ฐ์‚ฐ๋˜๋Š” ๋ชจ๋“  ๊ฐ’์€ NULL๋กœ ์ฒ˜๋ฆฌ ๋œ๋‹ค.
โ€ข
๋‚ด๋ถ€ ํ•จ์ˆ˜
โ—ฆ
๋ณ€ํ™˜/์ง‘๊ณ„ ํ•จ์ˆ˜ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์ด ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜๋Š” NULL์„ ๋ฐฐ์ œํ•˜๊ณ  ์—ฐ์‚ฐํ•œ๋‹ค.
โ—ฆ
๋ฌธ์ž์—ด ์ ‘ํ•ฉ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ NULL์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ NULL์ฒ˜๋ฆฌ ํ•˜๊ฑฐ๋‚˜ NULL์„ ์ œ๊ฑฐํ•˜๊ณ  ์ ‘ํ•ฉ ํ•œ๋‹ค.
โ€ข
์™ธ๋ถ€ ํ•จ์ˆ˜, ํ”„๋กœ์‹œ์ €
โ—ฆ
ํ•จ์ˆ˜,ํ”„๋กœ์‹œ์ € ์ž‘์„ฑ ์‹œ NULL์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ์˜๋„์น˜ ์•Š๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ NULL๋กœ ์ถœ๋ ฅ ๋  ์ˆ˜ ์žˆ๋‹ค.

NULL ์ •๋ ฌ

โ€ข
DB ๋งˆ๋‹ค NULL์„ ์ •๋ ฌ ํ•˜๋Š” ๊ฐ’์€ ๊ฐ€์žฅ ํฐ ๊ฐ’์œผ๋กœ ์—ฌ๊ธฐ๊ฑฐ๋‚˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์œผ๋กœ ์—ฌ๊ฒจ์„œ ์ •๋ ฌํ•œ๋‹ค.
โ—ฆ
์ค‘๊ฐ„ ๊ฐ’์€ ์—†๋‹ค
โ—ฆ
NULL์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌํ•˜์—ฌ ๊ฐ’์„ ์–ป์œผ๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ ์˜๋„์น˜ ์•Š์€ NULL์ด ์ถœ๋ ฅ ๋  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
๋Œ€์†Œ ๋ฐ MIN/MAX ํ•จ์ˆ˜์—์„œ๋Š” NULL์„ ๋ฐฐ์ œ ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค.

NULL ์ธ๋ฑ์Šค

โ€ข
DB๋งˆ๋‹ค INDEX์— NULL์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ  ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
โ—ฆ
์‹ฑ๊ธ€/๋ณตํ•ฉ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ์‹œ NULL์„ ๋ชจ๋‘ ํฌํ•จ๊ฑฐ๋‚˜ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํฌํ•จํ•œ๋‹ค.
โ–ช
๋ณตํ•ฉ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ์‹œ ํŠน์ • ์ปฌ๋Ÿผ์ด NOT NULL์ธ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์€ NULL์„ ํฌํ•จํ•œ๋‹ค.
โ—ฆ
์‹ฑ๊ธ€/๋ณตํ•ฉ ์ธ๋ฑ์Šค ๋ชจ๋‘ NULL์„ ํฌํ•จ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ–ช
ํ•จ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ์ธ๋ฑ์‹ฑ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

END.