Cập nhật số hàng mysql

Có một số cách để lấy số lượng hàng trong MySQL. Một số sản phẩm quản lý cơ sở dữ liệu cung cấp số liệu thống kê cơ sở dữ liệu như kích thước bảng, nhưng nó cũng có thể được thực hiện bằng SQL thẳng. Trong mẹo hôm nay, chúng ta sẽ sử dụng hàm gốc COUNT() để truy xuất số hàng trong một bảng hoặc dạng xem trong cơ sở dữ liệu MySQL. Trong phần 2, chúng ta sẽ tìm hiểu cách lấy số lượng hàng từ nhiều bảng hoặc thậm chí từ tất cả các bảng trong cơ sở dữ liệu

Có thể bạn đã biết hàm COUNT() trả về số hàng trong bảng. Nhưng còn nhiều điều hơn thế nữa, vì hàm COUNT() có thể được sử dụng để đếm tất cả các hàng trong một bảng hoặc chỉ những hàng khớp với một điều kiện cụ thể. Bí mật nằm ở chữ ký hàm, trong đó có một số dạng. COUNT(*), COUNT(biểu thức) và COUNT(biểu thức DISTINCT)

Trong mỗi trường hợp, hàm COUNT() trả về BIGINT chứa số lượng hàng phù hợp hoặc bằng 0 nếu không tìm thấy

Để đếm tất cả các hàng trong một bảng, cho dù chúng có chứa giá trị NULL hay không, hãy sử dụng COUNT(*). Dạng đó của hàm COUNT() về cơ bản trả về số hàng trong tập kết quả được trả về bởi câu lệnh SELECT

CHỌN ĐẾM (*) TỪ các thành phố;

Một câu lệnh giống như câu lệnh ở trên gọi hàm COUNT(*) mà không có mệnh đề WHERE hoặc các cột bổ sung, sẽ thực hiện rất nhanh trên các bảng MyISAM vì số lượng hàng được lưu trữ trong cột table_rows trong bảng bảng của cơ sở dữ liệu lược đồ thông tin

Đối với các công cụ lưu trữ giao dịch như InnoDB, việc lưu trữ số lượng hàng chính xác là một vấn đề vì InnoDB không giữ số lượng hàng nội bộ trong một bảng. Nếu đúng như vậy, các giao dịch đồng thời có thể “thấy” số lượng hàng khác nhau cùng một lúc. Do đó, các câu lệnh SELECT COUNT(*) chỉ đếm các hàng hiển thị cho giao dịch hiện tại. Điều đó có nghĩa là việc chạy truy vấn bằng COUNT(*) trong khi khối lượng công việc lớn có thể dẫn đến các con số hơi không chính xác

Không chuyển gì cho COUNT() thực thi phiên bản COUNT(expr) của hàm, nhưng sans tham số. Gọi COUNT() theo cách đó chỉ trả về các hàng không bao gồm các giá trị NULL. Ví dụ: giả sử rằng chúng tôi có một bảng đơn giản có tên code_values

code_values
+-------+
. mã số.
+-------+
. 1.
+-------+
.        .
+-------+
.        .
+-------+
. 4.
+-------+

Chọn COUNT() từ bảng sẽ trả về 2, mặc dù có 4 hàng

CHỌN COUNT(*) TỪ code_values;

+---------+
. ĐẾM().
+---------+
. 2.
+---------+

Lưu ý rằng phiên bản này của hàm COUNT() hiếm khi được sử dụng vì các hàng NULL không phải là vấn đề trong cơ sở dữ liệu chuẩn hóa, một điều kiện chỉ có thể xảy ra nếu bảng không có khóa chính. Trong hầu hết các trường hợp, COUNT(*) sẽ hoạt động bình thường

Tất nhiên, COUNT(expr) chấp nhận các biểu thức thích hợp. Đây là một truy vấn khác tìm nạp các hàng NULL và không NULL giống nhau

CHỌN ĐẾM (IFNULL (mã, 1)) TỪ code_values;

Đếm các giá trị khác null

Phiên bản COUNT(expr) của hàm COUNT cũng chấp nhận các tên cột riêng lẻ, kết quả là COUNT(tên_cột) sẽ trả về số lượng bản ghi trong đó tên_cột không phải là NULL. Do đó, truy vấn CHỌN sau sẽ tìm nạp số lượng hàng trong đó cột mô tả chứa giá trị không NULL

CHỌN ĐẾM (mô tả) TỪ các vật dụng;

Trong Phần 2, chúng ta sẽ tìm hiểu cách sử dụng chữ ký COUNT(DISTINCT expression) cũng như cách lấy số lượng hàng từ nhiều bảng

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* this should return the correct numbers of deleted records */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());

/* with a where clause that is never true, it should return 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>

Số hàng có nghĩa là có bao nhiêu bản ghi có sẵn trong cơ sở dữ liệu. Đây là một hoạt động chính để tìm hiểu và theo dõi sự phát triển của bảng trong quá trình phát triển và vận hành. Hàm đơn giản và phổ biến nhất cho phép chúng ta trả về số bản ghi có sẵn trong bảng là hàm COUNT() của MySQL. Đây là một chức năng tổng hợp hoạt động trên toàn bộ tập hợp các bản ghi và tạo ra một đầu ra tóm tắt duy nhất

Chúng ta có thể sử dụng hàm MySQL COUNT() để thực hiện những việc sau

  • Để trả về số lượng bản ghi có sẵn trong một bảng
  • Để trả về số lượng hàng theo truy vấn hoặc bảng bí danh
  • Để có được số lượng giá trị khác null trong một cột
  • Để có được số lượng các giá trị riêng biệt hoặc duy nhất trong một cột

cú pháp

Sau đây là cú pháp để lấy số hàng của một bảng trong MySQL

Hãy để chúng tôi lấy các bảng sau đây để trình diễn

Bàn. Nhân viên

Cập nhật số hàng mysql

Bàn. mệnh lệnh

Cập nhật số hàng mysql

Ví dụ chúng ta muốn lấy tổng số hàng trong bảng nhân viên thì cần sử dụng cú pháp như sau

Chúng ta sẽ nhận được đầu ra như ảnh chụp màn hình bên dưới

Cập nhật số hàng mysql

Nhận số lượng hàng của MySQL từ hai bảng trở lên

Nếu chúng ta muốn lấy số lượng hàng của hai hoặc nhiều bảng, bắt buộc phải sử dụng các truy vấn con, i. e. , một truy vấn con cho mỗi bảng riêng lẻ

Thí dụ

Giả sử chúng ta muốn lấy số lượng hàng của bảng employee và order trong một truy vấn duy nhất, chúng ta phải thực hiện truy vấn như sau

đầu ra

Ta sẽ được kết quả như hình bên dưới

Cập nhật số hàng mysql

Chúng ta cũng có thể sử dụng toán tử UNION để lấy số lượng hàng của hai hoặc nhiều bảng trong đó toán tử kết hợp kết quả được trả về bởi truy vấn SELECT riêng lẻ

Ta sẽ được kết quả như sau

Cập nhật số hàng mysql

Nhận số lượng hàng MySQL của tất cả các bảng trong cơ sở dữ liệu cụ thể

MySQL cũng cho phép chúng tôi lấy số hàng của tất cả các bảng trong một cơ sở dữ liệu cụ thể. Sau đây là các bước giúp chúng ta đếm số hàng của tất cả các bảng trong một cơ sở dữ liệu cụ thể

Bước 1. Trước tiên, chúng ta cần lấy tất cả các tên bảng có sẵn trong cơ sở dữ liệu

Bước 2. Thứ hai, tạo một câu lệnh SQL bao gồm truy vấn đếm cho tất cả các bảng được phân tách bằng toán tử UNION

Bước 3. Cuối cùng, thực hiện truy vấn bằng Tuyên bố chuẩn bị sẵn của MySQL

Để lấy tất cả tên bảng của các bảng cơ sở dữ liệu cụ thể, hãy thực hiện truy vấn sau từ cơ sở dữ liệu information_schema

Cơ sở dữ liệu được đề cập ở trên có các bảng sau

Cập nhật số hàng mysql

Tiếp theo, xây dựng câu lệnh SQL. Ở đây, chúng ta sẽ sử dụng hàm GROUP_CONCAT và CONCAT để xây dựng câu lệnh

Trong truy vấn trên, table_list là tên của các bảng có sẵn trong một cơ sở dữ liệu cụ thể, xuất phát từ truy vấn được sử dụng trong bước đầu tiên. Vì vậy, truy vấn SQL ở trên trở thành

Nếu bạn đang sử dụng phiên bản MySQL 8. 0 trở lên, bạn có thể sử dụng MySQL CTE (biểu thức bảng chung) thay vì bảng dẫn xuất

Thứ ba, thực thi câu lệnh @sql bằng cách sử dụng câu lệnh đã chuẩn bị như sau

Sau khi thực hiện câu lệnh trên ta sẽ được kết quả như sau

Cập nhật số hàng mysql

Nhận số lượng hàng MySQL của tất cả các bảng trong cơ sở dữ liệu với một truy vấn

MySQL cũng cung cấp một truy vấn để đếm các hàng của tất cả các bảng trong một cơ sở dữ liệu cụ thể. Cách nhanh nhất là truy vấn trực tiếp dữ liệu từ cơ sở dữ liệu information_schema. Xem tuyên bố dưới đây

Sau khi thực hiện ta sẽ được kết quả như sau

Cập nhật số hàng mysql

Đôi khi truy vấn này không trả về kết quả chính xác. Đó là do số hàng thực tế trong bảng và số hàng trong information_schema không được đồng bộ hóa. Chúng ta có thể tránh kết quả không chính xác này bằng cách chạy câu lệnh ANALYZE TABLE trước khi truy vấn số lượng hàng từ cơ sở dữ liệu information_schema

Làm cách nào tôi có thể đếm số hàng bị ảnh hưởng trong MySQL?

mysql_affected_rows() có thể được gọi ngay sau khi thực hiện một câu lệnh với mysql_real_query() hoặc mysql_query(). Nó trả về số hàng được thay đổi, xóa hoặc chèn bởi câu lệnh cuối cùng nếu đó là UPDATE , DELETE hoặc INSERT. Đối với các câu lệnh CHỌN, mysql_affected_rows() hoạt động giống như mysql_num_rows().

ROW_COUNT() trong MySQL là gì?

ROW_COUNT() trả về số hàng được cập nhật, chèn hoặc xóa bởi câu lệnh trước . Điều này giống như số lượng hàng mà máy khách mysql hiển thị và giá trị từ hàm API mysql_affected_rows() C.

Lệnh cập nhật dữ liệu trong MySQL là gì?

Điều này sẽ sửa đổi bất kỳ giá trị trường nào của bất kỳ bảng MySQL nào. .
cú pháp. Khối mã sau đây có cú pháp SQL chung của lệnh CẬP NHẬT để sửa đổi dữ liệu trong bảng MySQL − CẬP NHẬT tên_bảng SET trường1 = giá trị mới1, trường2 = giá trị mới2 [Điều khoản WHERE].
Thí dụ. .
cú pháp. .
Thí dụ

Làm cách nào để biết một hàng có bị ảnh hưởng trong SQL Server không?

Trong SQL Server, bạn có thể sử dụng hàm hệ thống @@ROWCOUNT để trả về số hàng bị ảnh hưởng bởi câu lệnh T-SQL cuối cùng. Ví dụ: nếu truy vấn trả về 4 hàng, @@ROWCOUNT sẽ trả về 4.