[mysql] MySql : Tinyint (2) vs tinyint (1)-차이점은 무엇입니까?

나는 mysql에서 부울을로 알고 있었다 tinyint (1).

오늘 같은 정의 정수있는 테이블을 참조 tinyint(2)하고, 또한 다른 사람이 좋아 int(4), int(6)

integer 및 tinyint 유형의 필드에서 크기는 무엇을 의미합니까?



답변

디스플레이 너비를 의미 합니다

tinyint (1)를 사용하든 tinyint (2)를 사용하든 차이가 없습니다.

나는 항상 tinyint (1)와 int (11)를 사용하고 여러 mysql 클라이언트 (navicat, sequel pro)를 사용했습니다.

전혀 의미가 없습니다! 테스트를 실행했는데 위의 모든 클라이언트 또는 명령 줄 클라이언트는이를 무시하는 것 같습니다.

그러나 옵션 을 사용하는 경우 표시 너비 가 가장 중요합니다. ZEROFILL예를 들어 테이블에 다음 2 개의 열이 있습니다.

TINYINT (2) ZEROFILL

B tinyint (4) 제로 필

두 열은 1의 값을 가지며, 열을위한 출력 A는010001B , 스크린에서 볼 때 아래 🙂

표시 폭이 0으로 채워짐


답변

(m)열 디스플레이 폭을 나타내고; MySQL 클라이언트와 같은 애플리케이션은 쿼리 결과를 표시 할 때이를 사용합니다.

예를 들면 다음과 같습니다.

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

여기서 a, bc사용 TINYINT(1), TINYINT(2)TINYINT(3)각각. 보시다시피, 디스플레이 너비를 사용하여 왼쪽의 값을 채 웁니다.

특정 유형에 대해 허용되는 값의 범위에 영향을 미치지 않습니다 (예 : TINYINT(1)여전히 accepts) [-128 .. 127].


답변

mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)


답변

INT, TINYINT 정보 … 이들은 다른 데이터 형식이며 INT는 4 바이트 숫자이고 TINYINT는 1 바이트 숫자입니다. 더 많은 정보는 여기 에서-INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .

TINYINT 데이터 형식의 구문은 TINYINT (M)입니다. 여기서 M은 최대 디스플레이 너비를 나타냅니다 (MySQL 클라이언트가 지원하는 경우에만 사용).

숫자 유형 속성 .


답변