Все статьи >> MYSQL виды выборок (просмотров: 2271)

MYSQL виды выборок

В большинстве случаев к БД обращаются для получения данных, находящихся в таблицах. Чтобы собрать нужную информацию, как правило, необходимо охватить в запросе более одной таблицы. СУБД MYSQ предоставляет ряд методов выборки, о которых пойдет речь в статье. Рассматриваемые выборки:

  • Тривиальный или элементарный запрос;
  • Полное объединение;
  • Левое объединение;
  • Вложенные выборки;
  • Выборки при участии оператора UNION;

Для рассмотрения примеров будут использованы три таблицы, тематически связанные с обучением:

Таблица `students`, содержит персональную информацию студентов

 

Таблица `subjects`, названия предметов

 Таблица `students_mark`, оценки студентов

 

Элементарный или тривиальный запрос

Это простейший запрос, охватывающий только одну таблицу:

Запрос всех имеющихся столбцов в таблице `students`

 

1 SELECT * FROM `students`

 

Тот же запрос, явно указывающий столбцы для вывода

 

1 SELECT `id`,`firstname`,`lastname` FROM `students`

 

 

Полное объединение

Полным считается объединение, в котором задействовано более одной таблицы. При таком объединении строки из одной таблицы сопоставляются со строками из другой, создавая подмножество строк со всевозможными комбинациями.

При построении запроса в разделе FROM необходимо перечислить таблицы участвующие в объединении. Например, в нижеследующем примере, строки таблиц `students` и `students_mark` объединяются, образуя всевозможные комбинации.

 

1 SELECT * FROM `students`,`students_mark`

 

Как видно из рисунка такое объединение создает большое количество строк. Формула объединения такова:

 

1 “Количество строк 1 таблицы” * “Количество строк 2 таблицы” * … * “Количество строк N таблицы”

 

Из чего следует, что в текущем запросе скомбинировано 7*4=28 строк

 

Для указания условия объединения можно воспользоваться оператором WHERE. При составлении условия необходимо указывать полный путь до участвующего в сравнении столбца: `название таблицы`.`название столбца`.

 

1 SELECT *
2 FROM `students`,`students_mark`
3 WHERE `students`.`id`=`students_mark`.`idstudent`

 

В результате запроса получены все студенты, у которых есть оценки, студент Александр Александров исключается из списка, т.к. не имеет оценок.

Команда SELECT * выводит все имеющиеся столбцы в объединенных таблицах. Это не всегда удобно, к примеру, в текущем запросе уже есть совпадения имен (столбец id), некоторые столбцы вообще не нужны при выводе (idstudents, т.к. idstudents=id). Поэтому для вывода необходимых столбцов их нужно указать в операторе SELECT, к тому же есть возможность задать псевдоним для каждого столбца, после командыAS:

Перепишем запрос, учитывая полученную информацию:

 

1 SELECT
2 `students`.`id` AS idstudent,
3 `students`.`firstname` AS name,
4 `students`.`lastname` AS surname,
 

Автор: http://www.webpress.uz
 
 
Email:
не зарегистрированы?
Пароль:
забыли?
 
Астраханские магазины