SQLのCOUNT(*)は、テーブル内の全行数をカウントするために使用される関数です。
ここで使われる「アスタリスク(*)」は、すべての列を意味し、行が存在する限り、その行に含まれるデータに関係なくカウントされます。
このアプローチは、主にテーブル内のレコードの総数を知りたいときに使います。
一方で、特定のカラム名を指定してCOUNT(column_name)と書くと、そのカラムにNULL以外の値が入っている行数のみがカウントされます。つまり、NULL値は無視されます。
使用例
COUNT(*)
SELECT COUNT(*) FROM employees;
このクエリは、employeesテーブル内の全行数を返します。
NULL値が存在するかどうかに関係なく、すべての行がカウントされます。
テーブルに1万行があれば、COUNT(*)の結果は1万になります。
COUNT(column_name)
SELECT COUNT(department) FROM employees;
このクエリは、employeesテーブルのdepartmentカラムに値が存在する行だけをカウントします。もし500行にNULLが含まれている場合、このクエリの結果は9500になります。
COUNT(*) vs COUNT(column_name)
データベース全体のレコード数を取得したいときにはCOUNT(*)が便利です。
一方、特定のカラムにデータがあるレコードだけを数えたい場合にはCOUNT(column_name)を使うとよいでしょう。

