Thêm mysql chưa được ký
Trong mấy năm làm việc với MySQL, có một thời gian dài tôi không để ý đến thuộc tính ZEROFILL và UNSIGNED của MySQL cho đến khi cần sử dụng ZEROFILL cho một ứng dụng nào đó Show
Những thuộc tính này là gì? . ZEROFILL dùng để điền số 0 vào một số nguyên sao cho tất cả các số trong cột có cùng số chữ số Với những gì họ đang có, unsigned có nghĩa là "không có dấu hiệu", tôi. e. không có dấu trừ (-) nên chỉ lưu số dương. Trong khi điền vào số không được sử dụng cụ thể hơn để điền vào các số không ở bên trái trong trường hợp này Tại sao nên sử dụng UNSIGNEDNhiều nhà phát triển không quan tâm đến việc điều chỉnh các thuộc tính như thế này vì ngay cả khi họ sai, hầu hết thời gian họ không phá vỡ ứng dụng Nhưng dù sao đi nữa, luôn có cách phù hợp để thực hiện và trong trường hợp này, cách tối ưu nhất sẽ mang lại cho chúng tôi tính nhất quán hơn trong cơ sở dữ liệu của mình và tiết kiệm dung lượng cho khối lượng dữ liệu lớn hơn Luôn sử dụng UNSIGNED để biểu thị toàn bộ giá trị sẽ không bao giờ âm. Ví dụ: id AUTO_INCREMENT bắt đầu từ 1 sẽ không bao giờ âm Ưu điểm chính của việc sử dụng thuộc tính này là MySQL sẽ không phân bổ không gian không cần thiết cho các số âm từ -2147483648 đến 0 và sẽ nhân đôi không gian cho các số dương từ 0 đến 4294967295. Nguồn. mysql Tại sao nên sử dụng ZEROFILLVai trò của thuộc tính ZEROFILL chỉ là để cho MySQL biết thông tin sẽ được hiển thị như thế nào. Nó không ảnh hưởng đến cách dữ liệu được lưu trữ Nếu bạn cần thực hiện một Do đó, chỉ vì mục đích thẩm mỹ, bạn có thể sử dụng thuộc tính này để luôn có sự nhất quán về các chữ số của số nguyên trong ứng dụng của mình. Theo tôi, không có gì không thể giải quyết được ở giao diện người dùng, nhưng nếu bạn muốn giữ chế độ xem của các cột có dữ liệu ở định dạng 00010, 00011, 00012, v.v. nó hợp lệ để sử dụng phương pháp này Số không với ZEROFILLĐể chỉ định bạn muốn hiển thị bao nhiêu số 0 ở đầu, bạn cần chỉ định kích thước cột khi tạo hoặc thay đổi bảng, chẳng hạn. INT(5). Xem các đoạn tiếp theo để biết cách tạo hoặc thay đổi bảng Nếu là số lớn hơn 5 thì số đó không bị cắt bỏ mà hiển thị bình thường từ 6 chữ số trở lên. Và nếu nó nhỏ hơn, nó sẽ chứa đầy số không Hành vi này của INT(5) chỉ nhằm mục đích xem vì một số nguyên luôn có cùng kích thước, nhưng tôi hiểu rằng nó hoàn toàn khác với VARCHAR(5), trong đó chuỗi bị cắt và tôi đồng ý rằng điều này hơi khó hiểu Sửa đổi một bảng hiện cóĐể thay đổi thuộc tính UNSIGNED hoặc ZEROFILL trong bảng bạn đã tạo, hãy sử dụng cú pháp ALTER TABLE
CHƯA KÝVí dụ: lệnh bên dưới sẽ thay đổi số bảng và cột thành UNSIGNED. Giữ dữ liệu nếu cột đã có kiểu INT Cảnh báo. Bạn cũng phải sửa đổi DEFAULT, NOT_NULL và AUTO_INCREMENT nếu có. Nếu bạn không chỉ định các thuộc tính này, chúng sẽ được sửa đổi thành mặc định của MySQL. Cân nhắc kiểm tra bằng bảng kiểm tra trước khi thay đổi dữ liệu quan trọng cảnh báo 2. Mọi số âm được lưu trữ trong cột này sẽ được chuyển đổi thành "0", vì vậy hãy thận trọng khi sử dụng
ZEROFILLNhư đã nêu ở trên, khi một cột có ZEROFILL, nó sẽ tự động được chọn UNSIGNED Lưu ý rằng sự khác biệt duy nhất trong ví dụ để thay đổi thành không dấu là tôi đã sử dụng kích thước/chiều dài trong INT, với chiều rộng 5 chữ số. Điều này không có nghĩa là bạn sẽ có thể nhập các số có tối đa 5 chữ số hoặc bạn sẽ mất dữ liệu lớn hơn 99999, mà nó chỉ có nghĩa là MySQL sẽ luôn cố gắng điền các số 0 cho đến khi đủ 5 chữ số, e. g. 00123 Cảnh báo. Bạn cũng phải sửa đổi DEFAULT, NOT_NULL và AUTO_INCREMENT nếu có. Nếu bạn không chỉ định các thuộc tính này, chúng sẽ được sửa đổi thành mặc định của MySQL. Cân nhắc kiểm tra bằng bảng kiểm tra trước khi thay đổi dữ liệu quan trọng cảnh báo 2. Mọi số âm được lưu trữ trong cột này sẽ được chuyển đổi thành "0" do chuyển đổi không dấu tự động, vì vậy hãy thận trọng khi sử dụng số này
Tạo cột với ZEROFILL và UNSIGNEDVí dụ này chỉ mang tính chất tham khảo vì chúng ta cũng làm tương tự như trong ALTER TABLE Để tạo một bảng xác định các thuộc tính này dễ dàng hơn là sửa đổi một bảng hiện có vì bạn không phải lo lắng về việc mất dữ liệu (trong trường hợp số âm) Dưới đây là mã để tạo bảng bằng ZEROFILL và do đó UNSIGNED. Để thay đổi kích thước định dạng của các số không, hãy thay đổi kích thước hiển thị của số nguyên trong INT(5) Làm cách nào để đặt INT không dấu trong MySQL?Đầu tiên, hãy tạo một bảng MediumIntTable bằng câu lệnh CREATE. TẠO BẢNG MediumIntTable( ID mediumint AUTO_INCREMENT, value_1 mediumint, value_2 mediumint(6) UNSIGNED, PRIMARY KEY (ID) );
Làm cách nào để thêm id tăng tự động trong MySQL?Để thêm cột số nguyên AUTO_INCREMENT mới có tên c. ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (c) ; .
INT đã ký và chưa ký trong MySQL là gì?Phạm vi đã ký là -2147483648 đến 2147483647. Dải ô không dấu là từ 0 đến 4294967295 . Loại này là một từ đồng nghĩa với INT. Một số nguyên lớn.
Làm cách nào để thêm khóa ngoại vào bảng hiện có trong MySQL?Sau đây là cú pháp của câu lệnh ALTER TABLE để thêm khóa ngoại vào bảng hiện có. . THAY ĐỔI BẢNG tên_bảng THÊM [CONSTRAINT [ký hiệu]] KHÓA NGOẠI [tên_chỉ_số] (tên_cột,. ) THAM KHẢO tên_bảng (tên_cột,. ) BẬT XÓA tham chiếuTùy chọn TRÊN CẬP NHẬT tham chiếuTùy chọn |