SQL | Подзапрос

Опубликовано: 30 Ноября, 2021

В SQL подзапрос можно просто определить как запрос внутри другого запроса. Другими словами, мы можем сказать, что подзапрос - это запрос, который встроен в предложение WHERE другого SQL-запроса.

Важные правила для подзапросов:

  • Подзапрос можно поместить в несколько предложений SQL: предложение WHERE, предложение HAVING, предложение FROM.
    Подзапросы могут использоваться с операторами SELECT, UPDATE, INSERT, DELETE вместе с оператором выражения. Это может быть оператор равенства или оператор сравнения, например =,>, =, <= и оператор Like.
  • Подзапрос - это запрос внутри другого запроса. Внешний запрос называется основным запросом, а внутренний запрос - подзапросом .
  • Подзапрос обычно выполняется первым, а его выходные данные используются для выполнения условия запроса для основного или внешнего запроса.
  • Подзапрос должен быть заключен в круглые скобки.
  • Подзапросы находятся справа от оператора сравнения.
  • Команда ORDER BY не может использоваться в подзапросе. Команда GROUPBY может использоваться для выполнения той же функции, что и команда ORDER BY.
  • Используйте однострочные операторы с однострочными подзапросами. Используйте многострочные операторы с многострочными подзапросами.

Синтаксис:
Для подзапросов нет общего синтаксиса. Тем не менее, подзапросы чаще всего используются с оператором SELECT, как показано ниже:

ВЫБЕРИТЕ имя_столбца
FROM table_name
Оператор выражения WHERE column_name 
    (ВЫБЕРИТЕ COLUMN_NAME из TABLE_NAME WHERE ...);

Образец таблицы :

БАЗА ДАННЫХ

НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР
Баран 101 Ченнаи 9988775566
Радж 102 Коимбатур 8877665544
Саси 103 Мадурай 7766553344
Рави 104 Салем 8989898989
Сумати 105 Канчипурам 8989856868

УЧЕНИК

НАЗВАНИЕ ROLL_NO РАЗДЕЛ
Рави 104 А
Сумати 105 B
Радж 102 А

Примеры запросов

:

  • Чтобы отобразить NAME, LOCATION, PHONE_NUMBER студентов из таблицы DATABASE, раздел A
    Выберите NAME, LOCATION, PHONE_NUMBER из DATABASE 
    ГДЕ ROLL_NO IN
    (ВЫБЕРИТЕ ROLL_NO из СТУДЕНТА, где РАЗДЕЛ = 'A'); 
    

    Объяснение: Первый подзапрос выполняет «SELECT ROLL_NO from STUDENT, где SECTION = 'A'» возвращает ROLL_NO из таблицы STUDENT, чей SECTION равен «A». Затем внешний запрос выполняет его и возвращает NAME, LOCATION, PHONE_NUMBER из таблицы DATABASE студента. ROLL_NO которого возвращается из внутреннего подзапроса.
    Выход:

    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР
    Рави 104 Салем 8989898989
    Радж 102 Коимбатур 8877665544
  • Вставить пример запроса:

    Таблица1: Студент1

    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР

    Баран 101 ченнаи 9988773344
    Раджу 102 Коимбатур 9090909090
    Рави 103 Салем 8989898989

    Таблица2: Студент2



    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР

    Радж 111 ченнаи 8787878787
    Сай 112 мумбаи 6565656565
    Шри 113 Коимбатур 7878787878

    Чтобы вставить Student2 в таблицу Student1:

    ВСТАВИТЬ В Студент1 ВЫБРАТЬ * ОТ Студента2;
    

    Выход:

    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР

    Баран 101 ченнаи 9988773344
    Раджу 102 Коимбатур 9090909090
    Рави 103 Салем 8989898989
    Радж 111 ченнаи 8787878787
    Сай 112 мумбаи 6565656565
    Шри 113 Коимбатур 7878787878
  • Чтобы удалить студентов из таблицы Student2, чье rollno такое же, как и в таблице Student1, и расположение как ченнаи
    УДАЛИТЬ ИЗ Student2 
    ГДЕ ROLL_NO IN (ВЫБРАТЬ ROLL_NO 
                       ОТ Student1 
                       ГДЕ РАСПОЛОЖЕНИЕ = 'chennai');
    

    Выход:

    1 строка удалена успешно.
    

    Отобразить таблицу Student2:

    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР

    Сай 112 мумбаи 6565656565
    Шри 113 Коимбатур 7878787878
  • Чтобы обновить имена студентов до компьютерных фанатов в таблице Student2, расположение которой такое же, как Raju, Ravi в таблице Student1
    ОБНОВЛЕНИЕ Student2 
    НАБОР НАЗВАНИЯ = "гики" 
    ГДЕ РАСПОЛОЖЕНИЕ (ВЫБЕРИТЕ РАСПОЛОЖЕНИЕ 
                        ОТ Student1 
                        ГДЕ ИМЯ В ('Раджу', 'Рави'));
    

    Выход:

    1 строка успешно обновлена.
    

    Отобразить таблицу Student2:

    НАЗВАНИЕ ROLL_NO МЕСТО РАСПОЛОЖЕНИЯ ТЕЛЕФОННЫЙ НОМЕР

    Сай 112 мумбаи 6565656565
    выродки 113 Коимбатур 7878787878

Эта статья предоставлена Ранджани Рави . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

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

SQL