Извлечение строк

Содержание

Слайд 2

Извлечение строк Оператор SELECT применяется для извлечения строк, выбранных из одной

Извлечение строк

Оператор SELECT применяется для извлечения строк, выбранных из одной или нескольких

таблиц
Выражение select_expression задает столбцы, в которых необходимо проводить выборку
При указании ключевых слов следует точно соблюдать порядок их следования
Слайд 3

Конструкция Select SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT | SQL_BIG_RESULT] SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE]

Конструкция Select

SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT | SQL_BIG_RESULT]
SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE]
[SQL_CALC_FOUND_ROWS]
[HIGH_PRIORITY]
[DISTINCT | DISTINCTROW

| ALL]
select_expression,…
[INTO {OUTFILE | DUMPFILE} 'file_name' options]
FROM table_references
[WHERE where_definition]
[GROUP BY value [ASC | DESC], ...]
[HAVING where_definition]
[ORDER BY value [ASC | DESC], ...]
[LIMIT [offset,] rows]
Слайд 4

Урезанная конструкция SELECT select_expression,… FROM table_references [WHERE where_definition] [GROUP BY value

Урезанная конструкция

SELECT
select_expression,…
FROM table_references
[WHERE where_definition]
[GROUP BY value [ASC | DESC], ...]
[HAVING where_definition]
[ORDER

BY value [ASC | DESC], ...]
[LIMIT [offset,] rows]
Слайд 5

Жесткое объединение При указании параметра STRAIGHT_JOIN оптимизатор будет объединять таблицы в

Жесткое объединение

При указании параметра STRAIGHT_JOIN оптимизатор будет объединять таблицы в том

порядке, в котором они перечислены в выражении FROM
Слайд 6

Обработка выдачи SQL_SMALL_RESULT – для ускорения обработки запросов применяются временные таблицы

Обработка выдачи

SQL_SMALL_RESULT – для ускорения обработки запросов применяются временные таблицы
SQL_BIG_RESULT –

предупреждает оптимизатор о том, что ожидается большой результат выборки
SQL_BUFFER_RESULT – заставляет оптимизатор поместить результирующую выборку во временную таблицу
Слайд 7

Кэширование выдачи Параметр SQL_CACHE предписывает MySQL сохранять результат запроса в кэше

Кэширование выдачи

Параметр SQL_CACHE предписывает MySQL сохранять результат запроса в кэше запросов
Параметр SQL_NO_CACHE запрещает MySQL хранить

результат запроса в кэше запросов
Слайд 8

Суммарная выборка Параметр SQL_CALC_FOUND_ROWS возвращает количество строк, которые вернул бы оператор

Суммарная выборка

Параметр SQL_CALC_FOUND_ROWS возвращает количество строк, которые вернул бы оператор SELECT, если

бы не был указан LIMIT
Слайд 9

Изменение приоритета При указании параметра HIGH_PRIORITY содержащий его оператор SELECT будет

Изменение приоритета

При указании параметра HIGH_PRIORITY содержащий его оператор SELECT будет иметь более высокий

приоритет, чем команда обновления таблицы
Слайд 10

Работа с дублями Параметры (опции) DISTINCT, DISTINCTROW и ALL указывают, должны

Работа с дублями

Параметры (опции) DISTINCT, DISTINCTROW и ALL указывают, должны ли

возвращаться дублирующиеся записи
ALL – возвращаются все встречающиеся строки
DISTINCT и DISTINCTROW – являются синонимами и указывают, что дублирующиеся строки в результирующем наборе данных должны быть удалены
Слайд 11

Выбор столбцов Выражение select_expression задает участвующие в выборке столбцы Может принимать

Выбор столбцов

Выражение select_expression задает участвующие в выборке столбцы
Может принимать значения:
* – все столбцы
`tbl_name`.*

– все столбцы таблицы
`tbl_name`.`col_name` – столбец таблицы
`col_name` – столбец
‘abc’ – константа
1 + 1 – результат выражения
Слайд 12

выгрузка в файл INTO OUTFILE осуществляет запись выбранных строк в файл:

выгрузка в файл

INTO OUTFILE осуществляет запись выбранных строк в файл:
FIELDS TERMINATED BY

– задает разделитель между столбцами
OPTIONALLY ENCLOSED BY – задает экранирование для строковых значений
LINES TERMINATED BY – задает разделитель строк
INTO DUMPFILE запишет в файл только одну строку без разделителей
Слайд 13

FROM Выражение FROM table_references задает таблицы, из которых надлежит извлекать строки

FROM

Выражение FROM table_references задает таблицы, из которых надлежит извлекать строки
Если указано имя более

чем одной таблицы, следует выполнить объединение
Слайд 14

Условия В выражении WHERE указываются условия для выборки строк из таблиц(ы)

Условия

В выражении WHERE указываются условия для выборки строк из таблиц(ы)
Можно использовать любую из

функций, поддерживаемых в MySQL
Не может накладывать условия на столбцы, полученные путем применения агрегатных функций (AVG, SUM, COUNT, MAX, MIN)
Слайд 15

Группировка результатов Выражение GROUP BY группирует результаты выборки по заданным столбцам

Группировка результатов

Выражение GROUP BY группирует результаты выборки по заданным столбцам

Слайд 16

Having В выражении HAVING указываются условия для выборки строк из таблиц(ы)

Having

В выражении HAVING указываются условия для выборки строк из таблиц(ы)
Можно использовать любую из

функций, поддерживаемых в MySQL
Накладывает условия на столбцы, полученные путем применения агрегатных функций (AVG, SUM, COUNT, MAX, MIN)
Слайд 17

Сортировка Выражение ORDER BY сортирует результат выполнения запроса по указанным столбцам

Сортировка

Выражение ORDER BY сортирует результат выполнения запроса по указанным столбцам
ASC –

прямая сортировка
DESC – обратная сортировка
Слайд 18

Ограничение на выборку Выражение LIMIT используется для ограничения количества строк, возвращенных

Ограничение на выборку

Выражение LIMIT используется для ограничения количества строк, возвращенных командой SELECT
LIMIT принимает один

или два числовых аргумента
начало первой возвращаемой строки
количество возвращаемых строк
Аргументы должны быть целочисленными константами
Слайд 19

Пример SELECT `teacher_surname`, `teacher_name` INTO OUTFILE 'C:\\2.txt' FIELDS TERMINATED BY ','

Пример

SELECT `teacher_surname`, `teacher_name` INTO OUTFILE 'C:\\2.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY

'“' LINES TERMINATED BY "\n" FROM `teacher` WHERE `teacher_id` IS NOT NULL GROUP BY `teacher_id` ORDER BY `teacher_surname` ASC LIMIT 0, 5
Слайд 20

Внутреннее объединение таблиц Для создания внутреннего соединения между таблицами, необходимо в

Внутреннее объединение таблиц

Для создания внутреннего соединения между таблицами, необходимо в блоке

WHERE указать через «=» столбцы по которым будут объединяться таблицы
При указании условия название столбца пишется после названия таблицы, в которой этот столбец находится (через точку)
`tab_1`.`col_id` = `tab_2`.`col_id`
Слайд 21

явное объединение таблиц Для создания явной связки между таблицами используется оператор

явное объединение таблиц

Для создания явной связки между таблицами используется оператор JOIN
Операция

соединения предназначена для обеспечения выборки данных из двух таблиц и включения этих данных в один результирующий набор
При необходимости соединения не двух, а нескольких таблиц, операция соединения применяется несколько раз (последовательно)
Слайд 22

Отличительные особенности в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов),

Отличительные особенности

в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов), то

есть схема результата является «сцеплением» схем операндов
каждая строка таблицы-результата является «сцеплением» строки из одной таблицы-операнда со строкой второй таблицы-операнда
Слайд 23

Виды оператора JOIN Выделяют 4 вида оператора JOIN: INNER JOIN –

Виды оператора JOIN

Выделяют 4 вида оператора JOIN:
INNER JOIN – симметричное соединение

таблиц
RIGHT JOIN – правостороннее соединение таблиц
LEFT JOIN – левостороннее соединение таблиц
CROSS JOIN – симметричное соединение таблиц по принципу каждый с каждым
Слайд 24

Таблицы

Таблицы

Слайд 25

INNER JOIN SELECT * FROM Person INNER JOIN City ON Person.CityId = City.Id

INNER JOIN

SELECT *
FROM Person
INNER JOIN
City ON Person.CityId = City.Id

Слайд 26

LEFT JOIN SELECT * FROM Person -- Левая таблица LEFT OUTER

LEFT JOIN

SELECT *
FROM Person -- Левая таблица
LEFT OUTER JOIN City

-- Правая таблица
ON Person.CityId = City.Id
Слайд 27

RIGHT JOIN SELECT * FROM Person -- Левая таблица RIGHT OUTER

RIGHT JOIN

SELECT *
FROM Person -- Левая таблица
RIGHT OUTER JOIN

City -- Правая таблица
ON Person.CityId = City.Id
Слайд 28

CROSS JOIN SELECT * FROM Person CROSS JOIN City ИЛИ SELECT * FROM Person, City

CROSS JOIN

SELECT *
FROM Person
CROSS JOIN City
ИЛИ
SELECT *
FROM Person, City