KnigaRead.com/

W Cat - SQL за 24 часа

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн W Cat, "SQL за 24 часа" бесплатно, без регистрации.
Перейти на страницу:

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

Порядок выполнения операций (приоритет операций) задает порядок, в котором обрабатываются выражения в математических выражениях или встроенных функциях 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?

а. SELECT SALARY

FROM EMPLOYEE_PAY_TBL

WHERE SALARY BETWEEN 20000, 30000;

6. SELECT SALARY + DATE_HIRE FROM EMPLOYEE_PAYJTBL;

B. 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. Рассмотрите следующую таблицу CUSTOMERJTBL.

DESCRIBE CUSTQMER_TBL

Имя NULL? Тип

CUST_ID NOT NULL VARCHAR2(10)

CUST_NAME NOT NULL VARCHAR2(30)

CUST_ADDRESS NOT NULL VARCHAR2(20)

CUST_CITY NOT NULL VARCHAR2(12)

CUST_STATE NOT NULL CHAR(2)

CUST_ZIP NOT NULL CHAR(5)

CUST_PHONE NUMBER(10)

CUST_FAX NUMBER(10)

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

2. Рассмотрите следующую таблицу PRODUCTSJTBL.

DESCRIBE PRODUCTS_TBL

Имя NULL? Тип

PROD_ID NOT NULL VARCHAR2(10)

PROD_DESC NOT NULL VARCHAR2(25)

COST NOT NULL NUMBER(6,2)

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


9-й час Подведение итогов по данным запроса


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

Основными на этом уроке будут следующие темы.

• Что такое функции?

• Использование функций

• Когда следует использовать функции?

• Использование итоговых функций

• Суммирование данных с помощью итоговых функций

• Результаты использования функций


Что такое итоговые функции?

Функции в SQL представляются ключевыми словами и используются для математических преобразований данных в столбце с целью соответствующего представления данных при выводе. Функция - это команда, всегда используемая в связи с именем столбца или выражением. В SQL имеется несколько типов функций. В ходе этого урока мы рассмотрим итоговые функции. Итоговая функция - это функция, используемая в операторе SQL для получения итоговой информации типа общего числа строк, сумм или среднего значения.

В ходе этого урока мы обсудим следующие итоговые функции.

• COUNT

• SUM

• MAX

• MIN

• AVG

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

SELECT *

FROM PRODUCTS_TBL;

PROD_ID PROD_DESC COST

11235 КОСТЮМ ВЕДЬМЫ 29.99

222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1

90 ФОНАРИ 14.5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

9 СЛАДКАЯ КУКУРУЗА 1.35

6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45

87 ПЛАСТИКОВЫЕ ПАУКИ 1.05

119 МАСКИ В АССОРТИМЕНТЕ 4.95

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95

2345 ПОЛОМКА ИЗ ДУБА 59.99

11 строк выбраны.

Как видно из следующего запроса, не все служащие имеют номера пейджеров.

SELECT EMP_ID, LAST_NAME, FIRST_NAME, PAGER

FROM EMPLOYEE_TBL;

EKP_ID LAST_NAME FIRST_NAME PAGER

311549902 STEPHENS TINA

4423468b9 PLEW LINDA

213764555 GLASS BRANDON 3175709980

313782439 GLASS JACOB 8887345678

220984332 WALLACE MARIAH

443679012 SPURGEON TIFFANY

6 строк выбраны.


Функция COUNT

Функция COUNT используется для подсчета строк или значений в столбце, отличных от значения NULL При использовании в запросах функция COUNT возвращает числовое значение. При использовании с опцией DISTINCT функция COUNT посчитает только разные строки (т. е строки без учета повторений). По умолчанию используется опция ALL (противоположность DISTINCT), поэтому указывать ALL не обязательно Повторяющиеся значения считаются, когда DISTINCT не указано Другой опцией функции COUNT является звездочка (*) При использовании со звездочкой функция COUNT возвращает число всех строк в таблице, без исключения повторяющихся, не обращая внимания на возможно имеющиеся в столбце значения NULL

Синтаксис оператора функции COUNT следующий

COUNT [ (*) | (DISTINCT | ALL) J (имя_столбца)

Команда DISTINCT не используется с COUNT(*), а используется только с COUNT(имя_столбца)


Пример_______________________________Значение____________________

SELECT COUNT (EMP_ID) Подсчет числа табельных номеров всех слу-

FROM EMPLOYEE__PAY_TBL; жащих

SELECT COUNT (DISTINCT SALARY) Подсчет только разных строк

FROM EMPLOYEE_PAY_TBL;

SELECT COUNT (ALL SALARY; Подсчет всех строк для SALARY

FROM EMPLOYEE_PAY_TBL;

SELECT COUNT (*) Подсчет всех строк таблицы EMPLOYEE_TBL

FROM EMPLOYEE_TBL;

В следующем примере COUNT (*) используется для подсчета всех записей в таблице EMPLOYEE_TBL. В ней оказывается 6 строк с данными о служащих.

SELECT COUNT(*)

FROM EMPLOYEE_TBL;

COUNT (*)

---------

6

В следующем примере используется COUNT iEMP_ID), чтобы подсчитать число всех табельных номеров служащих в таблице Результат совпадает с результатом предыдущего запроса, поскольку каждый из служащих имеет свой табельный номер

SELECT COUNT(EMP_ID)

FROM EMPLOYEE_TBL;

COUNT(EMP_ID)

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

6

В следующем примере используется COUNT (PAGER) , чтобы подсчитать число всех служащих, имеющих номера пейджеров. Имеется только два таких служащих

SELECT COUNT(PAGER)

FROM EMPLOYEEJTBL;

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*