You can evaluate Salesforce Object Query Language (SOQL) or Salesforce Object Search Language (SOSL) statements on-the-fly in Apex by surrounding the statement in square brackets.
SOQL statements evaluate to a list of sObjects, a single sObject, or an Integer for count method queries.
List<Account> aa = [SELECT Id, Name FROM Account WHERE Name = 'Acme'];
if (!aa.isEmpty()) { // Execute commands }
Contact c = new Contact(Account = [SELECT Name FROM Account WHERE NumberOfEmployees > 10 LIMIT 1]); c.FirstName = 'James'; c.LastName = 'Yoyce';
Integer i = [SELECT COUNT() FROM Contact WHERE LastName = 'Weissman'];
Integer j = 5 * [SELECT COUNT() FROM Account];
For a full description of SOQL query syntax, see the Salesforce SOQL and SOSL Reference Guide.
SOSL statements evaluate to a list of lists of sObjects, where each list contains the search results for a particular sObject type. The result lists are always returned in the same order as they were specified in the SOSL query. If a SOSL query does not return any records for a specified sObject type, the search results include an empty list for that sObject.
List<List<SObject>> searchList = [FIND 'map*' IN ALL FIELDS RETURNING Account (Id, Name), Contact, Opportunity, Lead];
Account [] accounts = ((List<Account>)searchList[0]); Contact [] contacts = ((List<Contact>)searchList[1]); Opportunity [] opportunities = ((List<Opportunity>)searchList[2]); Lead [] leads = ((List<Lead>)searchList[3]);
For a full description of SOSL query syntax, see the Salesforce SOQL and SOSL Reference Guide.