νμ (data type)
MySQLμμ ν μ΄λΈμ μ μν λλ νλλ³λ‘ μ μ₯ν μ μλ νμ κΉμ§ λͺ μν΄μΌ ν©λλ€.
MySQLμμ μ 곡νλ κΈ°λ³Έ νμ μ λ€μκ³Ό κ°μ΅λλ€.
1. μ«μ νμ
2. λ¬Έμμ΄ νμ
3. λ μ§μ μκ° νμ
1. μ«μ νμ (numeric types)
MySQLμ SQL νμ€μμ μ§μνλ λͺ¨λ μ«μ νμ μ μ 곡ν©λλ€.
MySQLμμ μ 곡νλ μ«μ νμ μ λ€μκ³Ό κ°μ΅λλ€.
1. μ μ νμ (integer types)
2. κ³ μ μμμ νμ (fixed-point types)
3. λΆλ μμμ νμ (floating-point types)
4. λΉνΈκ° νμ (bit-value type)
1-1. μ μ νμ (integer types)
MySQLμ SQL νμ€ μ μ νμ μΈ INTEGER(λλ INT)μ SMALLINTλ₯Ό μ 곡ν©λλ€.
λν, νμ€ μ μ νμ μ λ²μλ₯Ό λμ± νμ₯ν TINYINT, MEDIUMINT, BIGINTκΉμ§ μ 곡νκ³ μμ΅λλ€.
κ° μ μ νμ μ λ°λΌ μꡬλλ μ μ₯ 곡κ°κ³Ό ννν μ μλ μ΅λκ°κ³Ό μ΅μκ°κΉμ§ λ¬λΌμ§λλ€.
λν, μ μ νμ μ μμκΉμ§ ννν μ μλ SIGNED νμ κ³Ό μμλ§μ ννν μ μλ UNSIGNED νμ μΌλ‘λ ꡬλΆλ©λλ€.
MySQL μ μ νμ μ λ°λ₯Έ ννν μ μλ μ΅λκ°, μ΅μκ°κ³Ό μꡬλλ μ μ₯ 곡κ°μ ν¬κΈ°λ λ€μκ³Ό κ°μ΅λλ€.
νμ | μ μ₯ κ³΅κ° | μ΅λκ° | μ΅μκ° | ||
Signed | Unsigned | Signed | Unsigned | ||
TINYINT | 1λ°μ΄νΈ | -128 | 0 | 127 | 255 |
SMALLINT | 2λ°μ΄νΈ | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3λ°μ΄νΈ | -8388608 | 0 | 8388607 | 16777215 |
INT | 4λ°μ΄νΈ | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8λ°μ΄νΈ | -9223372036854775808 | 0 | 9223372036854775807 | 18446744073709551615 |
λ€μ μμ λ ALTER TABLE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ 4λ°μ΄νΈμ μ μλ₯Ό μ μ₯ν μ μλ Price νλλ₯Ό μΆκ°ν©λλ€. μ΄λ κ² Price νλλ₯Ό μΆκ°ν νμ DESCRIBE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ μμΈ μ 보λ₯Ό νμΈνλ©΄, λ€μ μ€ν κ²°κ³Όμ κ°μ΄ λνλ©λλ€.
ALTER TABLE Reservation
ADD Price INT;
μ€ν κ²°κ³Ό
κ·Έλ¦¬κ³ μ INSERT INTO λ¬Έμ μ¬μ©νμ¬ Price νλ κ°μΌλ‘ 1000μ κ°μ§λ μλ‘μ΄ λ μ½λλ₯Ό μΆκ°νκ³ μμ΅λλ€.
λ§μ§λ§μΌλ‘ SELECT λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ λͺ¨λ λ μ½λλ₯Ό μ ννμ¬ νμΈν©λλ€.
1-2. κ³ μ μμμ νμ (fixed-point types)
MySQLμμ κ³ μ μμμ νμ μΈ DECIMALμ μ€μμ κ°μ μ ννκ² νννκΈ° μν΄ μ¬μ©λ©λλ€.
DECIMALμμ μ¬μ©νλ κ³ μ μμμ λ°©μμ μ€μλ₯Ό ννν λ μμλΆμ μλ¦Ώμλ₯Ό κ³ μ νμ¬ ννν©λλ€.
μ¦, μμλΆμ μλ¦Ώμλ₯Ό 미리 μ ν΄ λκ³ , κ³ μ λ μλ¦Ώμλ‘λ§ μμ λΆλΆμ νννλ λ°©μμ λλ€.
MySQLμμ DECIMAL νμ μ NUMERICμ ꡬννμ¬ λ§λ€μ΄μ‘μ΅λλ€.
λ°λΌμ λλΆλΆμ κ²½μ° DECIMAL λμ NUMERICμ μ¬μ©ν΄λ λκ°μ΄ λμν©λλ€.
DECIMAL(M,D)
# NUMERIC(M,D)
Mμ μμ λΆλΆμ ν¬ν¨ν μ€μμ μ΄ μλ¦Ώμλ₯Ό λνλ΄λ©°, μ΅λκ°μ 65μ λλ€.
Dλ μμ λΆλΆμ μλ¦Ώμλ₯Ό λνλ΄λ©°, Dκ° 0μ΄λ©΄ μμ λΆλΆμ κ°μ§μ§ μμ΅λλ€.
λ€μ μμ λ ALTER TABLE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ RoomNum νλ νμ μ κ³ μ μμμ νμ μΌλ‘ λ³κ²½ν©λλ€.
μ΄λ κ² RoomNum νλμ νμ μ λ³κ²½ν νμ DESCRIBE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ μμΈ μ 보λ₯Ό νμΈνλ©΄, λ€μμ€ν κ²°κ³Όμ κ°μ΄ λνλ©λλ€.
ALTER TABLE Reservation
MODIFY COLUMN RoomNum DECIMAL(7,2);
μ€ν κ²°κ³Ό
μμ μμ μμ RoomNum νλλ -99999.99λΆν° 99999.99κΉμ§μ μ€μλ₯Ό μ μ₯ν μ μλλ‘ λ³κ²½λ©λλ€.
κ·Έλ¦¬κ³ μ INSERT INTO λ¬Έμ μ¬μ©νμ¬ RoomNum νλ κ°μΌλ‘ 99999.99λ₯Ό κ°μ§λ μλ‘μ΄ λ μ½λλ₯Ό μΆκ°ν©λλ€.
λ§μ§λ§μΌλ‘ SELECT λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ λͺ¨λ λ μ½λλ₯Ό μ ννμ¬ νμΈν©λλ€.
1-3. λΆλ μμμ νμ (floating-point types)
MySQLμμ λΆλ μμμ νμ μΈ FLOATκ³Ό DOUBLEμ μ€μμ κ°μ λλ΅μ μΌλ‘ νννκΈ° μν΄ μ¬μ©λ©λλ€.
MySQLμ IEEE 754 νμ€μ λ°λΌ FLOATλ 4λ°μ΄νΈλ₯Ό μ¬μ©νλ©°, DOUBLEμ 8λ°μ΄νΈλ₯Ό μ¬μ©ν©λλ€.
SQL νμ€μμ FLOATλ μ λ°λμ νμν μ΅μνμ λΉνΈ μλ₯Ό λͺ μν μ μμ΅λλ€.
FLOAT(P)
Pκ° 0λΆν° 24κΉμ§μ κ°μ κ°μ§ λλ FLOAT κ°μΌλ‘ μ·¨κΈλλ©°, 25λΆν° 53κΉμ§μ κ°μ κ°μ§ λλ DOUBLE κ°μΌλ‘ μ·¨κΈλ©λλ€.
λν, MySQLμ FLOATκ³Ό DOUBLEμ κ³ μ μμμ νμ κ³Ό κ°μ΄ μ¬μ©ν μ μλ λΉνμ€ λ¬Έλ²λ μ§μν©λλ€.
FLOAT(M,D)
DOUBLE(M,D)
Mμ μμ λΆλΆμ ν¬ν¨ν μ€μμ μ΄ μλ¦Ώμλ₯Ό λνλ΄λ©°, Dλ μμ λΆλΆμ μλ¦Ώμλ₯Ό λνλ λλ€.
λ€μ μμ λ ALTER TABLE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ RoomNum νλ νμ μ λΆλ μμμ νμ μΌλ‘ λ³κ²½ν©λλ€. μ΄λ κ² RoomNum νλμ νμ μ λ³κ²½ν νμ DESCRIBE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ μμΈ μ 보λ₯Ό νμΈνλ©΄, λ€μ μ€ν κ²°κ³Όμ κ°μ΄ λνλ©λλ€.
ALTER TABLE Reservation
MODIFY COLUMN RoomNum FLOAT(7,2);
μ€ν κ²°κ³Ό
μμ μμ μμ RoomNum νλλ μ΄μ -99999.99λΆν° 99999.99κΉμ§μ μ€μλ₯Ό μ μ₯ν μ μλλ‘ λ³κ²½λ©λλ€.
κ·Έλ¦¬κ³ μ INSERT INTO λ¬Έμ μ¬μ©νμ¬ RoomNum νλ κ°μΌλ‘ 99999.99λ₯Ό κ°μ§λ λ μ½λλ₯Ό μΆκ°ν©λλ€.
λ§μ§λ§μΌλ‘ SELECT λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ λͺ¨λ λ μ½λλ₯Ό μ ννμ¬ νμΈν©λλ€.
μ΄μ²λΌ RoomNum νλ κ°μΌλ‘ 99999.009λ₯Ό μ λ ₯νλ©΄, μ€μμ μ΄ μλ¦Ώμκ° λͺ μν 7μ리λ₯Ό μ΄κ³Όν©λλ€.
λ°λΌμ μ΄ κ°μ 7μλ¦¬λ‘ λ§μΆ°μ§κΈ° μν΄ λ°μ¬λ¦Όλμ΄ 99999.01λ‘ μλ λ³νλμ΄ μ μ₯λ©λλ€.
1-4. λΉνΈκ° νμ (bit-value type)
MySQLμμ λΉνΈκ° νμ μΈ BITλ λΉνΈμ κ°μ μ μ₯ν©λλ€.
μ¦, 0κ³Ό 1λ‘ κ΅¬μ±λλ λ°μ΄λ리(binary) κ°μ μ μ₯ν μ μμ΅λλ€.
BIT(M)
Mμ λ²μλ 1λΆν° 64κΉμ§ μ€μ ν μ μμΌλ©°, λͺ μν M λΉνΈμ κ°μ μ μ₯ν μ μμ΅λλ€.
λ§μ½ λͺ μν M λΉνΈλ³΄λ€ 짧μ κΈΈμ΄μ λΉνΈ κ°μ μ λ ₯νλ©΄, μ λ ₯ν κ° μμ 0μ μΆκ°νμ¬ μλμΌλ‘ κΈΈμ΄λ₯Ό λ§μΆ₯λλ€.
λ€μ μμ λ ALTER TABLE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ BIT(7) νμ μ μ μ₯ν μ μλ Code νλλ₯Ό μΆκ°ν©λλ€.
μ΄λ κ² Code νλλ₯Ό μΆκ°ν νμ DESCRIBE λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμ μμΈ μ 보λ₯Ό νμΈνλ©΄, λ€μ μ€ν κ²°κ³Όμ κ°μ΄ λνλ©λλ€.
ALTER TABLE Reservation
ADD Code BIT(7);
μ€ν κ²°κ³Ό
κ·Έλ¦¬κ³ μ INSERT INTO λ¬Έμ μ¬μ©νμ¬ Code νλμ κ°μΌλ‘ κ°κ° b'100'κ³Ό b'100001'μ κ°μ§λ μλ‘μ΄ λ μ½λλ₯Ό μΆκ°ν©λλ€.
μ΄λ Code νλμ κ°μΈ b'100'κ³Ό b'100001'μ κ°κ° b'0000100'κ³Ό b'0100001'λ‘ μλ λ³νλμ΄ μ μ₯λ©λλ€.
λ§μ§λ§μΌλ‘ SELECT λ¬Έμ μ¬μ©νμ¬ Reservation ν μ΄λΈμμ Code νλμ κ°μ΄ NULLμ΄ μλ λͺ¨λ λ μ½λλ₯Ό μ νν ν, ν΄λΉ λ μ½λμ Code νλ κ°μ νμΈν©λλ€.
μ΄μ§μ b'100'μ μμ§μ 4λ₯Ό λνλ΄λ©°, μ΄μ§μ b'100001'μ μμ§μ 33μ λνλ
λλ€.
MySQLμμλ μ΄λ¬ν λ°μ΄λ리 κ°μ μΆλ ₯νκΈ° μν΄ BIN()μ κ°μ λ³ν ν¨μλ₯Ό μ 곡νκ³ μμ΅λλ€.