Как определить количество строк в таблице в базе данных MySQL

Как определить количество строк в таблице в базе данных MySQL

Однажды я столкнулся с тем, что мне нужно было посчитать количество строк в таблице SQL, но многие из предлагаемых в интернете решений у меня не работали. И всё же я нашёл выход.

Способ 1. phpMyAdmin

Начнем с самого простого и очевидного. Допустим, вам не нужно использовать полученный результат в коде, а просто узнать количество строк, только и всего.

Тогда заходим в phpMyAdmin (localhost/tools/phpmyadmin — для Денвера, localhost/phpMyAdmin для MAMP), затем выбираем нужную базу данных, после этого выбираем таблицу, количество строк в которой нужно выяснить, и видим следующее сообщение:

количество строк в таблице базы данных

Способ 2. COUNT

Вот так выглядит сам SQL-запрос:

SQL-запрос с условием:

Реализация на PHP:

Аналогичным образом сюда можно добавить условие. Тогда код выведет число строк в таблице, удовлетворяющих условию.

Способ 3. mysql_num_rows

Этот способ позволяет подсчитать количество строк результата запроса.

Например в WordPress посты хранятся в таблице wp_posts , таким образом мы можем узнать сколько записей (типов постов) хранится в базе данных в таблице MySQL. Этот код дан только для примера (или для случаев, когда среда WordPress не подгружена), так как в WordPress подключение к базе данных осуществляется через класс $wpdb.

В результат будут включены абсолютно все записи. А как узнать количество только тех, которые опубликованы? Для этого нам потребуется немного изменить SQL-запрос.

Смотрите также

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Источник

MySQL Row Count: Как получить количество строк в MySQL

FavoriteДобавить в избранное

Главное меню » Базы данных » MySQL » MySQL Row Count: Как получить количество строк в MySQL

Как установить MySQL на Ubuntu 16.04

Получение количества строк MySQL в одной таблице

Чтобы получить количество строк в одной таблице, вы используете оператор COUNT(*) в SELECT следующим образом:

Например, чтобы получить количество строк в таблице andreyex в примере базы данных, используйте следующий оператор:

Получение количества строк MySQL в двух или более таблиц

Чтобы получить количество строк в нескольких таблицах, вы используете оператор UNION для объединения наборов результатов, возвращаемых каждым отдельным оператором SELECT.

Например, чтобы получить количество строк таблиц andreyex и trainings в одном запросе, используйте следующую инструкцию.

Получение количества строк MySQL всех таблиц в конкретной базе данных

Чтобы получить количество строк всех таблиц в конкретной базе данных, например classicmodels, вы используете следующие шаги:

  1. Во-первых, получить все имена таблиц в базе данных
  2. Во-вторых, создайте оператор SQL, который включает все операторы SELECT COUNT(*) FROM table_name для всех таблиц, разделенных UNION.
  3. В-третьих, выполните оператор SQL, используя оператор prepared

Во-первых, чтобы получить все имена таблиц базы данных, вы запрашиваете из базы данных information_schema следующее:

Во- вторых, построить оператор SQL, мы используем функции GROUP_CONCAT и CONCAT следующим образом:

В этом запросе приведен список имен таблиц table_list, который является результатом запроса на первом этапе.

Следующий запрос использует первый запрос как производную таблицу и возвращает инструкцию SQL в виде строки.

Читайте также:  Результаты регионального этапа всероссийской олимпиады школьников 2019 математика

Если вы используете MySQL 8.0+, вы можете использовать MySQL CTE (общее табличное выражение) вместо производной таблицы:

В-третьих, вы выполняете оператор @sql, используя подготовленный оператор следующим образом:

Получение количества строк MySQL всех таблиц в базе данных одним запросом

Быстрый способ получить количество строк всех таблиц в базе данных – запрос данных из базы данных information_schema напрямую:

Этот метод иногда не точен, потому что количество строк в information_schema и фактическое количество строк в таблицах не синхронизированы. Чтобы избежать этого, вы должны выполнить инструкцию ANALYZE TABLE перед запросом количества строк из базы данных information_schema.

В этой статье вы узнали о различных способах получения количества строк одной или нескольких таблиц в базе данных MySQL.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Как подсчитать количество строк, возвращаемых запросом mysql?

Как подсчитать количество строк, возвращаемых запросом mysql? используя PHP..

ОТВЕТЫ

Ответ 1

Получение итоговых строк в результате запроса.

Вы можете просто перебрать результат и посчитать его. Вы не говорите, какой язык или клиентскую библиотеку вы используете, но API действительно предоставляет функцию mysql_num_rows, которая может рассказать вам количество строк в результат.

Это отображается в PHP, например, как функция mysqli_num_rows. Поскольку вы отредактировали вопрос, чтобы упомянуть, что используете PHP, вот простой пример с использованием функций mysqli:

Получение количества строк, соответствующих некоторым критериям.

Просто используйте COUNT (*) — см. Подсчет строк в руководстве по MySQL. Например:

Получить полные строки при использовании LIMIT.

Если вы использовали предложение LIMIT, но хотите знать, сколько строк вы получите без него, используйте SQL_CALC_FOUND_ROWS в своем запросе, затем SELECT FOUND_ROWS();

Для очень больших таблиц это не будет особенно эффективным, и вам лучше будет запускать более простой запрос, чтобы получить счет и кешировать его перед запуском ваших запросов, чтобы получить страницы данных.

Ответ 2

Если вам нужно решить проблему с помощью простого SQL, вы можете использовать подзапрос.

Ответ 3

Если ваш SQL-запрос имеет предложение LIMIT , и вы хотите узнать, сколько итоговых итогов в этом наборе данных вы можете использовать SQL_CALC_FOUND_ROWS , за которым следует SELECT FOUND_ROWS(); . Это возвращает количество строк A LOT более эффективно, используя COUNT(*)
Пример (прямо из документов MySQL):

Ответ 4

Если вы хотите, чтобы результат и число возвращаемых строк делали что-то вроде этого. Использование PHP.

Ответ 5

Предполагая, что вы используете функции mysql_ или mysqli_, на ваш вопрос уже должны были ответить другие.

Однако, если вы используете PDO, нет простой функции для возврата числа строк, полученных при помощи оператора select, к сожалению. Вы должны использовать count() в наборе результатов (обычно назначая его локальной переменной).

Или, если вас интересует только число, а не данные, PDOStatement:: fetchColumn() на результат SELECT COUNT (1).

Ответ 6

FOUND_ROWS() должен вызываться сразу после запроса.

Ответ 7

Если вы извлекаете данные с помощью WordPress, вы можете получить доступ к количеству строк, возвращаемых с помощью $wpdb- > num_rows:

Если вам нужен определенный счет, основанный на запросе на подсчет mysql, вы выполните следующее:

Если вы запускаете обновления или удаляете, то количество затронутых строк возвращается непосредственно из вызова функции:

Это относится также к $wpdb- > update и $wpdb- > delete.

Читайте также:  Всероссийская олимпиада школьников в 2021 2022 какие предметы

Ответ 8

Как и в случае с 2015 годом и устаревшей функциональностью mysql_* , это PDO — только визуализация.

Схема тестирования

Для моей реализации я получаю вывод 2 для обоих echos выше. цель из вышеперечисленных 2 стратегий заключается в том, чтобы определить, исходит ли ваша реализация драйвера rowCount, а если нет, искать стратегию возврата.

PDOStatement:: rowCount() возвращает количество строк, на которые влияет DELETE, INSERT или UPDATE.

For most databases , PDOStatement:: rowCount() не возвращает количество строк, на которые влияет инструкция SELECT. Вместо этого используйте PDO:: query() для выдачи оператора SELECT COUNT (*) с тем же предикаты в качестве вашего предполагаемого оператора SELECT, затем используйте PDOStatement:: fetchColumn(), чтобы получить количество строк, которые будут возвращаться. Затем ваше приложение может выполнить правильное действие.

Источник

Все способы, как определить количество строк в MySQL

как собрать свой комплект Аpache MySQL

От автора: один мой знакомый утверждает, что Дед Мороз существует. В него он поверил после того, как его младшему сыну на Новый Год подарили 10 кг шоколадных конфет. Теперь на следующий год придется у Деда Мороза просить пломбы для всех членов семьи! К счастью в веб-программировании можно перестраховаться от таких неожиданностей, и определить количество строк в MySQL заранее.

Зачем знать сколько?

Любая таблица состоит из столбцов и строк. Объем хранящихся в базе данных зависит от того, сколько строк содержится в каждой ее таблице.

Подобно тому, как число дырок в зубах человека зависит от съеденного ранее объема конфет. Точнее, от общего веса сладостей, которым «одарили» вашего ребенка на Новый Год .

Понятно, что от большого числа строк в базе MySQL пломб во рту не прибавится, но все же знание этого параметра может понадобиться при оптимизации работы вашего сайта, для запуска некоторых скриптов и т.д.

Легко!

Для получения в MySQL количества строк не обязательно «кумекать» в составлении SQL-запросов. Достаточно просто открыть в программной оболочке нужную таблицу и посмотреть id последней строки. Именно этот столбец чаще всего используют в качестве уникального ключа, и его значение генерируется автоматически (автоинкремент) путем приращения единицы(+1) к предыдущему.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Чтобы доказать эту «аксиому», откроем в phpMyAdmin таблицу любой БД. Например, таблицу animal. Как видно на скриншоте, значение столбца id идет по порядку, от 1 до.… Так, отставить! А куда убежал котяра с «идентификационным номером» 4? Наверное, опять «собачек» под номерами 5 и 6 испугался

В этой базе MySQL количество строк в таблице можно просто посчитать «на пальцах». Но что делать, если в таблице не 7 строк, а несколько сотен? Например, как в этой.

И это лишь одна из восьми страниц выборки. На самом деле число записей может исчисляться не только сотнями, но и тысячами. Вдобавок здесь нет столбца id, потому что он не является обязательным. Его наличие зависит от структуры всей БД, поскольку в ней значения всех строк взаимосвязаны между собой. Получается, что описанный выше метод подсчета строк MySQL не всегда действует.

Читайте также:  Выбор СУБД для разработки прототипа

Несколько правильных методов

Как говорится, первый метод «комом», поэтому рассмотрим несколько более эффективных и менее «простых» способов:

Функция COUNT() – возвращает число строк. Является встроенной функцией SQL. Все таки давайте узнаем, количество записей большой таблицы из БД, скриншот которой приведен выше. Код запроса:

Источник



mysqli_num_rows

Поведение функции mysqli_num_rows() зависит от того, используется ли буферизованная или не буферизованная результирующая выборка. Для небуферизованной выборки mysqli_num_rows() не вернёт правильное число рядов до тех пор, пока все ряды не будут получены и обработаны.

Список параметров

Возвращаемые значения

Возвращает число рядов в результирующей выборке.

Замечание:

Если число рядов больше чем PHP_INT_MAX , то число будет возвращено в виде строки.

Примеры

Пример #1 Объектно-ориентированный стиль

<?php
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

/* проверка соединения */
if ( mysqli_connect_errno ()) <
printf ( «Соединение не удалось: %s\n» , mysqli_connect_error ());
exit();
>

if ( $result = $mysqli -> query ( «SELECT Code, Name FROM Country ORDER BY Name» )) <

/* определение числа рядов в выборке */
$row_cnt = $result -> num_rows ;

printf ( «В выборке %d рядов.\n» , $row_cnt );

/* закрытие выборки */
$result -> close ();
>

/* закрытие соединения */
$mysqli -> close ();
?>

Пример #2 Процедурный стиль

<?php
$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

/* проверка соединения */
if ( mysqli_connect_errno ()) <
printf ( «Соединение не удалось: %s\n» , mysqli_connect_error ());
exit();
>

if ( $result = mysqli_query ( $link , «SELECT Code, Name FROM Country ORDER BY Name» )) <

/* определение числа рядов в выборке */
$row_cnt = mysqli_num_rows ( $result );

printf ( «В выборке %d рядов.\n» , $row_cnt );

/* закрытие выборки */
mysqli_free_result ( $result );
>

/* закрытие соединения */
mysqli_close ( $link );
?>

Результат выполнения данных примеров:

Смотрите также

  • mysqli_affected_rows() — Получает число строк, затронутых предыдущей операцией MySQL
  • mysqli_store_result() — Передаёт на клиента результирующий набор последнего запроса
  • mysqli_use_result() — Готовит результирующий набор на сервере к использованию
  • mysqli_query() — Выполняет запрос к базе данных

User Contributed Notes 5 notes

If you have problems making work this num_rows, you have to declare ->store_result() first.

<?php
$mysqli = new mysqli ( «localhost» , «root» , «» , «tables» );

$query = $mysqli -> prepare ( «SELECT * FROM table1» );
$query -> execute ();
$query -> store_result ();

$rows = $query -> num_rows ;

// Return 4 for example
?>

This function doesn’t work with LIMIT used jointly with SQL_CALC_FOUND_ROWS. If you want to obtain the total rows found you must do it manually, example:

<?php
public function errorList ( int $limit = 25 , int $offset = 0 ) <
$errorList = array();
$result = $this -> con -> query ( «SELECT SQL_CALC_FOUND_ROWS id, erreur FROM Erreurs ORDER BY id DESC LIMIT $limit OFFSET $offset » );
while( $row = $result -> fetch_assoc ()) <
$errorList [] = new Erreur ( $row );
>
$result -> free ();
// $foundRows = $result->num_rows; // 25
$foundRows = $this -> con -> query ( «SELECT FOUND_ROWS() as foundRows» );
$this -> foundRows = $foundRows -> fetch_assoc (); // 178
return $errorList ;
>
?>

The method signature should be:

mixed mysqli_num_rows (mysqli_result $result)

«If the number of rows is greater than PHP_INT_MAX, the number will be returned as a string.»

Источник