Главная страница
Навигация по странице:

  • WHERE

  • [NOT] EXISTS (SELECT…FROM…WHERE…)

  • Реляционные операторы

  • Специальные реляционные операторы

  • Функция NVL.

  • LISTAGG

  • Основы SQL. Основы sql основы sql план курса План курса


    Скачать 1.14 Mb.
    НазваниеОсновы sql основы sql план курса План курса
    АнкорKzkzkzals
    Дата21.09.2022
    Размер1.14 Mb.
    Формат файлаpptx
    Имя файлаОсновы SQL.pptx
    ТипДокументы
    #688650
    страница6 из 9
    1   2   3   4   5   6   7   8   9

    WHERE имя_поля1 IN (SELECT имя_поля2 FROM имя_табл2 WHERE условие)

    Коррелируемым подзапросом называется подзапрос, который содержит ссылку на столбцы таблицы внешнего запроса.

    WHERE имя_поля1 in (SELECT имя_поля2 FROM имя_табл2

    WHERE имя_табл1.поле= имя_табл2.поле)

    select s.aircraft_code, seat_no, fare_conditions

    from seats s

    where s.aircraft_code in (select a.aircraft_code

    from aircrafts_data a

    where upper(a.model) like 'BO%')

    order by s.aircraft_code, seat_no, fare_conditions

    ! Перепишите данный запрос используя простое соединение таблиц.

    select a.airport_code as code, a.airport_name, a.city

    from airports_data a

    where a.city in (select aa.city

    from airports_data aa

    group by aa.city

    having count(*) > 1

    order by a.city, a.airport_code;

    select *

    from lanit.flights t

    where trunc(t.date_departure)=to_date('01.09.2017','dd.mm.yyyy')

    and (select a.range

    from aircrafts_data a

    where a.aircraft_code=t.aircraft_code)>8000

    order by t.date_departure

    В языке SQL предикат с квантором существования представляется выражением вида:

    [NOT] EXISTS (SELECT…FROM…WHERE…),

    которое следует за фразой WHERE. Такое выражение считается истинным, если подзапрос возвращает непустое множество (существует хотя бы 1 строка, которую возвращает подзапрос). На практике подзапрос всегда будет коррелированным.

    select a.*

    from aircrafts_data a

    where exists (select 1 from flights f

    where f.aircraft_code=a.aircraft_code

    and trunc(f.date_departure)='01.09.2017')

    ! Показать данные по самолетам, у которых нет рейсов 01.09.2017

    ! Показать данные по самолетам, у которых есть рейсы 01.09.2017 и в которых больше 150 мест

    Синтаксис многократного сравнения: проверяемое_выражение  = | <> | < | <= | > | >=  ANY | ALL вложенный_запрос

    from ticket_flights tf

    and tf.amount > all (select t_tf.amount

    from ticket_flights t_tf

    from ticket_flights tf

    and tf.amount = any (select t_tf.amount from ticket_flights t_tf

    Реляционные операторы

    Реляционные операторы

    Теоретико-множественные операторы:

      • Декартово произведение Cross join
      • Объединение Union
      • Пересечение Intersect
      • Разность Minus
      • Специальные реляционные операторы:

      • Выборка where
      • Соединение inner join, outer join
      • Существование exists

    Оператор CASE

    Оператор CASE

    Оператор CASE имеет функциональность IF-THEN-ELSE и используется в SQL предложении

    CASE WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 … WHEN condition_n THEN result_n

    ELSE result

    END

    select t.ticket_no

    , t.passenger_name

    , case when t.email is not null then t.email

    else t.phone

    end contact

    from bookings b

    DECODE( выражение, значение 1, результат 1 [, значение N , результат N]… [, иначе результат] )

    Вывести cписок аэропортов по условию

    select decode(upper(city)

    , 'MOSCOW', city||' '||airport_name

    , 'NALCHIK', city

    , airport_name

    ) name

    , city

    , airport_name

    from lanit.airports_data;

    Функция NVL. позволяет заменить значение, когда встречается Null значение.

    NVL(строка, значение)

    select t.ticket_no

    , t.passenger_name

    , nvl(t.email, t.phone)

    end contact

    from bookings b

    Функция LISTAGG

    Функция LISTAGG

    Объединяет значения  «выражение» для каждой группы

    LISTAGG (выражение[, ‘разделитель’]) WITHIN GROUP (order_by колонка1..)

    Вывести данные о посадочных местах в самолетах

    select s2.aircraft_code

    , listagg (s2.fare_conditions ||'('||s2.num||')', ', ') within group (order by fare_conditions) fare_conditions

    from (

    select s.aircraft_code, s.fare_conditions

    , count(*) as num

    from seats s

    group by s.aircraft_code, s.fare_conditions

    1   2   3   4   5   6   7   8   9


    написать администратору сайта