Программирование >>  Руководство по sql 

1 ... 70 71 72 [ 73 ] 74 75 76 ... 105


Глава и

Разрешение проблем

КАК ИСПОЛЬЗОВАТЬ SQL В СВОЕЙ РАБОТЕ

По большому счету, все, что вы знаете об SQL, полезно только в той мере, в какой эти знания помогают вам в выполнении вашей конкретной работы. SQL - это инструмент бизнеса.

Основная задача предыдущих глав заключалась в том, чтобы ознакомить вас с возможностями SQL. Теперь же настало время узнать, как SQL используется на практике - для выполнения конкретной работы. Большая часть материала для этой главы была собрана на основе дискуссий (иногда горячих!) в Internet. Пользователи, у которых возникали те или иные вопросы по SQL, забрасывали их в Internet, часто сопровождая свои вопросы примерами кодов и какими-то дополнительными описаниями, в которых содержались просьбы о помощи. Те, кто мог хоть чем-то помочь, охотно откликались на такие просьбы, дополняли предьщущие ответы (или категорически не соглашались с ними) и время от времени высмеивали отправителей этих вопросов за то, что те даже не потрудились как следует обдумать возникшую проблему.

Вот из этих-то вопросов и ответов мы составили перечень самых распространенных тем. Определенные вопросы (например, как форматировать результаты) возникали снова и снова. Стала очевидной настоятельная потребность в своего рода книге кулинарных рецептов , которая содержала бы примеры кодов и давала, таким образом, ответы на самые распространенные вопросы.

В настоящей книге описываются обобщенные или промышленные версии SQL, а не какие-то конкретные их реализации. Однако если уж мы решили давать рецепты кодов , от которых будет хоть какая-то практическая польза, нам волей-неволей придется вдаваться в конкретные детали, не говоря уж о том, что любые такие рецепты желательно протестировать. Transact-SQL (Sybase) - это диалект SQL, с которым мы знакомы лучше всего. Именно поэтому мы решили воспользоваться им в своих примерах, проверив их как на Sybase SQL Server, так и на SQL Anywhere. Если же вы используете какую-то другую систему баз данных, вам может понадобиться модифицировать кое-какие рецепты из нашей кулинарной книги . Тем не менее мы старались избегать вопросов, слишком уж привязанных к Sybase (хранимая процедура или код триггера).

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

Другими словами, эта глава представляет собой собрание небольших фрагментов максимально обобщенного кода SQL. Каждый из них основывается на реальном вопросе, который встречался в Internet. Проблемы и решения были адаптированы для работы с уже известным вам примером базы данных bookbiz- Ничего ужасно трудного вы здесь не встретите. Тем не менее вы встретите здесь много такого, обо что сломали зубы многие типичные пользователи. В конце концов, мы руководствовались допущением: если у кого-то возникла такая проблема, то она вполне может возникнуть и у вас.

Итак, пользуйтесь этой главой как книгой кулинарных рецептов по SQL, но постарайтесь внести в этот процесс хоть какой-то элемент собственного творчест-



ва: находя интересные рецепты, не забудьте добавить в свое блюдо какие-нибудь специи, которые помогут улучшить его вкус. Вот обший перечень обсуждаемых тем.

Форматирование и отображение данных.

Поиск данных (в основном по шаблонам).

Использование сложных объединений и подзапросов.

Работа с предложением GROUP BY.

Создание последовательных номеров.

ФОРМАТИРОВАНИЕ И ОТОБРАЖЕНИЕ ДАННЫХ

Вид, в котором вы сохраняете данные, не всегда наилучшим образом подходит для их отображения. Если совместно с вашей базой данных работают какие-либо прикладные программы (например, генераторы отчетов), они могут выполнять все необходимое вам форматирование. Иногда, однако, имеет смысл воспользоваться строковыми, числовыми и функциями даты, которые реализуют в своих продуктах большинство разработчиков баз данных. Многие из них стали частью стандарта ANSI SQL в 1992 г.

Но не забывайте; SQL - это не средство отображения! SQL предназначен для поиска данных, а вовсе не для того, чтобы представить их на экране в каком-нибудь вычурном формате. Если некоторые рецепты, приведенные в этом разделе, покажутся вам несколько сложными, так это потому, что они такие и есть.

В этом разделе вы встретите коды, которые позволяют выполнять следующее.

Отображать одно поле в виде двух.

Выравнивать строку символов по правому краю.

Задавать число разрядов после десятичной точки.

Отображение одного поля в виде двух

Иногда данные, хранящиеся в базе данных в виде одного поля, представляются пользователям более осмысленными, если их представить в виде двух и более отдельных полей. Это утверждение особенно справедливо, когда такое поле состоит из разнотипных данных, как иногда бывает в некоторых составных полях идентификации (например, код страхования здоровья может состоять из хорошо знакомого девятизначного номера социального страхования плюс алфавитный код компании или географический код).

В таблице titles поле titlejd очень напоминает описанную выше ситуацию. Оно содержит шесть символов; две буквы, за которыми следуют четыре цифры. Вот пример соответствующих данных (предложение WHERE служит для ограничения количества возвращаемых данных);

SQL:

select title id

from titles

where price > $19.99

Результат: title id

PC8888 PC1035 TC3218 PS1372



Чтобы отобразить буквенную часть поля отдельно от его численной части, в операторе SELECT можно воспользоваться строковой функцией. После того как данные примут вид, который вам требуется, создайте курсор. Это даст возможность пользователям видеть разделенные поля вместо составных.

Прежде всего с помощью строковой функции SUBSTRING, которая возвращает часть символьной или двоичной строки, надо определить две части поля. Эта функция имеет следующий синтаксис:

SUBSTRING(выражение, начало, конец)

Вы можете познакомиться с тем, как работает функция SUBSTRING, выполнив оператор SELECT для поля titleid и присваивая каждому фрагменту этого поля новое имя;

SQL:

select substring(title id, 1, 2) as alpha, substring(title id, 3, 4) as num from titles where price > $19.99

Результат:

alpha num

PC 8888

PC 1035

TC 3218

PS 1372

A теперь скройте эту работу от пользователей, создав соответствующий курсор. При выполнении запросов они не будут даже подозревать о том, что alpha и пит фактически являются частями поля titlejd. Оператор CREATE VIEW выглядит следующим образом (как и в предыдущем случае, предложение WHERE включается лищь для того, чтобы Офаничить число возвращаемых сфок):

SQL:

create view split as

select substring(title id, 1, 2) as alpha, substring(title id, 3, 4) as num from titles where price > $19.99

После того как вы аннулируете разрещение пользоваться таблицей titles и предоставите права на использование данного курсора, пользователи смогут увидеть указанные два поля, использовав следующий запрос:

SQL:

select * from split

Результат:

alpha num

PC 8888

PC 1035

TC 3218

PS 1372



1 ... 70 71 72 [ 73 ] 74 75 76 ... 105

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика