Шаг 5 - SELECT: углублённое изучение
Простой вывод и устранение дубликатов (DISTINCT)
Выбор конкретных столбцов:
SELECT emp_no, last_name
FROM employees
LIMIT 5;
Результат:
emp_no |
last_name |
|---|---|
10001 |
Facello |
10002 |
Simmel |
10003 |
Bamford |
10004 |
Koblick |
10005 |
Maliniak |
Устранение дубликатов с DISTINCT:
В таблице salaries много записей для каждого сотрудника. Для получения уникальных ID:
SELECT DISTINCT emp_no
FROM salaries
LIMIT 5;
Результат:
emp_no |
|---|
10001 |
10002 |
10003 |
10004 |
10005 |
Особенности DISTINCT: - Применяется ко всем выбираемым столбцам - Сохраняет строки, где хотя бы одно значение отличается - ALL (противоположность DISTINCT) используется редко
Условия выборки (WHERE)
Фильтрация по строковому полю:
SELECT emp_no, dept_no, from_date, to_date
FROM dept_emp
WHERE dept_no = 'd001'
LIMIT 3;
Результат:
emp_no |
dept_no |
from_date |
to_date |
|---|---|---|---|
10017 |
d001 |
1993-08-03 |
2000-08-03 |
10049 |
d001 |
1992-05-05 |
2000-05-05 |
10060 |
d001 |
1994-02-23 |
1997-01-31 |
Фильтрация по числовому полю:
SELECT DISTINCT emp_no
FROM salaries
WHERE salary > 60000
LIMIT 5;
Результат:
emp_no |
|---|
10001 |
10002 |
10004 |
10005 |
10006 |
Особенности MySQL:
Чувствительность к регистру (зависит от collation):
SELECT * FROM employees WHERE last_name = 'facello'; -- Может не сработать
SELECT * FROM employees WHERE last_name COLLATE utf8mb4_general_ci = 'facello'; -- Регистронезависимо