SQL – это язык взаимодействия с базами данных, применяемый в большинстве реляционных СУБД. SQL напоминает человеческий язык, т.к. одна из его задач – быть понятным не программистам. Запросы читаются как обычные предложения. Словарь языка относительно невелик, а его команды являются словами английского языка. Основной стандарт SQL был принят в 1992 г. и называется SQL2 или SQL-92. Продолжается также работа над наиболее современным стандартом SQL3.
Операция соединения используется в языке SQL для вывода связанной информации, хранящейся в нескольких таблицах, в одном запросе. В этом проявляется одна из наиболее важных особенностей запросов SQL - способность определять связи между многочисленными таблицами и выводить информацию из них в рамках этих связей. Именно эта операция придает гибкость и легкость языку SQL.
Операции соединения подразделяются на два вида - внутренние и внешние. Оба вида соединений задаются в предложении WHERE запроса SELECT с помощью специального условия соединения. Внешние соединения поддерживаются стандартом ANSI-92 и содержат зарезервированное слово "JOIN", в то время как внутренние соединения (или просто соединения) могут задаваться как без использования такого слова (в стандарте ANSI-89), так и с использованием слова "JOIN" (в стандарте ANSI-92).
Связывание производится, как правило, по первичному ключу одной таблицы и внешнему ключу другой таблицы - для каждой пары таблиц. При этом очень важно учитывать все поля внешнего ключа, иначе результат будет искажен. Соединяемые поля могут присутствовать в списке выбираемых элементов. Предложение WHERE может содержать множественные условия соединений.
При применении операции проекции выбираются не строки, а столбцы. Поэтому достаточно перечислить заголовки нужных столбцов, без указания каких-либо посторонних условий. Итого, получаем оператор следующего вида:
Select список имен атрибутов
From имя отношения;
После применения этого оператора машина выдаст те столбцы таблицы-отношения, имена которых были указаны в первой строчке этого оператора Select.
Повторяющиеся строки и столбцы исключать из результирующего отношения не обязательно. Но если в заказе или в задании требуется обязательно элиминировать дубликаты, следует использовать специальную опцию языка структурированных запросов – distinct. Эта опция задает автоматическое исключение дубликатов кортежей из отношения. С применением этой опции оператор Select будет выглядеть следующим образом:
Select distinct список имен атрибутов
From имя отношения;
В языке SQL существует специальное обозначение для необязательных элементов выражений – квадратные скобки […]. Поэтому в самом общем виде операция проекции будет выглядеть следующим образом:
Select [distinct] список имен атрибутов
From имя отношения.
Операция селекция – выбор из таблицы подмножества строк по условию. Например, список сотрудников 5-го отдела: select * from emp where depno = 5; проекция – выбор из таблицы подмножества столбцов. Например, сведения о должности и зарплате сотрудников: select distinct name, post, salary from emp;