ограничение количества выбираемых строк

advertisement
ВЫБОРКА ДАННЫХ ИЗ БАЗЫ
ДАННЫХ
ОГРАНИЧЕНИЕ КОЛИЧЕСТВА
ВЫБИРАЕМЫХ СТРОК
ОСНОВНОЙ БЛОК ЗАПРОСА
SELECT [DISTINCT] {*,column [alias],....}
FROM
table;


SELECT задает столбцы, подлежащие выборке.
FROM указывает, из какой таблицы
КОМАНДЫ SQL
• Команда может занимать одну или несколько строк
• Для удобства чтения команды можно использовать
табуляцию и отступы
• Сокращение и перенос слов запрещены
• Символы верхнего и нижнего регистров не
различаются
• Команды вводятся в буфер SQL
ВЫБОРКА ВСЕХ СТОЛБЦОВ И
СТРОК
Простейшая команда SELECT содержит два следующих
предложения:
 Предложение SELECT:
- Звездочка ( * ) обозначает все столбцы
 Предложение FROM.
SQL> SELECT *
2 FROM s dept;
ВЫБОРКА ВСЕХ СТОЛБЦОВ И ВСЕХ
СТРОК
SQL> SELECT *
2 FROM s_dept ;
ID
NAME
REGION_ID
--- ----------------------10
Finance
1
31
Sales
1
32
Sales
2
33
Sales
3
34
Sales
4
35
Sales
5
41
Operations
1
42
Operations
2
43
Operations
3
44
Operations
4
45
Operations
5
50
Administration 1
12 rows selected.
ВЫБОРКА ЗАДАННЫХ СТОЛБЦОВ
SQL> SELECT
dept_id, last_name, manager_id
2 FROM s_emp;



Перечислить столбцы в предложении SELECT
Разделить столбцы в списке запятыми
Указать столбцы в порядке, в котором они должны
появиться на выводе
МЕТКИ СТОЛБЦОВ ПО
УМОЛЧАНИЮ
Выравнивание метки по умолчанию:
• Слева: даты и символьные данные
• Справа: числовые данные
По умолчанию вывод меток производится в символах
верхнего регистра
АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ

Создание выражений для типов данных NUMBER и
DATE с помощью арифметических операторов
Сложение
+
Вычитание
Умножение
*
Деление
/
АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ
Вывод годовой зарплаты всех служащих.
SQL> SELECT last_name, salary * 12, commission_pct
2 FROM s_emp ;
LAST_NAME
--------------...
Havel
Magee
Giljum
Sedeghi
Nguyen
Dumas
Maduro
...
SALARY*12
-----------
15684
16800
17880
18180
18300
17400
16800
COMMISSION_PCT
-----------------10
12.5
10
15
17.5
ПОРЯДОК ВЫПОЛНЕНИЯ
ОПЕРАТОРОВ
• Умножение и деление выполняются до сложения и
вычитания
• Операторы, имеющие один и тот же приоритет,
выполняются по очереди слева направо
• Для изменения порядка вычислений и удобства
чтения выражений можно использовать скобки
ПСЕВДОНИМЫ СТОЛБЦОВ




Псевдоним столбца заменяет его заголовок
Особенно полезен при расчетах
Следует сразу за заголовком столбца
- Между заголовком и псевдонимом столбца может
находиться необязательное ключевое слово AS
Если псевдоним содержит пробелы и специальные
символы или если в нем различаются символы
верхнего и нижнего регистров, двойные кавычки
обязательны
ОПЕРАТОР КОНКАТЕНАЦИИ
Оператор конкатенации:
 Обозначается двойной вертикальной чертой (||)
 Соединяет столбцы или текстовые строки с другими
столбцами
 Создает столбец, являющийся символьным
выражением
ОПЕРАТОР КОНКАТЕНАЦИИ:
ПРИМЕР
Вывод имен и фамилий всех служащих под заголовком
"Employees"
SQL> SELECT
2 FROM
first_name||last_name AS «Employees»
s_emp;
Employees
-------------------------------CarmenVelasquez
LaDorisNgao
MidoriNagayama
MarkQuick-To-See
AudryRopeburn
MollyUrguhart
...
СТРОКА СИМВОЛОВ - ЛИТЕРАЛ



Литерал - это строка символов, выражение или
число, включенные в список SELECT
Символьные литералы и литералы-даты должны
быть заключены в апострофы
Каждая строка символов выводится по
одному разу для каждой возвращаемой строки
таблицы
СИМВОЛЬНАЯ СТРОКА: ПРИМЕР
SQL> SELECT first_name||’ ‘||last_name
2
||’, ’||title "Employees"
3 FROM s_emp;
Employees
-----------------------------------------Carmen Velasquez, President
LaDoris Ngao, VP,Operations
Midori Nagayama, VP,Sales
Mark Quick-To-See, VP,Finance
Audry Ropeburn, VP,Administration
Molly Urguhart, Warehouse Manager
...
ОБРАБОТКА
НЕОПРЕДЕЛЕННЫХ
ЗНАЧЕНИЙ



Неопределенным значением (NULL) называется
недоступное, неприсвоенное, неизвестное или
неприменимое значение
Неопределенное значение отличается от нуля и
пробела
Результатом арифметического выражения,
содержащего неопределенное значение, также
является неопределенное значение
SQL> SELECT last_name, title,
2 salary*commission_pct/100 COMM
3 FROM s_emp;
ФУНКЦИЯ NVL
Для преобразования неопределенного значения в
фактическое используется функция NVL
Синтаксис
NVL (выражение1, выражение2)
где: выражение1
исходное или вычисленное значение,
которое может быть неопределенным
выражение2
значение, которое подставляется вместо
неопределенного значения, по типу данных
должно совпадать с выражением1
Примечание: Функцию NVL можно применять для
преобразования любого типа данных, но
результат всегда будет того же типа,что и
выражение1
ФУНКЦИЯ NVL
Преобразование NULL в фактическое значение с
помощью функции NVL
• Используемые типы данных: дата, символьные и
числовые
• Типы данных должны совпадать:
NVL ( start_date, ’ 01- JAN - 95 ’ )
NVL ( title, ’ No Title Yet ’ )
NVL ( salary, 1000)
SQL> SELECT last_name, title,
2> salary*NVL(commission_pct,0)/100 COMM
3> FROM
s_emp;
ПРЕДОТВРАЩЕНИЕ ВЫБОРКИ
ДУБЛИКАТОВ СТРОК
Пример вывода всех строк
Вывод всех названий отделов из таблицы S_DEPT
SQL> SELECT name
2 FROM s_dept;
NAME
-----------------------Finance
Sales
Sales
Sales
Sales
Sales
Operations
...
12
rows
selected
КЛЮЧЕВОЕ СЛОВО DISTINCT
Пример вывода строк без дубликатов
Вывод всех неповторяющихся названий отделов из
таблицы S_DEPT.
SQL> SELECT DISTINCT name
2 FROM s_dept;
NAME
---------------------------Administration
Finance
Operations
Sales
ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО
СЛОВА DISTINCT ДЛЯ НЕСКОЛЬКИХ
СТОЛБЦОВ
•
Ключевое слово DISTINCT относится ко всем
столбцам в списке SELECT
SQL> SELECT DISTINCT dept_id, title
2 FROM s_emp;

Результат применения DISTINCT к нескольким
столбцам - вывод строк с неповторяющимися
комбинациями значений этих столбцов
СОРТИРОВКА СТРОК С
ПОМОЩЬЮ ПРЕДЛОЖЕНИЯ
ORDER BY
Порядок строк, возвращаемых в результате запроса, не
определен. Отсортировать строки можно с помощью
предложения ORDER BY. Для сортировки можно задать
выражение или позицию.
Синтаксис
SELECT выражение
FROM таблица
[ORDER BY
{столбец,
где:
ORDER BY
ASC
DESC
выражение}
[ASC|DESC]];
задает порядок вывода строк
сортирует строки в порядке
возрастания; используется по
умолчанию
сортирует строки в порядке убывания
ПРИМЕР
Вывод из таблицы S_EMP фамилии, номера отдела и
даты начала работы каждого служащего. Результат
сортируется по фамилиям
SQL> SELECT last_name, dept_id, start_date
2 FROM s_emp
3 ORDER BY last_name;
LAST_NAME
----------Biri
Catchpole
Chang
Danes
Dumas
Giljum
Havel
...
DEPT_ID
------43
44
44
45
35
32
45
START_DAT
---------07-APR-90
09-FEB-92
30-NOV-90
17-MAR-91
09-OCT-91
18-JAN-92
27-FEB-91
ПРЕДЛОЖЕНИЕ ORDER BY



По умолчанию - сортировка возрастающем порядке
Для сортировки в обратном порядке используется
слово DESC.
Возможна сортировка по выражениям или
псевдонимам.
SQL> SELECT last_name EMPLOYEE, start_date
2 FROM s_emp
3 ORDER BY EMPLOYEE DESC;

Место неопределенных значений:
- При сортировке по возрастанию - последние
- При сортировке по убыванию - первые.
СОРТИРОВКА ПО НЕСКОЛЬКИМ
СТОЛБЦАМ

Сортировка по позициям для экономии времени
SQL> SELECT last_name, salary * 12
2 FROM s_emp
3 ORDER BY 2;
SQL> SELECT last_name, dept_id, salary
2 FROM s_emp
3 ORDER BY dept_id, salary DESC;


Последовательность сортировки определяется
порядком столбцов в списке ORDER BY.
Сортировать можно и по столбцам, не входящим в
список SELECT.
ОГРАНИЧЕНИЕ КОЛИЧЕСТВА СТРОК
С ПОМОЩЬЮ ПРЕДЛОЖЕНИЯ
WHERE
Синтаксис
SELECT выражение
FROM
таблица
[WHERE условие]
[ORDER BY выражение];
------------------------------------------------------------------------------------WHERE
ограничивает запрос строками,
удовлетворяющими заданному условию
Условие
<выражение> <оператор> <выражение>
состоит из имен столбцов, выражений,
констант и операторов сравнения
СТРОКИ СИМВОЛОВ И ДАТЫ




Строки символов и даты заключаются в апострофы
Числовые значения в апострофы не
заключаются
В символьных значениях различаются символы
верхнего и нижнего регистров
Формат даты по умолчанию - "DD-MON-YY" (числомесяц-год)
SQL> SELECT first_name, last_name, title
2
FROM s_emp
3
WHERE last_name = 'Magee';
ОПЕРАТОРЫ СРАВНЕНИЯ И
ЛОГИЧЕСКИЕ
ОПЕРАТОРЫ
Логические операторы сравнения



= > >= < <=
Операторы сравнения SQL
- BETWEEN ... AND...
- IN (list)
- LIKE
- IS NULL
Логические операторы
- AND
- OR
- NOT
ОТРИЦАНИЕ ВЫРАЖЕНИЙ
Иногда проще исключить строки, которые явно
не требуются:
 Логические операторы
!= <> ^=
 Операторы SQL
- NOT BETWEEN
- NOT IN
- NOT LIKE
- IS NOT NULL
ОПЕРАТОРЫ BETWEEN И IN ЯЗЫКА
SQL

Оператор BETWEEN используется для проверки
вхождения значения в интервал значений (включая
границы интервала)
SQL> SELECT first_name, last_name, salary
2 FROM
s_emp
3 WHERE salary BETWEEN 1000 AND 2000;
•
Оператор IN используется для проверки
принадлежности значения к списку
SQL> SELECT id, name, region_id
2 FROM s_dept
3 WHERE region_id IN (1,3);
ОПЕРАТОР LIKE ЯЗЫКА SQL


Используется для поиска строковых значений с
помощью метасимволов (wildcards)
Условия для поиска могут содержать символьные
литералы или числа:
- «%» представляет произвольное количество
символов
- «_» представляет один символ
SQL> SELECT last_name
2 FROM s_emp
3 WHERE last_name LIKE 'M%';
ОПЕРАТОР IS NULL ЯЗЫКА SQL


Неопределенные значения проверяются с помощью
оператора IS NULL
Пользоваться оператором "=" не следует
SQL> SELECT id, name, credit_rating
2 FROM s_customer
3 WHERE sales_rep_id IS NULL;
ВЫБОРКА ПО НЕСКОЛЬКИМ
УСЛОВИЯ
• Использование сложных критериев
• Сочетание условий с помощью операторов AND и OR
• AND требует выполнения обоих условий
SQL>
2
3
4

SELECT last_name, salary, dept_id, title
FROM s_emp
WHERE dept_id = 41
AND title = ‘Stock Clerk’;
OR требует выполнения хотя бы одного из условий
SQL> SELECT last_name, salary, dept_id, title
2 FROM s_emp
3 WHERE dept_id = 41
4 OR title = 'Stock Clerk’;
ТАБЛИЦЫ ИСТИННОСТИ
Построение простого логического условия с оператором
сравнения
(TRUE - истинно, FALSE -ложно, NULL -неопределенное
значение)
AND
TRUE
FALSE
NULL
TRUE
TRUE
FALSE
NULL
NOT
TRUE
FALSE
NULL
FALSE
TRUE
NULL
FALSE
FALSE
FALSE
FALSE
NULL
NULL
FALSE
NULL
OR
TRUE
FALSE
NULL
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
NULL
NULL
TRUE
NULL
NULL
ПОРЯДОК ВЫПОЛНЕНИЕ
ОПЕРАЦИЙ
Стандартный порядок выполнения операций
отменяется скобками.
Порядок вычисления
1
2
3
Операторы
Все операторы сравнения,
операторы SQL
AND
OR
ПОРЯДОК ВЫПОЛНЕНИЕ
ОПЕРАЦИЙ:ПРИМЕРЫ.

Вывод информации о служащих отдела 44 с
зарплатой
1000 и более и обо всех служащих отдела 42
SQL>
2
3
4
5

SELECT last_name, salary, dept_id
FROM s_emp
WHERE salary >= 1000
AND dept_id = 44
OR dept_id = 42;
Вывод информации о всех служащих отделов 44 и 42,
зарплата которых составляет 1000 и более
SQL>
2
3
4
5
SELECT last_name, salary, dept_id
FROM s_emp
WHERE salary >= 1000
AND (dept_id = 44
OR dept_id = 42);
ЗАКЛЮЧЕНИЕ
SELECT
FROM
[WHERE
[ORDER
[DISTINCT]
{*, column [alias],
...}
table
condition(s)]
BY {column, expr, alias}[ASC|DESC]];
Download