- •Iso (международной организацией по
- •2 Понимание sql
- •Что такое - реляционная база данных?
- •Порядок строк произволен
- •4 Понимание sql ___________________________________________________________________
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •8 Понимание sql
- •************** Работа с sql **************
- •Sql : обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •14 Понимание sql
- •Субподразделения sql
- •16 Понимание sql
- •Sql несогласованности
- •Что такое - пользователь?
- •18 Понимание sql
- •Условия и терминология
- •************** Работа с sql **************
- •24 Понимание sql
- •26 Понимание sql
- •Переупорядочение столбца
- •28 Понимание sql
- •Параметры distinct
- •30 Понимание sql
- •32 Понимание sql
- •************* Работа с sql ***************
- •38 Понимание sql
- •40 Понимание sql
- •42 Понимание sql
- •44 Понимание sql
- •Использование специальных операторов в условиях
- •50 Понимание sql
- •52 Понимание sql
- •54 Понимание sql
- •56 Понимание sql
- •************** Работа с sql **************
- •Обобщение данных с помощью агрегатных функций
- •64 Понимание sql
- •66 Понимание sql
- •Включение дубликатов в агрегатные функции
- •Предложение group by
- •68 Понимание sql
- •Предложение having
- •70 Понимание sql
- •72 Понимание sql
- •************** Работа с sql **************
- •Формирование выводов запросов
- •Помещение текста в вашем выводе запроса
- •78 Понимание sql
- •80 Понимание sql
- •82 Понимание sql
- •Упорядочение вывода по номеру столбца
- •84 Понимание sql
- •************** Работа с sql **************
- •Запрашивание многочисленых таблиц также как одной
- •90 Понимание sql
- •92 Понимание sql
- •94 Понимание sql
- •************** Работа с sql **************
- •Объединение таблицы с собой
- •Псевдонимы
- •100 Понимание sql
- •Устранение избыточности
- •102 Понимание sql
- •Больше псевдонимов
- •104 Понимание sql
- •106 Понимание sql
- •************** Работа с sql **************
- •Вставка одного запроса внутрь другого
- •112 Понимание sql
- •114 Понимание sql
- •116 Понимание sql
- •In определяет набор значений, одно из которых должно совпадать с другим
- •118 Понимание sql
- •In является подходящим, если запрос может ограниченно производить одно
- •120 Понимание sql
- •122 Понимание sql
- •*************** Работа с sql *************
- •Соотнесенные подзапросы
- •130 Понимание sql
- •132 Понимание sql
- •Соотнесенные подзапросы в предложении having
- •134 Понимание sql
- •*************** Работа с sql *************
- •Использование оператора exists
- •140 Понимание sql
- •142 Понимание sql
- •144 Понимание sql
- •146 Понимание sql
- •************** Работа с sql **************
- •Использование оператора exists
- •152 Понимание sql
- •154 Понимание sql _____________________________________________________________________
- •156 Понимание sql
- •158 Понимание sql
- •160 Понимание sql
- •162 Понимание sql
- •Использование count вместо exists
- •166 Понимание sql
- •************** Работа с sql **************
44 Понимание sql
______________________________________________________________________
ГЛ. 4
Булевы и Реляционные операторы могут эффективно управляться с помощью
круглых скобок, которые определяют порядок, в котором операции будут
выполнены. Эти операции применимы к любому уровню сложности и вы
поняли как сложные условия могут создаваться из этих простых частей.
Теперь, когда мы показали как используются стандартные математические
операторы, мы можем перейти к операторам которые являются исключитель-
ными в SQL. Это мы сделаем в Главе 5.
ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ
ДЛЯ БОЛЕЕ ИЗОЩРЕННЫХ ПРЕДИКАТОВ 45
______________________________________________________________________
************** РАБОТА С SQL **************
1. Напишите запрос который может дать вам все порядки со значениями
суммы выше чем $1,000.
2. Напишите запрос который может выдать вам поля sname и city для всех
продавцов в Лондоне с комиссионными выше .10 .
3. Напишите запрос к таблице Заказчиков чей вывод может включить всех
заказчиков с оценкой =< 100, если они не находятся в Риме.
4. Что может быть выведено в результате следующего запроса ?
SELECT *
FROM Orders
WHERE (amt < 1000 OR
NOT (odate = 10/03/1990
AND cnum > 2003 ));
5. Что может быть выведено в результате следующего запроса ?
SELECT *
FROM Orders
WHERE NOT ((odate = 10/03/1990 OR snum > 1006)
AND amt > = 1500 );
6. Как можно проще переписать такой запрос ?
SELECT snum, sname, city, comm
FROM Salespeople
WHERE ( comm > + .12 OR
comm < .14 );
( См. Приложение A для ответов. )
5
Использование специальных операторов в условиях
48 ПОНИМАНИЕ SQL
_____________________________________________________________________
ГЛ. 5
В ДОПОЛНЕНИИ К РЕЛЯЦИОННЫМ И БУЛЕВСКИМ
операторам обсуждаемым в Главе 4, SQL использует специальные
операторы IN, BETWEEN, LIKE, и IS NULL. В этой главе, вы
узнаете как их использовать и как реляционные операторы позволяют
создавать более сложные и мощные предикаты.
Обсуждение оператора IS NULL будет включать отсутствие данных и
значение NULL, которое указывает на то: что данные отсутствуют.
Вы также узнаете о разновидностях использования оператора NOT
применяющегося с этими операторами.
============ ОПЕРАТОР IN ===============
Оператор IN определяет набор значений в которое данное значение может
или не может быть включено. В соответствии с нашей учебной базой данных
на которой вы обучаетесь по настоящее временя, если вы хотите найти
всех продавцов, которые размещены в Barcelona или в London, вы должны
использовать следующий запрос ( вывод показывается в Рисунке 5.1 ):
SELECT *
FROM Salespeople
WHERE city = 'Barcelona'
OR city = 'London';
Имеется и более простой способ получить ту же информацию:
SELECT *
FROM Salespeople
WHERE city IN ( 'Barcelona', 'London' );
Вывод для этого запроса показывается в Рисунке 5.2.
Как вы можете видеть, IN определяет набор значений с помощью имен
членов набора заключеных в круглые скобки и отделенных запятыми.
Он затем проверяет различные значения указанного поля пытаясь найти
совпадение со значениями из набора. Если это случается, то предикат
верен. Когда наборсодержит значения номеров а не символов, одиночные
кавычки опускаются. Давайте найдем всех заказчиков относящихся к
продавцам имеющих значения snum = 1001, 1007, и 1004. Вывод для
следующего запроса показан на Рисунке 5.3:
ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ ОПЕРАТОРОВ В УСЛОВИЯХ 49
______________________________________________________________________
SELECT *
FROM Customers
WHERE cnum IN ( 1001, 1007, 1004 );
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Salespeople |
| WHERE city = 'Barcelona' |
| OR city = 'London'; |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.12 |
| 1004 Motika London 0.11 |
| 1007 Rifkin Barcelona 0.15 |
| |
===============================================
Рисунок 5.1 Нахождение продавцов в Барселоне и Лондоне
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Salespeople |
| WHERE city IN ('Barcelona', 'London'; |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.12 |
| 1004 Motika London 0.11 |
| 1007 Rifkin Barcelona 0.15 |
| |
===============================================
Рисунок 5.2 SELECT использует IN