Cách tự động tạo id duy nhất trong mysql?
Một phương pháp phổ biến và hữu ích là tạo một số duy nhất hoặc ID duy nhất trong một bảng để xác định từng hàng đơn lẻ. Cột như vậy được gọi là khóa thay thế của bảng vì bản chất của nó không liên quan đến nghiệp vụ nên có thể xem là giả tạo. Trong MySQL, có hai cách để tạo khóa như vậy. (1) ID gia tăng tự động; Show Phương pháp 1. sử dụng AUTO_INCREMENT AUTO_INCREMENT có thể được sử dụng khi tạo bảng hoặc khi thêm cột AUTO_INCREMENT mới vào bảng hiện có Lưu ý rằng PRIMARY KEY phải luôn được chỉ định cùng với AUTO_INCREMENT. Nếu không, bạn sẽ nhận được lỗi sau Mã lỗi. 1075. Định nghĩa bảng không chính xác; 1. 1 Sử dụng AUTO_INCREMENT khi tạo bảng Một số duy nhất được tạo tự động cho một bảng khi sử dụng hàm AUTO_INCREMENT trong câu lệnh CREATE TABLE. Nó hướng dẫn MySQL tự động tạo và tăng số nguyên khi bản ghi mới được chèn vào bảng. Giá trị ban đầu sẽ bắt đầu từ 1 và tăng thêm 1 với mỗi lần chèn, trừ khi có quy định khác Ví dụ mình tạo bảng exam_result như bên dưới. Cột ID được tăng tự động -- Create table CREATE TABLE exam_result ( ID int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20) NOT NULL, ClassName varchar(20) NOT NULL, StudentMark tinyint NOT NULL ); Bây giờ thêm một số dữ liệu vào bảng. Lưu ý rằng, chúng ta không cần chỉ định cột ID trong câu lệnh INSERT nếu bạn chỉ định các tên cột khác vì ID được duy trì tự động -- Insert data to the table insert into exam_result(StudentName,ClassName,StudentMark) values('Anne','Class A',92), ('Gary','Class A',85), ('Tom','Class A',85), ('John','Class A',76), ('Jerry','Class B',95), ('Nick','Class B',91), ('Joe','Class B',88), ('Ted','Class B',88), ('Bob','Class B',82); Hoặc, nếu bạn bỏ qua tất cả các tên cột trong câu lệnh INSERT, hãy sử dụng từ khóa NULL trong danh sách giá trị làm giá trị cho cột ID. Bằng cách này, ID sẽ được gán cho số thứ tự khả dụng tiếp theo insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82); Đã chèn 9 bản ghi 1. 2 Thêm cột AUTO_INCREMENT vào bảng hiện có Giả sử khi tạo bảng kết quả thi lần đầu, chúng ta không có cột ID -- Create the table without ID column CREATE TABLE exam_result ( StudentName varchar(20) NOT NULL, ClassName varchar(20) NOT NULL, StudentMark tinyint NOT NULL ); -- Adding sample data insert into exam_result values('Anne','Class A',92), ('Gary','Class A',85), ('Tom','Class A',85), ('John','Class A',76), ('Jerry','Class B',95), ('Nick','Class B',91), ('Joe','Class B',88), ('Ted','Class B',88), ('Bob','Class B',82); Bây giờ chúng tôi thực hiện truy vấn ALTER TABLE để thêm cột AUTO_INCREMENT ID -- Add the ID column alter table exam_result add column ID int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY; Lưu ý rằng khi thực hiện câu lệnh thay đổi bảng, cột ID sẽ tự động được điền các ID duy nhất cùng một lúc. Bây giờ hãy chạy select * from exam_result để xem cột ID đã được điền ID duy nhất chưa 9 hồ sơ trả lại Phương pháp 2. sử dụng hàm ROW_NUMBER Bạn cũng có thể sử dụng hàm ROW_NUMBER để tạo một cột ID duy nhất. Thông thường ROW_NUMBER được sử dụng để thêm các số duy nhất vào các bản ghi trong một nhóm, nhưng nếu bạn coi toàn bộ bảng là một nhóm, thì một số duy nhất có thể được thêm vào mỗi hàng trên toàn bộ bảng, tương tự như AUTO_INCREMENT thực hiện Ưu điểm của việc sử dụng ROW_NUMBER thay vì sử dụng AUTO_INCREMENT là các ID được tạo bởi ROW_NUMBER có thể có ý nghĩa kinh doanh trong đó. Đó là nó tạo ra các ID duy nhất dựa trên thứ hạng của các giá trị trong một cột khác. Nhưng nếu bạn không cần lợi thế như vậy, bạn có thể coi các ID duy nhất là nhân tạo hoặc thay thế Truy vấn bên dưới không sử dụng mệnh đề PARTITION BY coi tất cả các lớp là một nhóm theo nghĩa đen, do đó nó gán một số duy nhất và tăng dần cho mỗi học sinh dựa trên điểm của họ bất kể họ thuộc lớp nào Trong hướng dẫn này, chúng ta sẽ nghiên cứu chức năng MySQL insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);1. Bạn hẳn đã nghe nói về số nhận dạng hoặc số nhận dạng duy nhất. Các ứng dụng mở rộng từ số ghế thi của bạn đến số Thẻ Aadhar/Số SSN của bạn, v.v. Giả sử bạn có một bảng người trong MySQL và bạn được giao nhiệm vụ gán cho mỗi người trong số họ một mã định danh duy nhất. Có nhiều cách bạn có thể thực hiện việc này – sử dụng thủ công các số ngẫu nhiên, lưu ý rằng giá trị không lặp lại, v.v. Tuy nhiên, MySQL giúp chúng ta dễ dàng. Nó cung cấp cho chúng ta chức năng insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);2 Hàm insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);2 được sử dụng để trả về Mã định danh duy nhất toàn cầu (UUID) được tạo theo RFC 4122, “Không gian tên URN mã định danh duy nhất toàn cầu (UUID)” Một điểm quan trọng cần lưu ý về UUID là chúng được thiết kế sao cho chúng là duy nhất trên toàn cầu về không gian và thời gian. Hai UUID không bao giờ giống nhau ngay cả khi chức năng được chạy trên hai thiết bị khác nhau Giá trị UUID trong MySQL là một số 128 bit được biểu thị dưới dạng một chuỗi utf8 gồm năm số thập lục phân được phân tách bằng dấu '-'. Định dạng như sau - aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee Chúng ta hãy xem cú pháp và một vài ví dụ về chức năng này Cú pháp của MySQL UUID()
Ví dụ về MySQL UUID()Hãy để chúng tôi bắt đầu mọi thứ với một ví dụ cơ bản. Sử dụng câu lệnh 0 và hàm UUID(), chúng ta sẽ hiển thị một mã định danh duy nhất phổ quát
Và đầu ra là - Hiển thị hai UUID khác nhauBây giờ chúng ta hãy hiển thị hai UUID trong một truy vấn ________số 8Và đầu ra là - Như bạn có thể thấy, chúng tôi nhận được hai UUID khác nhau. Sự khác biệt là ở phần đầu tiên của UUID Làm việc với bảngXem xét bảng 'Người' bên dưới bảng ngườiHãy để chúng tôi tạo một cột có tên là UID lưu trữ một mã định danh duy nhất mà chúng tôi nhận được từ hàm insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);1 cho mỗi bản ghi. Chúng tôi sẽ sử dụng câu lệnh 2 và 3 cho việc này -- Insert data to the table insert into exam_result(StudentName,ClassName,StudentMark) values('Anne','Class A',92), ('Gary','Class A',85), ('Tom','Class A',85), ('John','Class A',76), ('Jerry','Class B',95), ('Nick','Class B',91), ('Joe','Class B',88), ('Ted','Class B',88), ('Bob','Class B',82);1 Chúng tôi tạo một UID cột của loại văn bản bằng cách sử dụng câu lệnh 2. Sau đó, chúng tôi sử dụng câu lệnh 3 để đặt giá trị UUID cho mỗi hàng và cuối cùng, chúng tôi sử dụng câu lệnh 0 để hiển thị bảng đã cập nhật. Đầu ra là - Bây giờ chúng ta hãy cập nhật giá trị UID cho bản ghi có ID là 2. Truy vấn là - -- Insert data to the table insert into exam_result(StudentName,ClassName,StudentMark) values('Anne','Class A',92), ('Gary','Class A',85), ('Tom','Class A',85), ('John','Class A',76), ('Jerry','Class B',95), ('Nick','Class B',91), ('Joe','Class B',88), ('Ted','Class B',88), ('Bob','Class B',82);5 Và đầu ra là - Như bạn có thể thấy, mỗi khi chúng ta chạy hàm insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);1, chúng ta sẽ nhận được một UUID khác Tùy chỉnh UUIDChúng tôi đã thấy các UUID khác nhau được trả về ở trên là các ký tự có thể đọc được. Tuy nhiên, bốn dấu gạch ngang trong UUID về cơ bản là không cần thiết. Chúng tôi có khả năng sửa đổi UUID mà không ảnh hưởng đến khía cạnh “độc nhất” của nó Đây là một cách mà chúng ta có thể làm cho UUID của mình nhỏ gọn hơn bằng cách sử dụng hàm 8. Chúng tôi sẽ cập nhật UUID của hàng với ID = 3. Truy vấn là - -- Insert data to the table insert into exam_result(StudentName,ClassName,StudentMark) values('Anne','Class A',92), ('Gary','Class A',85), ('Tom','Class A',85), ('John','Class A',76), ('Jerry','Class B',95), ('Nick','Class B',91), ('Joe','Class B',88), ('Ted','Class B',88), ('Bob','Class B',82);7 Và đầu ra là - Như bạn có thể thấy, chúng tôi đã làm cho UUID của mình nhỏ gọn hơn và tùy chỉnh nó mà không ảnh hưởng đến phần “độc nhất” của nó Có một cách khác để tùy chỉnh UUID của bạn mà không thay đổi bit "duy nhất" Tôi đã đề cập ở phần đầu rằng UUID là một số 128 bit được biểu thị dưới dạng một chuỗi utf8 gồm năm số thập lục phân Chúng ta có thể chuyển đổi nó sang các ký hiệu khác. Trong truy vấn bên dưới, chúng tôi chuyển đổi nó thành ký hiệu base64 bằng cách sử dụng hàm 9. Chúng tôi cũng sẽ tuân theo logic trước đó của hàm 8 và xóa bốn dấu gạch ngang. Truy vấn là - insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);0 Và đầu ra là - Phần kết luậnTạo số nhận dạng duy nhất hoặc UUID có một loạt các ứng dụng. Hàm insert into exam_result values(NULL,'Anne','Class A',92), (NULL,'Gary','Class A',85), (NULL,'Tom','Class A',85), (NULL,'John','Class A',76), (NULL,'Jerry','Class B',95), (NULL,'Nick','Class B',91), (NULL,'Joe','Class B',88), (NULL,'Ted','Class B',88), (NULL,'Bob','Class B',82);2 rất quan trọng và tôi khuyến khích bạn kiểm tra các tài liệu tham khảo bên dưới để biết thêm thông tin chi tiết Làm cách nào để tự động tạo id trong MySQL?MySQL có từ khóa AUTO_INCREMENT để thực hiện tự động tăng. Giá trị bắt đầu cho AUTO_INCREMENT là 1, là giá trị mặc định. Nó sẽ tăng thêm 1 cho mỗi bản ghi mới. Để lấy id tăng tự động tiếp theo trong MySQL, chúng ta có thể sử dụng hàm last_insert_id() từ MySQL hoặc auto_increment với SELECT .
Làm cách nào để nhận ID duy nhất trong MySQL?Hàm UUID() trong MySQL
. Nó được thiết kế như một số duy nhất trên toàn cầu.
Làm cách nào để tạo số ngẫu nhiên duy nhất trong MySQL?Hàm RAND() trả về một số ngẫu nhiên trong khoảng từ 0 (bao gồm) đến 1 (không bao gồm)
Auto_increment trong MySQL là gì?Tự động tăng cho phép một số duy nhất được tạo tự động khi bản ghi mới được chèn vào bảng . Thường thì đây là trường khóa chính mà chúng tôi muốn được tạo tự động mỗi khi một bản ghi mới được chèn vào. |