русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

OFFICES.SALES и SALESREPS.SALES


Дата добавления: 2013-12-24; просмотров: 768; Нарушение авторских прав


ПОЛНЫЕ ИМЕНА СТОЛБЦОВ

В учебной базе данных имеется несколько случаев, когда две таблицы содержат столбцы с одинаковыми именами. Например, столбцы с именем sales имеются в таблицах offices и salesreps. В столбце sales таблицы offices содержится объем продаж на текущую дату года для каждого офиса; в аналогичном столбце таблицы salesreps содержится объем продаж на текущую дату года для каждого служащего. Обычно с этими двумя столбцами затруднений не возникает, поскольку в предложении from задается соответствующая таблица, как в следующих примерах:

Хотя в формулировке запроса на естественном языке подразумевается столбец sales из таблицы salesreps, созданный запрос SQL является неоднозначным. Чтобы исключить разночтения, при указании столбцов необходимо использовать их полные имена. Полное имя столбца содержит имя столбца и имя таблицы, в которой он находится. Полные имена двух столбцов sales в учебной базе данных будут такими:

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

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

ЧТЕНИЕ ВСЕХ СТОЛБЦОВ

Оператор select * используется для чтения всех столбцов таблицы, указанной в предложении from. В многотабличном запросе звездочка означает выбор всех столбцов из всех таблиц, указанных в предложении from. Например, таблица результатов следующего запроса состоит из пятнадцати столбцов (девять столбцов из таблицы salesreps и следом за ними шесть столбцов из таблицы offices):



Очевидно, что оператор select * становится гораздо менее практичным, когда в предложении from указаны две, три или более таблицы.

Многие диалекты SQL трактуют звездочку как особый вид универсального имени столбца, которое распространяется на все столбцы. В этих диалектах звездочка наряду с именем таблицы используется вместо списка полных имен столбцов. В следующем запросе имя salesreps . * означает список имен всех столбцов таблицы salesreps:

Таблица результатов запроса будет иметь одиннадцать столбцов — девять столбцов таблицы salesreps и следом за ними два столбца таблицы offices, указанных явно. Хотя такой тип "полных имен всех столбцов" поддерживается многими СУБД, он не допускается стандартом ANSI/ISO.

29. САМООБЪЕДИНЕНИЯ

Некоторые многотабличные запросы используют отношения, существующие внутри одной из таблиц. Предположим, например, что требуется вывести список имен всех служащих и их руководителей. Каждому служащему соответствует одна строка в таблице salesreps, а столбец manager содержит идентификатор служащего, являющегося руководителем. Столбцу manager следовало бы быть внешним ключом для таблицы, в которой хранятся данные о руководителях. И он им, фактически, является — это внешний ключ для самой таблицы salesreps!

Если бы вы попытались создать этот запрос как любой другой запрос к двум таблицам с отношением "первичный ключ — внешний ключ", то он выглядел бы так:

Этот оператор select является неправильным из-за двойной ссылки на таблицу salesreps в предложении from. Вы могли бы попробовать убрать вторую ссылку на таблицу salesreps:

Такой запрос будет правильным, но он не сделает того, что вам нужно. Это однотабличный запрос, поэтому SQL поочередно просматривает все строки таблицы salesreps, чтобы найти те, которые удовлетворяют условию поиска:



<== предыдущая лекция | следующая лекция ==>
НЕСКОЛЬКО СВЯЗАННЫХ СТОЛБЦОВ | ВНУТРЕННИЕ ОБЪЕДИНЕНИЯ В СТАНДАРТЕ SQL2


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.095 сек.