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)
を使うとよいでしょう。