SELECT 分によって引き出された行の、非 NULL 値の数を戻します。結果は BIGINT 値になります。
一致する行がない場合、COUNT() は 0 を戻します。
mysql>SELECT student.student_name,COUNT(*)->FROM student,course->WHERE student.student_id=course.student_id->GROUP BY student_name;
COUNT(*) は、NULL 値を含む含まざるに関わらず、引き出された行の数を戻すという点でやや異なります。
COUNT(*) は、SELECT がひとつのテーブルから検索し、他のカラムは引き出されず、また WHERE カラムがない場合、きわめて素早く戻すよう最適化されています。例 :
mysql> SELECT COUNT(*) FROM student;
この最適化は、正確な行の数がこの保存エンジンに保管されており、素早いアクセスが可能なため、MyISAM テーブルにのみ適用します。InnoDB をはじめとするトランザクション保存エンジンに関しては、正確な行の数を保存するのは、複数のトランザクションが起こって、それぞれが行の係数に影響をおよぼす場合があるため、より困難になります。