If you consider, for example, how Google does it, they use Bigtable (see this question for discussion) I don't know anything about how it works internally, so can't comment.
As for your question, it is not possible to do a select
and an update
in one go - in pure SQL, that is. It is, however, possible to do this with a stored function. Consider the following function (pseudo-code)
create function select_and_update(criteria) returns setof data_rows
as
begin
update some_table set view_count = view_count + 1 where criteria;
return set "select * from some_table where criteria";
end;
Then in the application, you can make one database call:
SELECT * FROM select_and_update(criteria)
This way, there is only one "hit" from the application (i.e. you are only executing one query from the application against the database connection), however internally view count is updated and the data is returned.
Specifics, of course, will depend on the database engine and your particular needs, but I do use this technique in my web site quite extensively.