![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ключевые атрибуты. Виды. Назначение. Методология использования ключей для реализации связей в базе данных
Ключевые атрибуты — это атрибуты, благодаря которым осуществляется связь между таблицами. А не ключевые атрибуты — это элементы, которые не связаны с другими таблицами БД. Ключевые атрибуты могут быть двух различных типов: основные и неосновные. Основные ключевые атрибуты всегда находятся над разделительной линией; они являются определяющими атрибутами (идентификаторами) данного объекта. Если атрибут является ключевым, но не относится к идентификаторам, то он находится под разделительной линией. Такой ключевой атрибут называется неосновным. Если элемент связан с ключевым атрибутом из другой таблицы, то он называется внешним ключом. ПРИ НЕИДЕНТИФИЦИРУЮЩЕЙ СВЯЗИ первичный ключ родителя, помещает не над разделительной чертой как при идентифицирующей, а под, т.е. в список атрибутов не относящихся к первичному ключу и с пометкой FK – foreign (внешний ключ). Язык SQL: Использование подзапросов в SELECT, INSERT, UPDATE, DELETE Подзапрос в языке SQL— это запрос, содержащийся в выражении ключевого слова WHERE другого запроса с целью дополнительных ограничений на выводимые данные. Подзапросы называют также вложенными запросами. Подзапрос в содержащем его запросе используют для наложения условий на выводимые данные. Подзапросы могут использоваться с операторами SELECT, INSERT, UPDATE или DELETE. В некоторых случаях подзапрос можно использовать вместо связывания таблиц, тем самым связывая данные таблиц неявно. При использовании в запросе подзапроса сначала выполняется подзапрос, а только потом — содержащий его запрос, причем с учетом условий выполнения подзапроса. Результаты выполнения подзапроса используются при обработке условий в выражении ключевого слова WHERE основного запроса Подзапрос можно использовать либо в выражении ключевого слова WHERE, либо в выражении ключевого слова HAVING главного запроса. Логические операции и операции сравнения типа =, >, <, < >, IN, NOT IN, AND, OR и т п. можно использовать как в подзапросе, так и для обработки результатов подзапроса в выражениях ключевых слов WHERE и HAVING. Все, что применимо к обычному запросу, применимо и к подзапросу Операции связывания, функции, преобразования данных и многое другое можно использовать и в подзапросах. При составлении подзапросов необходимо придерживаться следующих правил.
Базовый синтаксис оператора с подзапросом выглядит следующим образом: 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 < условие> ]) Точно так же, как подзапрос можно вложить в главный запрос, подзапрос можно вложить и в подзапрос. В главном запросе подзапрос выполняется до выполнения главного, точно так же и в подзапросе вложенный в него подзапрос будет выполнен первым По поводу имеющихся ограничений (если они есть вообще) на число вложений одних запросов в другие в рамках одного оператора обратитесь к документации по используемой вами реализации языка, поскольку такие ограничения для разных реализаций могут не совпадать При использовании в операторе нескольких подзапросов увеличивается время, необходимое для обработки запроса, и повышается вероятность ошибок из-за усложнения оператора.
|