MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

MariaDB ROW_COUNT () được giải thích

Trong MariaDB, ROW_COUNT() là một hàm tích hợp trả về số hàng được cập nhật, chèn hoặc xóa bởi câu lệnh trước.

Giá trị được trả về bởi ROW_COUNT() giống với số hàng mà mysql khách hàng hiển thị và giá trị từ mysql_affected_rows() Hàm API C.

Cú pháp

Cú pháp như sau:

ROW_COUNT()

Không cần đối số hoặc được chấp nhận.

Ví dụ

Tuyên bố DDL

Đối với các câu lệnh DDL (bao gồm TRUNCATE ) và đối với các câu lệnh khác không trả về bất kỳ tập hợp kết quả nào (chẳng hạn như USE , DO , SIGNAL hoặc DEALLOCATE PREPARE ), ROW_COUNT() hàm trả về 0 .

Hãy tạo một bảng:

CREATE OR REPLACE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

Kết quả:

Query OK, 0 rows affected (0.046 sec)

Và chạy ROW_COUNT() :

SELECT ROW_COUNT();

Kết quả:

+-------------+
| ROW_COUNT() |
+-------------+
|           0 |
+-------------+

Như mong đợi, 0 được trả về vì không có hàng nào bị ảnh hưởng.

Tuyên bố DML

Đối với các câu lệnh DML khác với SELECT và cho ALTER TABLE , ROW_COUNT() hàm trả về số lượng hàng bị ảnh hưởng.

Dưới đây là một số ví dụ.

Chèn dữ liệu

Bây giờ chúng ta hãy chèn một số hàng:

INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Kết quả:

MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Homer');
Query OK, 1 row affected (0.037 sec)

MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Bart');
Query OK, 1 row affected (0.001 sec)

MariaDB [Zap]> INSERT INTO guest (guest_name) VALUES ('Marge');
Query OK, 1 row affected (0.002 sec)

Mỗi câu lệnh dẫn đến một hàng bị ảnh hưởng.

Và hãy chạy ROW_COUNT() một lần nữa:

SELECT ROW_COUNT();

Kết quả:

+-------------+
| ROW_COUNT() |
+-------------+
|           1 |
+-------------+

Điều này trả về 1 vì đó là số hàng bị ảnh hưởng trong câu lệnh cuối cùng. Mặc dù chúng tôi đã ảnh hưởng đến ba hàng, nhưng phải mất ba câu lệnh để làm điều đó (mỗi câu lệnh chỉ chèn một hàng và ROW_COUNT() chỉ báo cáo về tuyên bố cuối cùng).

Cập nhật dữ liệu

Bây giờ, hãy cập nhật dữ liệu trong cả ba hàng:

UPDATE guest
SET guest_name = 'Homer';

Kết quả:

Query OK, 2 rows affected (0.008 sec)
Rows matched: 3  Changed: 2  Warnings: 0

mariadb của tôi khách hàng cho tôi biết rằng mặc dù ba hàng phù hợp với tiêu chí, chỉ có hai hàng được thay đổi. Điều này là do hàng đầu tiên đã chứa Homer , đó cũng là những gì chúng tôi đang cố gắng cập nhật nó lên.

Hãy xem ROW_COUNT() nào lợi nhuận:

SELECT ROW_COUNT();

Kết quả:

+-------------+
| ROW_COUNT() |
+-------------+
|           2 |
+-------------+

Như mong đợi, nó trả về 2 , bởi vì đó là số lượng hàng đã thực sự được cập nhật.

Tuyên bố về Tập hợp Kết quả

Đối với các câu lệnh trả về một tập hợp kết quả (chẳng hạn như SELECT , SHOW , DESC hoặc HELP ), ROW_COUNT() hàm trả về -1 , ngay cả khi tập kết quả trống. Điều này cũng đúng với các câu lệnh quản trị, chẳng hạn như OPTIMIZE .

Ví dụ:

SELECT * FROM guest;

Kết quả:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Homer      |
|        3 | Homer      |
+----------+------------+
3 rows in set (0.000 sec)

Bây giờ, hãy gọi ROW_COUNT() một lần nữa:

SELECT ROW_COUNT();

Kết quả:

+-------------+
| ROW_COUNT() |
+-------------+
|          -1 |
+-------------+

Phím Ngoài &Trình kích hoạt

Lưu ý rằng ROW_COUNT() không tính đến các hàng không bị xóa / cập nhật trực tiếp bởi câu lệnh cuối cùng. Điều này có nghĩa là các hàng bị xóa bởi khóa ngoại hoặc trình kích hoạt sẽ không được tính.

Thông tin thêm

Xem tài liệu MariaDB để biết thêm chi tiết và một số điều khác cần lưu ý khi sử dụng chức năng này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều chỉnh Hiệu suất Cơ sở dữ liệu cho MariaDB

  2. MariaDB 10.6 và NextCloud:Hàng COMPRESSED được mặc định chỉ đọc

  3. Giới thiệu MariaDB Platform X5:cơ sở dữ liệu khối lượng công việc bất kỳ, hiện ở mọi quy mô

  4. Cách UNHEX () hoạt động trong MariaDB

  5. Cách tự động chuyển đổi dự phòng cơ sở dữ liệu với ClusterControl