How can I see who has accessed the database, viewed the tables or executed
SELECT, for SQL Server 2008 R2?
It sounds like what you're looking for is an audit. You can achieve this through the use of SQL Server Audit. With this tool, you will be able to audit Server and Database level actions and access.
To find out more information about how to use this tailored to your implementation, take a look at this BOL reference on SQL Server Audit.
This is available in Enterprise and Datacenter editions.