Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Làm Primary Key Auto Increment trong MySQL?

Cú pháp chuẩn

CREATE TABLE ten_bang (
    ten_cot INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (ten_cot)
);

Ví dụ với ZEROFILL (điền số 0 đầu)

mysql> CREATE TABLE DemoTable (
    UserId INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(UserId)
);

Chèn dữ liệu (không chỉ định UserId)

mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();

Kết quả

+--------+
| UserId |
+--------+
| 000001 |
| 000002 |
| 000003 |
| 000004 |
+--------+

Giải thích các từ khóa

Từ khóaÝ nghĩa
INT(6)Kiểu int, hiển thị 6 chữ số (chỉ ảnh hưởng hiển thị với ZEROFILL)
ZEROFILLTự động điền số 0 ở đầu (ngầm hiểu UNSIGNED)
NOT NULLBắt buộc có giá trị
AUTO_INCREMENTTự động tăng giá trị
PRIMARY KEYKhóa chính (duy nhất, not null, index)

Thêm AUTO_INCREMENT vào bảng đã có

ALTER TABLE DemoTable 
MODIFY UserId INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (UserId);

Đặt giá trị bắt đầu AUTO_INCREMENT

-- Khi tạo bảng
CREATE TABLE DemoTable (
    Id INT AUTO_INCREMENT PRIMARY KEY
) AUTO_INCREMENT = 1000;

-- Hoặc sau khi tạo
ALTER TABLE DemoTable AUTO_INCREMENT = 1000;

Lưu ý quan trọng

  • Chỉ có một cột AUTO_INCREMENT mỗi bảng
  • Cột AUTO_INCREMENT phải là khóa (PRIMARY KEY hoặc UNIQUE)
  • Khi xóa dòng cuối, giá trị AUTO_INCREMENT không tự giảm (trừ TRUNCATE TABLE)
  • ZEROFILL đã deprecated từ MySQL 8.0.17, sẽ xóa trong tương lai

Thực hành tốt

CREATE TABLE users (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -- BIGINT UNSIGNED: lên đến 18 tỷ tỷ, đủ lớn cho mọi ứng dụng
    -- Không dùng ZEROFILL (deprecated)
    -- Không dùng INT(6) - số trong ngoặc không giới hạn giá trị
);