Мартин Грубер - Понимание SQL
- Название:Понимание SQL
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Мартин Грубер - Понимание SQL краткое содержание
Данная книга является очень хорошим введением в теорию реляционных БД для пользователей-новичков, а также хорошим началом в освоении SQL, грамотном построение запросов, понимании того как эти запросы работают. Безусловно рекомендуется к прочтению для начинающих пользователей.
Понимание SQL - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Таблица 7.2: Вставка символов в ваш вывод
Обратите внимание что пробел перед процентом вставляется как часть строки. Эта же самая особенность может использоваться чтобы маркировать вывод вместе с вставляемыми комментариями. Вы должны помнить, что этот же самый комментарий будет напечатан в каждой строке вывода, а не просто один раз для всей таблицы. Предположим что вы генерируете вывод для отчета который бы указывал число порядков получаемых в течение каждого дня. Вы можете промаркировать ваш вывод (см. Таблицу 7.3 ) сформировав запрос следующим образом:
SELECT ' For ', odate, ', there are ',
COUNT (DISTINCT onum ), 'orders.'
FROM Orders
GROUP BY odate;
Грамматической некорректности вывода, на 5 Октября, невозможно избежать не создав запроса, еще более сложного чем этот. (Вы будете должны использовать два запроса с UNION, который
SELECT 'For', odate, ', ' there are ' ,
COUNT (DISTINCT onum), ' orders '
FROM Orders GROUP BY odate;
odate |
||||
For |
10/03/1990 , |
there are |
5 |
orders. |
For |
10/04/1990 , |
there are |
2 |
orders. |
For |
10/05/1990 , |
there are |
1 |
orders. |
For |
10/06/1990 , |
there are |
2 |
orders. |
Таблица 7.3: Комбинация текста, значений поля, и агрегатов
мы будем описывать в Главе 14. ) Как вы можете видеть, одиночный неизменный комментарий для каждой строки таблицы может быть очень полезен, но имеет ограничения. Иногда изящнее и полезнее, произвести один ком ментарий для всего вывода в целом, или производить свой собственный комментарии для каждой строки.
Различные программы использующие SQL часто обеспечивают специальные средства типа генератора отчетов( например Report Writer), которые разработаны чтобы форматировать и совершенствовать вывод. Вложенный SQL может также эксплуатировать возможности того языка в который он вложен. SQL сам по себе интересен прежде всего при операциях с данными. Вывод, по существу, это информация, и программа использующая SQL может часто использовать эту информацию и помещать ее в более привлекательную форму. Это, однако, вне сферы самой SQL.
Как мы подчеркивали, таблицы - это неупорядоченные наборы данных, и данные которе выходят из их, не обязательно появляются в какой-то определенной последовательности. SQL использует команду ORDER BY чтобы позволять вам упорядочивать ваш вывод. Эта команда упорядочивает вывод запроса согласно значениям в том или ином количестве выбранных столбцов. Многочисленые столбцы упорядочиваются один внутри другого, также как с GROUP BY, и вы можете определять возрастание (ASC ) или убывание (DESC ) для каждого столбца. По умолчанию установлено - возростание. Давайте рассмотрим нашу таблицу порядка приводимую в порядок с помощью номера заказчика (обратите внимание на значения в cnum столбце):
SELECT *
FROM Orders
ORDER BY cnum DESC;
Вывод показывается в Рисунке 7.4.
SELECT * FROM Orders ORDER BY cnum DESC;
onum |
amt |
odate |
cnum |
snum |
3001 |
18.69 |
10/03/1990 |
2008 |
1007 |
3006 |
1098.16 |
10/03/1990 |
2008 |
1007 |
3002 |
1900.10 |
10/03/1990 |
2007 |
1004 |
3008 |
4723.00 |
10/05/1990 |
2006 |
1001 |
3011 |
9891.88 |
10/06/1990 |
2006 |
1001 |
3007 |
75.75 |
10/04/1990 |
2004 |
1002 |
3010 |
1309.95 |
10/06/1990 |
2004 |
1002 |
3005 |
5160.45 |
10/03/1990 |
2003 |
1002 |
3009 |
1713.23 |
10/04/1990 |
2002 |
1003 |
3003 |
767.19 |
10/03/1990 |
2001 |
1001 |
Таблица 7. 4: Упорядочение вывода с помощью убывания поля
Мы можем также упорядочивать таблицу с помощью другого столбца, например с помощью поля amt, внутри упорядочения поля cnum. (вывод показан в Таблице 7.5 ):
SELECT *
FROM Orders
ORDER BY cnum DESC, amt DESC;
SELECT * FROM Orders
ORDER BY cnum DESC, amt DESC;
onum |
amt |
odate |
cnum |
snum |
3006 |
1098.16 |
10/03/1990 |
2008 |
1007 |
3001 |
18.69 |
10/03/1990 |
2008 |
1007 |
3002 |
1900.10 |
10/03/1990 |
2007 |
1004 |
3011 |
9891.88 |
10/06/1990 |
2006 |
1001 |
3008 |
4723.00 |
10/05/1990 |
2006 |
1001 |
3010 |
1309.95 |
10/06/1990 |
2004 |
1002 |
3007 |
75.75 |
10/04/1990 |
2004 |
1002 |
3005 |
5160.45 |
10/03/1990 |
2003 |
1002 |
3009 |
1713.23 |
10/04/1990 |
2002 |
1003 |
3003 |
767.19 |
10/03/1990 |
2001 |
1001 |
Таблица 7.5: Упорядочение вывода с помощью многочисленых полей
Вы можете использовать ORDER BY таким же способом сразу с любым числом столбцов. Обратите внимание что, во всех случаях, столбцы которые упорядочиваются должны быть указаны в выборе SELECT. Это - требование ANSI которые в большинстве, но не всегда, предписано системе. Следующая команда, например, будет запрещена:
SELECT cname, city
FROM Customers
GROUP BY cnum;
Так как поле cnum не было выбранным полем, GROUP BY не cможет найти его чтобы использовать для упорядочения вывода. Даже если ваша система позволяет это, смысл упорядочения не будет понятен из вывода, так что включение (в предложение SELECT) всех столбцов, используемых в предложении ORDER BY, в принципе желательно.
ORDER BY может кроме того, использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY всегда приходит последним. Вот - пример из последней главы с добавлением предложения ORDER BY. Перед сгруппированием вывода, порядок групп был произвольным; и мы, теперь, заставим группы размещаться в последовательности:
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate
GROUP BY snum;
Вывод показывается в Таблице 7.6.
SELECT snum, odate, MAX (amt) FROM Orders
GROUP BY snum, odate ORDER BY snum ;
snum |
odate |
amt |
1001 |
10/06/1990 |
767.19 |
1001 |
10/05/1990 |
4723.00 |
1001 |
10/05/1990 |
9891.88 |
1002 |
10/06/1990 |
5160.45 |
1002 |
10/04/1990 |
75.75 |
1002 |
10/03/1990 |
1309.95 |
1003 |
10/04/1990 |
1713.23 |
1004 |
10/03/1990 |
1900.10 |
1007 |
10/03/1990 |
1098.16 |
Таблица 7.6: Упорядочение с помощью группы
Читать дальшеИнтервал:
Закладка: