Обмен технологиями

Управление базой данных DBA. Внутреннее соединение. Внешняя ссылка.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

внутреннее соединение

Объединение нескольких таблиц во временную таблицу с помощью ссылок

выбрать имя заголовка из имени таблицы 1, имя внутренней таблицы соединения 2;

выбрать * из сотрудников внутренние присоединиться отделы

выбрать имя заголовка из имени таблицы 1, имя таблицы внутреннего соединения 2 при условии связи;

выбрать * из employees внутреннее соединение отделов по employees.dept_id = departments.dept_id;
Во временной новой таблице ее можно обработать следующим образом

выбрать имя заголовка из имени таблицы 1, имя внутренней таблицы 2 при условии связи [где | упорядочить по | | ограничить |

Эквивалентная ссылка: предполагается, что существует заголовок, в котором хранятся те же данные, что и в ссылке.

выбрать * из employees внутреннее соединение отделов по employees.dept_id = departments.dept_id;

После определения псевдонима вы должны использовать псевдоним для представления имени таблицы.

  1. выберите e.*, d.dept_name
  2. из сотрудников как e внутреннее соединение отделов как d по e.dept_id=d.dept_id;

Запросить общую зарплату каждого сотрудника в 2018 году

select name ,sum(basic+bonus) as total from employees inner join salary on employees.employee_id = salary.employee_id where year(date)=2018 group by name;

select salary.employee_id ,sum(basic+bonus) as total from employees inner join salary on employees.employee_id = salary.employee_id  where year(date)=2018 group by employee_id having total > 300000 order by total desc ,employee_id asc;查询2018年总工资大于30万的员工,按2018年总工资降序排列

Неэквивалентная ссылка: в таблице нет заголовка, в котором хранятся одни и те же данные.

выберите employee_id, basic, garde из salary внутреннее соединение wage_grade по salary.basic между wage_grade.low и wage_grade.high, где year(date)=2018 и month(date)=12;
Запрос базовой зарплаты сотрудника в декабре 2018 года

выберите garde в качестве уровня, count(employee_id) в качестве общего количества людей из зарплаты, внутреннего соединения pay_grade на pay.basic между pay_grade.low и pay_grade.high, где год (дата) = 2018 и месяц (дата) = 12, группировка по запросу garde; 2018 Численность сотрудников с базовым окладом в декабре

Пример объединения 3 таблиц

выберите имя, базовый, графство из сотрудников внутреннее соединение зарплата по employees.employee_id = salary.employee_id внутреннее соединение wage_grade по salary.basic между wage_grade.low и wage_grade.high, где год (дата) = 2018 и месяц (дата) = 12;

Запрос внешней ссылки

Внешние ссылки сравнивают различия между двумя таблицами

Левая ссылка использует данные из левой таблицы и данные из правой таблицы для сравнения. Выходной результат показывает все данные в заголовке левой таблицы.

Справа отображаются только строки, соответствующие ссылке.

выбрать имя заголовка из имени таблицы 1, оставить имя таблицы jion 2 при условии связи;

выбрать имя заголовка из имени таблицы 1, оставить имя таблицы jion 2 при условии ссылки · [где |группировать по|, имея |

выберите dept_name, имя из отделов слева, присоедините сотрудников к departments.dept_id=employees.dept_id, где имя равно null;
 

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

Справа отображаются только строки, соответствующие ссылке.

выбрать имя заголовка из имени таблицы 1 правильное имя таблицы jion 2 при условии ссылки · [где | группировать по | с ограничением |

mysql> выберите dept_name,name из отделов как d справа, присоедините сотрудников как e к d.dept_id=e.dept_id, где dept_name равно null;

обновить сотрудников, задать dept_id=11, где name="bob";

Полный запрос ссылки

Объедините строки, запрошенные несколькими командами выбора. Для нескольких запросов выбора количество заголовков таблиц должно быть постоянным.

Вывод повторяющихся строк удален.

mysql> (выберите дату, макс(базовый) как значение из зарплаты, где дата=20180110)union(выберите дату, мин(базовый) из зарплаты, где дата=20180110);

(команда выбора запроса) объединение (команда выбора запроса);

Вывод без дедупликации

выбрать команду запроса) объединить все (выбрать команду запроса);

Вложенный запрос

команда выбора запроса содержит команду выбора запроса

Группировка вложенных запросов после того, где

выберите имя заголовка из библиотеки.таблица, где символ определения имени заголовка (выберите команду запроса)

выберите employee_id,date,basic,bonus из salary, где year(date)=2018 и month(date)=12 и basic > (выберите basic из salary, где year(date)=2018 и month(date)=12 и employee_id=100);


После наличия вложенных запросов используйте результаты запроса в () в качестве условий фильтра.

выберите имя заголовка из библиотеки.таблица, имеющая символ определения имени заголовка (команда выбора запроса)

выберите dept_id, count(name) как общее количество сотрудников, сгруппированных по dept_id

имея всего < (

выберите количество(имя) из сотрудников, где dept_id=(

выберите dept_id из отделов, где dept_name='Отдел разработки')

Вложите запрос после from и используйте результаты запроса () в виде таблицы.

выбрать имя заголовка из (выбрать результат запроса) в качестве имени временной таблицы, где будет выполнено условие фильтра;

выберите employee_id,name,email,dept_name из (выберите d.dept_name,e.* из departments как d, внутреннее соединение employees как e с d.dept_id=e.dept_id) как tmp_table, где dept_id=3;

Вложенный запрос после выбора

выберите имя заголовка (выберите команду запроса) в качестве имени заголовка из библиотеки.таблица, где находится условие фильтра;

выберите d.* ,(выберите количество(имя)из сотрудников как e, где d.dept_id=e.dept_id)как vumen из отделов как d;