Sử dụng chuỗi MySQL
Dãy số là một tập hợp các số nguyên 1, 2, 3, ... được tạo ra theo thứ tự theo một yêu cầu cụ thể. Chuỗi thường được sử dụng trong cơ sở dữ liệu vì nhiều ứng dụng yêu cầu mỗi hàng trong bảng phải chứa một giá trị duy nhất và chuỗi cung cấp một cách dễ dàng để tạo chúng.
Chương này mô tả cách sử dụng chuỗi trong MySQL.
Sử dụng cột AUTO_INCREMENT
Cách đơn giản nhất trong MySQL để sử dụng Chuỗi là xác định một cột là AUTO_INCREMENT và để những thứ còn lại để MySQL lo.
Thí dụ
Hãy thử ví dụ sau. Thao tác này sẽ tạo bảng và sau đó nó sẽ chèn một vài hàng vào bảng này, nơi không cần cung cấp ID bản ghi vì nó được MySQL tự động tăng lên.
mysql> CREATE TABLE insect
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL, # type of insect
-> date DATE NOT NULL, # date collected
-> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO insect (id,name,date,origin) VALUES
-> (NULL,'housefly','2001-09-10','kitchen'),
-> (NULL,'millipede','2001-09-10','driveway'),
-> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM insect ORDER BY id;
+----+-------------+------------+------------+
| id | name | date | origin |
+----+-------------+------------+------------+
| 1 | housefly | 2001-09-10 | kitchen |
| 2 | millipede | 2001-09-10 | driveway |
| 3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)
Nhận các giá trị AUTO_INCREMENT
Các LAST_INSERT_ID( )là một hàm SQL, vì vậy bạn có thể sử dụng nó từ bên trong bất kỳ máy khách nào hiểu cách phát hành câu lệnh SQL. Mặt khác, các tập lệnh PERL và PHP cung cấp các chức năng độc quyền để truy xuất giá trị tăng tự động của bản ghi cuối cùng.
Ví dụ về PERL
Sử dụng mysql_insertid thuộc tính để có được AUTO_INCREMENTgiá trị được tạo bởi một truy vấn. Thuộc tính này được truy cập thông qua một xử lý cơ sở dữ liệu hoặc một xử lý câu lệnh, tùy thuộc vào cách bạn đưa ra truy vấn.
Ví dụ sau tham chiếu nó thông qua xử lý cơ sở dữ liệu.
$dbh->do ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};
Ví dụ PHP
Sau khi phát hành một truy vấn tạo ra giá trị AUTO_INCREMENT, hãy truy xuất giá trị bằng cách gọi mysql_insert_id( ) chỉ huy.
mysql_query ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);
Đánh số lại một trình tự hiện có
Có thể có một trường hợp khi bạn đã xóa nhiều bản ghi khỏi một bảng và bạn muốn sắp xếp lại tất cả các bản ghi. Điều này có thể được thực hiện bằng cách sử dụng một thủ thuật đơn giản, nhưng bạn phải rất cẩn thận làm như vậy nếu bảng của bạn đang kết hợp với bảng khác.
Nếu bạn xác định rằng việc sắp xếp lại một cột AUTO_INCREMENT là không thể tránh khỏi, thì cách thực hiện là bỏ cột khỏi bảng, sau đó thêm lại.
Ví dụ sau đây cho thấy cách đánh số lại id values trong bảng bằng cách sử dụng kỹ thuật này.
mysql> ALTER TABLE insect DROP id;
mysql> ALTER TABLE insect
-> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
-> ADD PRIMARY KEY (id);
Bắt đầu một trình tự ở một giá trị cụ thể
Theo mặc định, MySQL sẽ bắt đầu chuỗi từ 1, nhưng bạn có thể chỉ định bất kỳ số nào khác tại thời điểm tạo bảng.
Chương trình sau đây là một ví dụ cho thấy cách MySQL sẽ bắt đầu chuỗi từ 100.
mysql> CREATE TABLE insect
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL, # type of insect
-> date DATE NOT NULL, # date collected
-> origin VARCHAR(30) NOT NULL # where collected
);
Ngoài ra, bạn có thể tạo bảng và sau đó đặt giá trị trình tự ban đầu với ALTER TABLE chỉ huy.
mysql> ALTER TABLE t AUTO_INCREMENT = 100;