2011-07-07 61 views
8

tôi đã đọc rằng kiểu bool trong mysql là một bí danh của tinyint (1), do đó tôi nên sử dụng tinyint BOOL và tinyint (1) ... chưa được ký?

câu hỏi

của tôi là như sau: Do i cần phải khai báo nó unsigned, tôi có nghĩa là nó cần thiết ?

purchased tinyint(1) unsigned not null DEFAULT 0, 

or 

purchased tinyint(1) not null DEFAULT 0, 
+4

Bạn có gặp vấn đề gì khi sử dụng BOOL không? –

+2

_ "do đó tôi nên sử dụng tinyint" _ - Tại sao điều đó xảy ra? BOOL là hoàn toàn tốt đẹp và (theo ý kiến ​​của tôi) rõ ràng hơn về ý định của bạn. 'TINYINT (1)' có thể có nghĩa là "bất cứ thứ gì từ 0 đến 9"; 'BOOL' có nghĩa là" 0 hoặc 1 "(mặc dù tôi cho rằng bạn có thể xuyên tạc ý định của mình :-)). –

Trả lời

10

Không cần thiết; để nó ký. Trên thực tế, dù sao cũng không quan trọng - 0 và 1 nằm trong phạm vi giá trị hợp lệ cho TINYINT bất kể tính hợp lệ của nó.

Nhưng, nghiêm túc, chỉ cần khai báo nó là BOOL, nó làm cho nó rất rõ ràng rằng đó là một giá trị đúng hoặc sai.

+1

tôi không biết tôi có thể sử dụng bool trong mysql, mặc dù bool đó không được hỗ trợ trong mysql .... không bao giờ trễ để học ... – Marco

+3

'BOOL' là một từ đồng nghĩa cho' TINYINT (1) '. – MichaelRushton

+0

Một số phiên bản có thể không hỗ trợ BOOL, cũng tốt để sử dụng tinyint vì nếu bạn cần sử dụng truy vấn trong một SQL khác thì chuyển đổi dễ dàng hơn! – JDuarteDJ

3

Không cần phải khai báo nó chưa ký, đặc biệt nếu bạn đang sử dụng nó để lưu trữ giá trị boolean.

Các vấn đề liên quan