- •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 **************
32 Понимание sql
______________________________________________________________________
ГЛ. 3
=============== РЕЗЮМЕ ===============
Теперь вы знаете несколько способов заставить таблицу давать вам
ту информацию какую вы хотите, а не просто выбрасывать наружу все
ее содержание. Вы можете переупорядочивать столбцы таблицы или
устранять любую из них. Вы можете решать, хотите вы видеть дублиро-
ванные значения или нет.
Наиболее важно то, что вы можете устанавливать условие называемое
предикатом которое определяет или не определяет указанную строку
таблицы из тысяч таких же строк, будет ли она выбрана для вывода.
Предикаты могут становиться очень сложными, предоставляя вам высокую
точность в решении, какие строки вам выбирать с помощью запроса.
Именно эта способность решать точно, что вы хотите видеть, делает запросы
SQL такими мощными.
Следующие несколько глав будут посвещены, в большей мере, особенностям
которые расширяют мощность предикатов. В Главе 4, вам будут представлены
операторы иные чем те которые используются в условиях предиката, а также
способы объединения многочисленых условий в единый предикат.
ИСПОЛЬЗОВАНИЕ SQL ДЛЯ ИЗВЛЕЧЕНИЯ
ИНФОРМАЦИИ ИЗ ТАБЛИЦЫ 33
______________________________________________________________________
************* Работа с sql ***************
1. Напишите команду SELECT которая бы вывела номер порядка,
сумму, и дату для всех строк из таблицы Порядков.
2. Напишите запрос который вывел бы все строки из таблицы
Заказчиков для которых номер продавца = 1001.
3 Напишите запрос который вывел бы таблицу со столбцами в следующем
порядке: city, sname, snum, comm.
4. Напишите команду SELECT которая вывела бы оценку(rating),
сопровождаемую именем каждого заказчика в San Jose.
5. Напишите запрос который вывел бы значения snum всех продавцов
в текущем порядке из таблицы Порядков без каких бы то ни было
повторений.
( См. Приложение A для ответов. )
4
ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ ДЛЯ СОЗДАНИЯ БОЛЕЕ
ИЗОЩРЕННЫХ ПРЕДИКАТОВ
36 ПОНИМАНИЕ SQL
______________________________________________________________________
ГЛ. 4
В ГЛАВЕ 3, ВЫ УЗНАЛИ ЧТО ПРЕДИКАТЫ МОГУТ
оценивать равенство оператора как верного или неверного. Они могут
также оценивать другие виды связей кроме равенств. Эта глава будет
исследовать другие реляционные операторы используемые в SQL. Вы
также узнаете как использовать операторы Буля, чтобы изменять и
объединять значения предиката. С помощью операторов Буля (или проще
говоря логических операторов), одиночный предикат может содержать
любое число условий. Это позволяет вам создавать очень сложные
предикаты. Использование круглых скобок в структуре этих сложных
предикатов будет также объясняться.
========= РЕЛЯЦИОННЫЕ ОПЕРАТОРЫ =======
Реляционный оператор - математический символ который указывает на
определенный тип сравнения между двумя значениями. Вы уже видели как
используются равенства, такие как 2 + 3 = 5 или city = "London".
Но также имеются другие реляционные операторы. Предположим что вы
хотите видеть всех Продавцов с их комиссионными выше определенного
значения. Вы можете использовать тип сравнения "больше чем" - (>).
Реляционные операторы которыми распологает SQL :
= Равный к
> Больше чем
< Меньше чем
>= Больше чем или равно
<= Меньше чем или равно
<> Не равно
Эти операторы имеют стандартные значения для числовых значений.
Для значения символа, их определение зависит от формата преобразования,
ASCII или EBCDIC, который вы используете.
SQL сравнивает символьные значения в терминах основных номеров как
определено в формате преобразования. Даже значение символа, такого как
"1", который представляет номер, не обязательно равняется номеру который
он представляет. Вы можете использовать реляционные операторы чтобы
установить алфавитный порядок - например, "a" < "n" где средство a
первое в алфавитном порядке - но все это ограничивается с помощью
параметра преобразования формата.
ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ
ЧТОБЫ СОЗДАВАТЬ БОЛЕЕ СЛОЖНЫЕ ПРЕДИКАТЫ 37
______________________________________________________________________
И в ASCII и в EBCDIC, символы - по значению: меньше чем все другие
символы которым они предшествуют в алфавитном порядке и имеют один
вариант( верхний или нижний ). В ASCII, все символы верхнего регистра -
меньше чем все символы нижнего регистра, поэтому "Z" < "a", а все
номера - меньше чем все символы, поэтому "1" < "Z". То же относится и к
EBCDIC. Чтобы сохранить обсуждение более простым, мы допустим что вы
будете использовать текстовый формат ASCII. Проконсультируйтесь с вашей
документацией системы если вы неуверены какой формат вы используете
или как он работает.
Значения сравниваемые здесь называются - скалярными значениями.
Скалярные значения производяться скалярными выражениями; 1 + 2 -
это скалярное выражение которое производит скалярное значение 3.
Скалярное значение может быть символом или числом, хотя очевидно
что только номера используются с арифметическими операторами,
такими как +(плюс) или *(звезда).
Предикаты обычно сравнивают значения скалярных величин, используя
или реляционные операторы или специальные операторы SQL чтобы
увидеть верно ли это сравнение. Некоторые операторы SQL описаны в
Главе 5.
Предположим что вы хотите увидеть всех заказчиков с оценкой(rating)
выше 200. Так как 200 - это скалярное значение, как и значение в столбце
оценки, для их сравнения вы можете использовать реляционный оператор.
SELECT *
FROM Customers
WHERE rating > 200;
Вывод для этого запроса показывается в Рисунке 4.1.
Конечно, если бы мы захотели увидеть еще и заказчиков с оценкой
равной 200, мы стали бы использовать предикат
rating > = 200
========= БУЛЕВЫ ОПЕРАТОРЫ ===========
Основные Булевы операторы также распознаются в SQL. Выражения
Буля - являются или верными или неверными, подобно предикатам.
Булевы операторы связывают одно или более верных/неверных
значений и производят едиственное верное/или/неверное значение.
Стандартными операторами Буля распознаваемыми в SQL являются:
AND, OR, и NOT.