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

Страницы работы

Содержание работы

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

В предыдущей лекции мы рассмотрели основной блок запроса:

SELECT [DISTINCT] {*, столбец [псевдоним], …} FROM таблица;

Такой запрос всегда возвращает все строки таблицы. Если Вам надо ограничить количество выбираемых строк, необходимо использовать в запросе предложение WHERE. Предложение WHERE следует сразу же за предложением FROM и задает условие, которому должны соответствовать возвращаемые строки.

SELECT [DISTINCT] {*, столбец [псевдоним], …} FROM таблица [WHERE условие];

WHERE      предложение,  которое ограничивает возвращаемые строки

условие      состоит из столбцов, литералов, выражений и операторов сравнения (выражение оператор выражение)

Символьные строки и даты должны быть заключены в апострофы, числовые литералы – нет. Верхний и нижний регистры в символьных литералах различаются, это надо учитывать при составлении запроса.

SQL> SELECT ename, job, sal FROM emp WHERE job='CLERK';

ENAME      JOB             SAL

---------- --------- ---------

SMITH      CLERK           800

ADAMS      CLERK          1100

JAMES      CLERK           950

MILLER     CLERK          1300

SQL> SELECT ename, job, sal FROM emp WHERE job='clerk';

no rows selected

SQL> SELECT ename, job, sal, deptno FROM emp WHERE deptno=10;

ENAME      JOB              SAL     DEPTNO

---------- --------- ---------- ----------

CLARK      MANAGER         2450         10

KING       PRESIDENT       5000         10

MILLER     CLERK           1300         10

Операторы сравнения

Логические операторы сравнения

Оператор

Значение

=

Равно

Больше

>=

Больше или равно

Меньше

<=

Меньше или равно

<> 

Не равно

Операторы сравнения SQL

Оператор

Значение

BETWEEN … AND …

Между двумя значениями (включительно)

IN (список)

Совпадает со значением в списке

LIKE шаблон

Подобно заданному шаблону

IS NULL

Является неопределенным значением

Оператор сравнения BETWEEN

Оператор сравнения BETWEEN используется для вывода строк, содержащих значения из некоторого диапазона значений. Диапазон задается верхней и нижней границами, которые, также, входят в диапазон. Причем нижняя граница задается первой.

SQL> SELECT ename, job, sal FROM emp WHERE sal BETWEEN 1100 AND 2000;

ENAME       JOB              SAL

----------  --------- ----------

ALLEN       SALESMAN        1600

WARD        SALESMAN        1250

MARTIN      SALESMAN        1250

TURNER      SALESMAN        1500

ADAMS       CLERK           1100

MILLER      CLERK           1300

Оператор сравнения IN

Оператор сравнения IN используется для проверки, совпадает ли значение с каким-либо элементом списка. Если элементами списка являются символьные литералы и даты, их необходимо заключить в апострофы. Символы верхнего и нижнего регистров различаются.

SQL> SELECT ename, job, sal FROM emp WHERE sal IN (1100, 1250, 1600);

ENAME      JOB               SAL

---------- ---------  ----------

ALLEN      SALESMAN         1600

WARD       SALESMAN         1250

MARTIN     SALESMAN         1250

ADAMS      CLERK            1100

SQL> SELECT ename, job, sal FROM emp WHERE job IN ('clerk', 'SALESMAN');

ENAME      JOB               SAL

---------- ---------  ----------

ALLEN      SALESMAN         1600

WARD       SALESMAN         1250

MARTIN     SALESMAN         1250

TURNER     SALESMAN         1500

Оператор сравнения LIKE

Оператор сравнения LIKE позволяет искать строки, значения которых соответствуют заданному шаблону. Шаблон может содержать символьные литералы, числа или метасимволы (wildcards):

·  Процент (%)                     используется для представления любого количества символов (нуль и более)

  • Подчеркивание (_)         используется для представления любого одиночного символа

SQL> SELECT ename, job, sal FROM emp WHERE ename LIKE 'A%';

ENAME      JOB               SAL

---------- ---------  ----------

ALLEN      SALESMAN         1600

ADAMS      CLERK            1100

Для поиска самих метасимволов (процент и подчеркивание) используется опция ESCAPE, которая отменяет специальное значение метасимвола.

SQL> SELECT * FROM dept WHERE loc LIKE 'NEW\_%' ESCAPE '\';

      DEPTNO  DNAME            LOC

  ----------  --------------   -------------

          10  ACCOUNTING       NEW_YORK

Оператор сравнения IS NULL

Для сравнения с неопределенным значением всегда используйте оператор сравнения IS NULL или IS NOT NULL. При использовании других операторов (= или <>) результатом сравнения всегда будет ЛОЖЬ, т.к. неопределенное значение не может быть равно никакому значению, даже неопределенному.

SQL> SELECT empno, ename, sal, comm FROM emp WHERE comm IS NOT NULL;

       EMPNO  ENAME              SAL         COMM

------------  ----------  ----------   ----------

        7499  ALLEN             1600          300

        7521  WARD              1250          500

        7654  MARTIN            1250         1400

        7844  TURNER            1500            0

Выборка данных по нескольким условиям

Для создания сложных логических выражений используются логические операторы AND, OR, NOT.

§  AND - для объединения условий поиска, каждый из которых должен быть истинным

§  OR - для объединения условий поиска, из которых хотя бы один должен быть истинным

§  NOT - для выбора строк, в которых условие поиска ложно

SQL> SELECT ename, job, sal FROM emp WHERE sal>2800 AND job='MANAGER';

ENAME      JOB              SAL

---------- --------- ----------

JONES      MANAGER         2975

BLAKE      MANAGER         2850

SQL> SELECT ename, job, sal FROM emp WHERE sal>2800 OR job='MANAGER';

ENAME      JOB              SAL

---------- --------- ----------

JONES      MANAGER         2975

BLAKE      MANAGER         2850

CLARK      MANAGER         2450

SCOTT      ANALYST         3000

KING       PRESIDENT       5000

FORD       ANALYST         3000

Логические операторы можно сочетать в одном выражении, при этом порядок выполнения операций зависит от приоритета операторов:

1.  Сначала проверяются все операторы сравнения (=, >, >=, <, <=, <>, BETWEEN, IN, LIKE, IS NULL)

2.  Из логических операторов наивысший приоритет имеет оператор NOT

3.  Затем выполняется каждый оператор AND

4.  И, наконец, каждый оператор OR

Операторы с одинаковым приоритетом выполняются слева направо. Стандартный порядок выполнения операторов можно изменить с помощью скобок.

SQL> SELECT ename, job, sal FROM emp

  2  WHERE sal<2800 AND job='MANAGER' OR job='PRESIDENT';

ENAME      JOB              SAL

---------- --------- ----------

CLARK      MANAGER         2450

KING       PRESIDENT       5000

SQL> SELECT ename, job, sal FROM emp

  2  WHERE sal<2800 AND (job='MANAGER' OR job='PRESIDENT');

ENAME      JOB              SAL

---------- --------- ----------

CLARK      MANAGER         2450


Неопределенные значения влияют на результат как простых, так и составных условий поиска. В таблице приведены условия истинности для логических операций AND, OR, NOT с учетом влияния неопределенных значений.

TRUE

FALSE

NULL

AND

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

OR

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

NOT

FALSE

TRUE

NULL

Упорядочивание строк

Похожие материалы

Информация о работе