- •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 **************
54 Понимание sql
______________________________________________________________________
ГЛ. 5
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Customers |
| WHERE cname LIKE 'G'; |
| ============================================= |
| cnum cname city rating snum |
| ------ -------- ------ ---- ------ |
| 2002 Giovanni Rome 200 1003 |
| 2004 Grass Berlin 300 1002 |
| |
=============================================
Рисунок 5. 7: SELECT использует LIKE с %
LIKE может быть удобен если вы ищете имя или другое значение, и если
вы не помните как они точно пишутся. Предположим что вы неуверены как
записано по буквам имя одного из ваших продавцов Peal или Peel.
Вы можете просто использовать ту часть которую вы знаете и групповые
символы чтобы находить все возможные пары ( вывод этого запроса
показывается в Рисунке 5.8 ):
SELECT *
FROM Salespeople
WHERE sname LIKE 'P _ _ l %';
Групповые символы подчеркивания, каждый из которых представляет
один символ, добавят только два символа к уже существующим 'P' и 'l' ,
поэтому имя наподобии Prettel не может быть показано.
Групповой символ ' % ' - в конце строки необходим в большинстве
реализаций если длина поля sname больше чем число символов в имени
Peel ( потому что некоторые другие значения sname - длиннее чем
четыре символа ). В таком случае, значение поля sname , фактически
сохраняемое как имя Peel, сопровождается рядом пробелов.
Следовательно, символ 'l' не будет рассматриваться концом строки.
Групповой символ ' % ' - просто соответствует этим пробелам. Это
необязательно, если поля sname имеет тип - VARCHAR.
ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ ОПЕРАТОРОВ В УСЛОВИЯХ 55
______________________________________________________________________
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Salespeople |
| WHERE sname LIKE ' P 1% '; |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.12 |
| |
===============================================
Рисунок 5.8: SELECT использует LIKE с подчеркиванием (_)
А что же Вы будете делать если вам нужно искать знак процента или
знак подчеркивания в строке? В LIKE предикате, вы можете определить
любой одиночный символ как символ ESC. Символ ESC используется
сразу перед процентом или подчеркиванием в предикате, и означает
что процент или подчеркивание будет интерпретироваться как символ
а не как групповой символ. Например, мы могли бы найти наш sname
столбец где присутствует подчеркивание, следующим образом:
SELECT *
FROM Salespeople
WHERE sname LIKE '%/_%'ESCAPE'/';
С этими данными не будет никакого вывода, потому что мы не
включили никакого подчеркивания в имя нашего продавца. Предложение
ESCAPE определяет '/ ' как символ ESC. Символ ESC используемый
в LIKE строке, сопровождается знаком процента, знаком подчеркивания,
или знаком ESCAPE, который будет искаться в столбце, а не обрабатывать-
ся как групповой символ.
Символ ESC должен быть одиночным символом и применяться только к
одиночному символу сразу после него.