Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по бд.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.79 Mб
Скачать

Деление

Деление представлено знаком "/" (косой чертой).

Пример________________________________Значение_______

SELECT SALARY /10                Значение SALARY делится на 10

FROM EMPLOYEE_PAY_TBL;

SELECT SALARY FROM EMPLOYEE_PAY_TBL    Выбор строк, для которых значение

WHERE SALARY / 10 > '40000';                                 SALARY, деленное на 10, превышает 40000

Комбинирование арифметических операций

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

Порядок выполнения операций (приоритет операций) задает порядок, в котором обрабатываются выражения в математических выражениях или встроенных функциях SQL.

Выражение___________Результат___________

1 + 1*5                                 6 

(1 + 1) * 5                           10 

10-4/2+1                              9 

(10 - 4) / (2 + 1)                   2

В следующих примерах использование скобок не влияет на результат, поскольку используется только умножение и деление. Эти операции имеют одинаковые приоритеты. Маловероятно, чтобы нашлась какая-нибудь реализация SQL, не следующая в этом вопросе стандартам ANSI, но в принципе такое возможно.

Выражение___________Результат_________

4*6/2                                      12 

(4 * 6) / 2                               12 

4 * (6 / 2)                               12

Вот еще несколько примеров.

SELECT SALARY * 10 + 1000 FROM EMPLOYEE_PAY_TBL WHERE SALARY > 20000;

SELECT SALARY / 52 + BONUS FROM EMPLOYEE_PAY_TBL;

SELECT (SALARY - 1000 + BONUS) / 52 * 1.1 FROM EMPLOYEE_PAY_TBL;

Следующий пример выглядит весьма странно с точки зрения его смысла.

SELECT SALARY FROM EMPLOYEE_PAY_TBL WHERE SALARY < BONUS *3+10/2-50;

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

При использовании в выражении нескольких арифметических операций учитывайте порядок выполнения арифметических операций, поскольку неправильно расставленные скобки обычно приводят к неправильным результатам

Резюме

Вы ознакомились с примерами использования различного типа операций в SQL. Вы узнали, что операции могут использоваться по отдельности и в комбинации одна с другой, включая и операции конъюнкции и дизъюнкции AND и OR. Вы рассмотрели основные арифметические операции – сложение, вычитание, умножение и деление. Операции сравнения используются для проверки равенства, неравенства, отношений «больше» и «меньше». К логическим операциям относятся BETWEEN, IN, LIKE, EXIST, ANY и ALL. Вы уже должны знать, как добавить элементы в условия, заданные в операторах SQL, чтобы извлечь из базы данных именно те данные, которые вам нужны.

Вопросы и ответы

Можно ли иметь несколько ключевых слов AND в выражении, заданном ключевым словом WHERE?

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

SELECT SALARY FROM EMPLOYEE_PAY_TBL WHERE SALARY > 20000 AND BONUS BETWEEN 1000 AND 3000 AND POSITION = 'VICE PRESIDENT';

Что будет, если в выражении ключевого слова WHERE поместить некоторое значение типа NUMBER в кавычки?

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

  Практикум

  Тесты

1. Верно ли следующее утверждение: "При использовании ключевого слова OR оба условия должны возвращать TRUE?"

2. Верно ли следующее утверждение: "При использовании ключевого слова IN данное значение должно совпадать со всеми указанными в списке?"

3. Верно ли следующее утверждение: "Ключевое слово AND можно использовать в выражениях ключевых слов SELECT и WHERE?"

4. Какие ошибки (если они есть вообще) допущены в следующих операторах SELECT?

  1. SELECT SALARY FROM EMPLOYEE_PAY_TBL WHERE SALARY BETWEEN 20000, 30000;

  2. SELECT SALARY + DATE_HIRE FROM EMPLOYEE_PAY_TBL;

  3. SELECT SALARY, BONUS FROM EMPLOYEE_PAY_TBL WHERE DATE_HIRE BETWEEN 22-SEP-99 AND 23-NOV-99 AND POSITION = 'ПРОДАЖА' OR POSITION = 'МАРКЕТИНГ' AND EMPLOYEE_ID LIKE '%55%;

  Упражнения

  1. Рассмотрите таблицу CUSTOMER_TBL.

Запишите оператор SELECT, возвращающий коды клиентов (CUST_ID) и их имена (CUST_NAME), отсортированные по алфавиту, для клиентов с именами на "А" и "В", проживающих в штатах Индиана, Огайо, Мичиган и Иллинойс.

  1. Рассмотрите таблицу PRODUCTS_TBL.

Запишите оператор SELECT, возвращающий коды товара (PROD_ID), описание товара (PROD_DESC) и цену товара (COST). Ограничьте цену товара диапазоном от $1.00 до $12.50.