COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.
COUNT(ALL expression) evaluates expression for each row in a group and returns the number of nonnull values.
COUNT(DISTINCT expression) evaluates expression for each row in a group and returns the number of unique, nonnull values.
Example
CREATE TABLE emp ( id INT );
INSERT INTO emp VALUES (1);
INSERT INTO emp VALUES (1);
INSERT INTO emp VALUES (2);
INSERT INTO emp VALUES (3);
INSERT INTO emp VALUES (null);
Table
Query
SELECT COUNT(*), COUNT(id), COUNT(Distinct id)
FROM emp;
Result