255.98K
Категория: Базы данныхБазы данных

SQL. Часть 2

1.

SQL
Часть 2.

2.

Ограничение выборки
Запрос без дополнительных ключевых слов выбирает все строки из таблицы.
SELECT last_name, salary
FROM hr.employees;
...

3.

Ограничение выборки
С помощью ключевого слова WHERE мы может ограничивать выборку,
указав в запросе условие, которое должно выполняться для строк.
SELECT last_name, department_id
FROM hr.employees
where department_id = 90;

4.

Условия
После ключевого слова WHERE должно быть указано условие, проверяемое
для каждой выбираемой строки. Условие должно содержать в себе столбец,
по которому выполняется проверка, и оператор сравнения.
Операторы сравнения
=
равно
!=, <>
не равно
>
больше
between
поиск по диапазону
<
меньше
in
поиск по списку
>=
больше либо равно
like
поиск по шаблону
<=
меньше либо равно
is null
Поиск неопределенного

5.

Поиск по числовым столбцам
С числами чаще всего используются операторы равенства и неравенства.
SELECT last_name, salary
FROM hr.employees
where salary < 2500;

6.

Поиск по текстовым столбцам
В условиях по символьным данным не забывайте апострофы.
SELECT last_name, salary
FROM hr.employees
WHERE last_name = 'King';
Некоторые базы данных чувствительны к регистру символов
… WHERE last_name = 'king';

7.

Поиск по датам
При фильтрации по датам надо учитывать формат отображения даты.
При поиске по неравенству меньше считается более ранняя дата.
SELECT last_name, hire_date, salary
FROM hr.employees
where hire_date >= '01-FEB-08';
Более надежное обращение к дате:
to_date(‘01.02.2008’,’DD.MM.YYYY’)

8.

Условия и список выбираемых столбцов
Фильтровать данные можно по столбцу, не выводящемуся в выборке.
SELECT last_name, salary
FROM hr.employees
WHERE manager_id = 102;

9.

Логические операторы
При использовании нескольких условий применяются логические операторы,
чтобы указать как условия будут связаны между собой.
Существует три логических оператора:
NOT
НЕ
AND
И
OR
ИЛИ
Операторы перечислены по порядку исполнения.

10.

Оператор AND
Оператор AND требует, чтобы оба условия, слева и справа, были верны.
SELECT last_name, salary, department_id
FROM hr.employees
WHERE department_id = 80
AND salary >= 11000;

11.

Оператор OR
Оператор OR требует, чтобы одно из условий, слева и справа, было верно.
SELECT last_name, salary, department_id
FROM hr.employees
WHERE department_id = 80
OR salary >= 11000;
...
...

12.

Оператор NOT
Оператор NOT позволяет получить отрицание условия.
SELECT last_name, salary
FROM hr.employees
WHERE NOT salary < 15000;

13.

Сложные условия
При составление сложных условий надо помнить о порядке проверки
логических операторов.
SELECT last_name, job_id, salary
FROM hr.employees
WHERE salary > 10000
AND job_id = 'AD_PRES'
OR job_id = 'SA_REP';
...

14.

Порядок исполнения
Управлять порядком исполнения условий можно с помощью скобок.
SELECT last_name, job_id, salary
FROM hr.employees
WHERE salary > 10000
AND (job_id = 'AD_PRES'
OR job_id = 'SA_REP');

15.

Поиск по диапазон значений
Для поиска по диапазону значений применяется оператор BETWEEN AND
SELECT last_name, job_id, salary
FROM hr.employees
WHERE salary between 3500 and 4000;

16.

Поиск по списку
Для поиска по списку значений применяется оператор IN.
SELECT last_name, job_id, salary
FROM hr.employees
WHERE job_id in
('IT_PROG', 'AD_ASST');

17.

Поиск текста по шаблону
Для гибкого поиска строк применяется оператор LIKE с использованием
элементов шаблона % и _. % заменяет любое количество любых символов.
SELECT last_name, salary
FROM hr.employees
WHERE last_name like 'K%';

18.

Поиск текста по шаблону
_ заменяет ровно один символ.
SELECT last_name, salary
FROM hr.employees
WHERE last_name like '_m%';

19.

Неопределенное значение
Неопределенное значение (NULL) - значение, неизвестное на момент
добавления в таблицу.
С неопределенным значением не работают обычные операторы сравнения.
SELECT last_name, manager_id
FROM hr.employees
WHERE manager_id = NULL;

20.

Поиск неопределенного значения
Для поиска неопределенного значения применяется оператор IS NULL.
SELECT last_name, manager_id
FROM hr.employees
WHERE manager_id IS NULL;
Для поиска определенных строк применяется IS NOT NULL.
SELECT last_name, commission_pct
FROM hr.employees
WHERE commission_pct IS NOT NULL;
...

21.

Сортировка строк
При выполнении запроса сервер возвращает строки без порядка.
Для установки порядка строк применяется ключевое слово ORDER BY.
В этом ключевом слове можно задать название столбца.
SELECT last_name, salary
FROM hr.employees
WHERE department_id = 90
ORDER BY salary;

22.

Порядок сортировки
По умолчанию сортировка ведется в возрастающем порядке.
Для смены порядка сортировки применяется оператор DESC.
SELECT last_name, salary
FROM hr.employees
WHERE department_id = 90
ORDER BY salary DESC;

23.

Сортировка по нескольких столбцам
В ключевом слове ORDER BY можно указать несколько столбцов.
SELECT last_name, department_id, salary
FROM hr.employees
WHERE salary > 12000
ORDER BY department_id, salary DESC;

24.

Сортировка по выражению
Также можно применять сортировку по выражению.
SELECT last_name, department_id, salary
FROM hr.employees
WHERE salary > 12000
ORDER BY department_id * salary;
English     Русский Правила