Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ключевые атрибуты. Виды. Назначение. Методология использования ключей для реализации связей в базе данных






Ключевые атрибуты — это атрибуты, благодаря которым осуществляется связь

между таблицами. А не ключевые атрибуты — это элементы, которые не

связаны с другими таблицами БД.

Ключевые атрибуты могут быть двух различных типов: основные и неосновные.

Основные ключевые атрибуты всегда находятся над разделительной линией; они

являются определяющими атрибутами (идентификаторами) данного объекта.

Если атрибут является ключевым, но не относится к идентификаторам, то он

находится под разделительной линией. Такой ключевой атрибут называется

неосновным.

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

внешним ключом.

ПРИ НЕИДЕНТИФИЦИРУЮЩЕЙ СВЯЗИ первичный ключ родителя, помещает не

над разделительной чертой как при идентифицирующей, а под, т.е. в список

атрибутов не относящихся к первичному ключу и с пометкой FK – foreign (внешний

ключ).

Язык SQL: Использование подзапросов в SELECT, INSERT, UPDATE, DELETE

Подзапрос в языке SQL— это запрос, содержащийся в выражении ключевого слова WHERE другого запроса с целью дополнительных ограничений на выводимые данные. Подзапросы называют также вложенными запросами. Подзапрос в содержащем его запросе используют для наложения условий на выводимые данные. Подзапросы могут использоваться с операторами SELECT, INSERT, UPDATE или DELETE.

В некоторых случаях подзапрос можно использовать вместо связывания таблиц, тем самым связывая данные таблиц неявно. При использовании в запросе подзапроса сначала выполняется подзапрос, а только потом — содержащий его запрос, причем с учетом условий выполнения подзапроса. Результаты выполнения подзапроса используются при обработке условий в выражении ключевого слова WHERE основного запроса Подзапрос можно использовать либо в выражении ключевого слова WHERE, либо в выражении ключевого слова HAVING главного запроса. Логические операции и операции сравнения типа =, >, <, < >, IN, NOT IN, AND, OR и т п. можно использовать как в подзапросе, так и для обработки результатов подзапроса в выражениях ключевых слов WHERE и HAVING.

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

При составлении подзапросов необходимо придерживаться следующих правил.

  • Подзапрос необходимо заключить в круглые скобки.
  • Подзапрос может ссылаться только на один столбец в выражении своего ключевого слова SELECT, за исключением случаев, когда в главном запросе используется сравнение с несколькими столбцами из подзапроса.
  • Ключевое слово ORDER BY использовать в подзапросе нельзя, хотя в главном запросе ORDER BY использоваться может. Вместо ORDER BY в подзапросе можно использовать GROUP BY.
  • Подзапрос, возвращающий несколько строк данных, можно использовать только в операторах, допускающих множество значений, например в IN.
  • В списке ключевого слова SELECT не допускаются ссылки на значения типа BLOB, ARRAY, CLOB или NCLOB.
  • Подзапрос нельзя непосредственно использовать как аргумент допускающей множество значений функции.
  • Операцию BETWEEN по отношению к подзапросу использовать нельзя, но ее можно использовать в самом подзапросе.

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

SELECT < имя_столбиа >

FROM < таблица >

WHERE < имя_столбца > = (SELECT < имя_столбца > FROM < таблица > WHERE < условия >);

Пример 1

SELECT E.EMP_ID, E.LAST_NAME, E.FIRST_NAME, EP.PAY_RATE

FROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EP

WHERE E.EMP_ID = EP.EMP_ID

AND E.PAY_RATE > (SELECT PAY_RATE

FROM EMPLOYEE_PAY_TBL

WHERE E.EMP_ID = '313782439');

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

Подзапросы часто используются тогда, когда в запросе требуется указать условия, точных данных для которых нет.

Подзапросы могут использоваться и с операторами языка манипуляций данными (DML).

Синтаксис оператора INSERT c подзапросом:

INSERT INTO < таблица> [ (< столбец1> [, < столбец2> ]) ]

SELECT [ * | < столбец1> [, < столбец2> ]]

FROM < таблица1> [, < таблица2> ]

[ WHERE < условие> ]

Синтаксис оператора UPDATE c подзапросом:

UPDATE < таблица>

SET < столбец1> [, < столбец2> ] =

(SELECT < столбец1> [, < столбец2> ] FROM < таблица>

[ WHERE < условие> ])

Синтаксис оператора DELETE c подзапросом:

DELETE FROM < таблица>

WHERE < условие>

(SELECT < столбец>

FROM < таблица>

[ WHERE < условие> ])

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

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

При использовании в операторе нескольких подзапросов увеличивается время, необходимое для обработки запроса, и повышается вероятность ошибок из-за усложнения оператора.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал