Инструкция SELECT oбщие правила
Каждое предложение инструкции SELECT имеет свою область применения. Поэтому можно говорить отдельно о предложении FROM, предложении WHERE, предложении GROUP BY и так далее. Дополнительную информацию и примеры инструкций SELECT вы можете найти в разделах, посвященных каждому из предложений инструкции. Однако не в каждом запросе нужно использовать каждое предложение. Минимально необходимыми в запросе являются список отбираемых элементов и предложение FROM. Поскольку предложение SELECT является очень важным и имеет много опций, мы разделили раздел «Общие правила» на следующие подразделы.
Псевдонимы и соединения с использованием предложения WHERE.
- Предложение JOIN.
- Предложение WHERE.
- Предложение GROUP BY.
- Предложение HAVING.
- Предложение ORDER BY.
Псевдонимы и соединения с использованием предложения WHERE
Перед именем столбца может потребоваться указать префикс в виде имени базы данных, схемы и имени таблицы, поскольку столбцы с одним именем могут присутствовать в разных таблицах, на которые ссылается запрос. В следующем примере (для базы данных Oracle) таблица jobs и таблица employee схемы scott содержат столбец job_id. Обратите внимание, что в этих примерах таблицы employee и jobs соединяются при помощи предложения WHERE.
SELECT
scott.employee.emp_id,
scott.employee.fname,
scott.employee,
lname,
jobs,
job_desc
FROM scott.employee, jobs
WHERE scott.employee.job_id=jobs.job_id
ORDER BY scott.employee.fname, scott employee.Inane;
Используя псевдонимы, вы можете написать такой запрос быстрее и проще.
SELECT
e.emp_id,
е.fname,
e.lname,
j.job_desc
FROM scott.employee AS e, jobs AS j
WHERE e.job_id=j.job_id
ORDER BY e.fname, e.lname
Эти два запроса также иллюстрируют некоторые важные правила, касающиеся соединений, выполняемых при помощи предложений WHERE.
Вообще говоря, при описании соединений вам следует отдавать предпочтение предложению JOIN (о котором мы сейчас поговорим), а не предложению WHERE. Это не только сделает ваш код более понятным и позволит легко отличать условия соединения от условий поиска, но также устранит саму возможность создания трудно понимаемых на интуитивном уровне условий при использовании в некоторых реализациях предложения WHERE для внешних соединений.