Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22.03.12 Проектирование клиент-серверных ИС.doc
Скачиваний:
2
Добавлен:
23.08.2019
Размер:
118.27 Кб
Скачать

Сравнение:

В языке SQL можно использовать следующие операторы сравнения: = – равенство; < – меньше; > – больше; <= – меньше или равно; >= – больше или равно; <> – не равно.

SELECT * FROM Сделка WHERE Количество>20

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

SELECT * FROM Сделка WHERE Количество>20

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

Вычисление выражения в условиях выполняется по следующим правилам:

  1. Выражение вычисляется слева направо.

  2. Первыми вычисляются подвыражения в скобках.

  3. Операторы NOT выполняются до выполнения операторов AND и OR.

  4. Операторы AND выполняются до выполнения операторов OR.

Для устранения любой возможной неоднозначности рекомендуется использовать скобки.

Выбрать все наименования на букву Ш.

SLECT i.*

FROM items i

Where (i.item >= ‘ш’) and (i.tem < ‘щ’)

При использовании логических операций нужно помнить что операция and имеет больший приоритет чем операция or. Поэтому там где это необходимо нужно использовать скобки для контролирования порядка выполнения операций

SELECT * FROM employee

WHERE salary >=10000 and salary <= 15000

Диапазон.

Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значения включаются в условие поиска.

SELECT * FROM employee

WHERE salary between 7000 and 15000

При использовании отрицания NOT BETWEEN требуется, чтобы проверяемое значение лежало вне границ заданного диапазона.

SELECT * FROM employee

WHERE salary not between 7000 and 15000

Что эквивалентно

SELECT * FROM employee

WHERE (salary < 10000) or (salary >= 15000)

13.03.12

Принадлежность множеству

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

SELECT * FROM employee WHERE IDPodr IN (3, 4)

NOT IN используется для отбора любых значений, кроме тех, которые указаны в представленном списке.

SELECT * FROM employee WHERE IDDolg NOT IN (11, 14)

Соответствие шаблону

С помощью оператора LIKE можно выполнять сравнение выражения с заданным шаблоном, в котором допускается использование символов-заменителей:

Символ % – вместо этого символа может быть подставлено 0 и больше произвольных символов.

Символ _ заменяет любой один символ строки.

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

[^] – вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях.

SELECT * FROM Employee WHERE LastName Like "И%"

SELECT * FROM Employee WHERE LastName Like "%в%"

SELECT * FROM Employee WHERE LastName Like "%ов

SELECT * FROM Employee WHERE LastName Like "__а%"

Значение NULL

Оператор IS NULL используется для сравнения текущего значения со значением NULL – специальным значением, указывающим на отсутствие любого значения. NULL – это не то же самое, что знак пробела (пробел – допустимый символ) или ноль (0 – допустимое число). NULL отличается и от строки нулевой длины (пустой строки).

Select * from employee

Where phone is null

IS NOT NULL используется для проверки присутствия значения в поле.

Select * from employee

Where phone is not null

Использование подзапросов

Вместо двух запросов часто используется один запрос с подзапросом. Пример.

Select employee.*

from employee

where

employee.iddep = (select id from department where department = ‘ОПиТО’)

Подзапросы всегда указываются в круглых скобках.

Условия используемые для подзапросов

  • IN - истина если значение поля содержится во множестве тех значений которые возвращает подзапрос.

  • При сравнении (>, >=, <, <=) с результатами подзапроса в происходит сравнение указанного поля с тем полем, которое возвращает подзапрос. Если подзапрос возвращает несколько записей то выполняется несколько сравнений. При этом нужно использовать следующие ключевые слова:

    • ALL - возвращает истину если результат всех сравнений с подзапросом истина

    • ANY or SOME - возвращает истину если результат хотя бы одного сравнения с подзапросом истина

EXISTS - определяет содержится ли значение хотя бы в одном значении возвращаемым подзапросом

1.

SELECT LAST_NAME, DEPT_NO FROM EMPLOYEE

WHERE SALARY IN

(SELECT SALARY FROM EMPLOYEE

WHERE DEPT_NO = 623);

2.

SELECT LAST_NAME, SALARY FROM EMPLOYEE

WHERE SALARY > ALL

(SELECT SALARY FROM EMPLOYEE

WHERE DEPT_NO = 623);

3.

SELECT LAST_NAME, SALARY FROM EMPLOYEE

WHERE SALARY > ANY

(SELECT SALARY FROM EMPLOYEE

WHERE DEPT_NO = 623);