Студопедия

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

Разделы сайта

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






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Ключевые атрибуты. Виды. Назначение. Методология использования ключей для реализации связей в базе данных






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

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

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

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

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

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

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

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

    неосновным.

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

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

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

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

    атрибутов не относящихся к первичному ключу и с пометкой 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 < условие> ])

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

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

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






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.