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

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

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

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

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

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

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

Легко!

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

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

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

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

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

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

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

SELECT COUNT( * ) FROM  `country`

Оказывается в таблице country целых 239 записей! Понятно, что для их подсчета не хватит пальцев ни на руках, ни на ногах (если не использовать конечности других людей или животных)). Как видите, этот способ в MySQL подсчета количества строк работает намного точнее и чаще всего используется профессионалами.

Но эта функция умеет не только это! Например, с ее помощью можно узнать, сколько из «представленных» в БД стран находятся в Европе:

SELECT COUNT( * ) FROM  `country` WHERE  `Continent` =  'Europe'

А еще, сколько раз каждая страна упоминается в таблице. Пример запроса:

SELECT  `Name` , COUNT( * ) FROM  `country` GROUP BY  `Name`

С помощью этого запроса мы узнали количество строк в MySQL, в которых упоминается каждая из стран. Из результатов его выполнения видно, что по одному разу.

Чуть не забыл! Если у вас еще нет в наличии базы world, с которой мы сегодня работаем, то ее можно скачать по этой ссылке с официального сайта разработчиков СУБД MySQL. После скачивания архив с ней нужно разархивировать и затем импортировать не сервер БД. В phpMyAdmin это можно сделать через пункт основного меню «Импорт».

Более подробно об этой процедуре я рассказывал в одном из предыдущих материалов.

Функция MAX() – в некоторых случаях она также позволяет в MySQL узнать количество строк в таблице. Почему иногда? Сейчас объясню. Помните первый способ подсчета, который мы рассмотрели в начале. Он подразумевает, что самое большое значение столбца id равно числу записей. Применение данной функции является своего рода «автоматизацией» того метода. MAX() возвращает максимальное значение указанного столбца (id). Для тестирования функции мы будет использовать таблицу city, которая также входит в состав базы world. Код запроса:

SELECT MAX(`ID`) FROM `city`

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

Если нужно, то можно получить последнюю запись целиком:

SELECT MAX(`ID`),`Name`,`CountryCode`,`District`,`Population` FROM  `city`

Обратите внимание, что для выборки перед вызовом функции вместо «*» мы перечисляем название всех столбцов. Это особенность синтаксиса при применении встроенных функций в MySQL.

Определение числа записей в PHP

Часто в коде сайтов PHP MySQL количество строк требуется получить для того, чтобы затем передать это значение в качестве входного параметра для дальнейшей обработки. Это можно сделать с помощью следующего кода:

<?php
$con=mysqli_connect('localhost', 'root', '', 'world');
if (mysqli_connect_errno())
  {
  echo "Ошибка подключения: " . mysqli_connect_error();  // СУБД MySQL количество строк в запросе не вернет из-за ошибки подключения
  }
 if ($result = $con->query("SELECT * FROM  `country`")) {
    printf("В таблице %d строк.\n", $result->num_rows);
    $result->close();
}
mysqli_close($con);
?>

Результат в MySQL подсчета количества строк:

Я считаю, что мы справились с задачей, и узнали, как возвращает MySQL количество строк в результате. Теперь можно легко занести каждую конфету в БД под отдельным ID.… А лучше их сразу съесть. И чтобы не было дырок в зубах, конфеты можно сразу глотать :)

Хотите изучить MySQL?

Прямо сейчас посмотрите 24-х часовой курс по базе данных MySQL!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree