VR
Virtual Reality On-line   SQL
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Язык запросов SQL
Ещё несколько операторов
:

Продолжаем знакомится с операторами SQL упрощающих вывод данных из таблиц. Первое, с чем нам предстоит сегодня познакомится – оператор EXISTS . Это простая проверка на существование. Этот оператор относится к выражениям Буля.

Сразу рассмотрим пример:

 SELECT cnum, cname, city
 FROM User1
 WHERE EXISTS
    ( SELECT *
    FROM User2
    WHERE OC = “Unix” );
Анекдот:

Психиатоp задаёт вопpос пациенту:

- Hу-ка ну-ка, по-подpобнее, pасскажите, Как давно у вас появилось удовольствие от уплаты налогов? И почему в графе иждивенцы Вы написали - Государство ?

Подробнее

Если ты читал предыдущую статью, то наверно заметил здесь подзапрос. Обломися бабка, мы на пароходе. Это не подзапрос, потому что он выполняется только один раз. Внутренний запрос выбирает все записи, где ОС равна “Unix”. Оператор EXISTS проверяет, если был какой-то результат, то генерирует True, а значит выполниться условие EXISTS. После этого выполнится внешний запрос:

 SELECT cnum, cname, city
 FROM User1

Так как EXISTS Булев оператор, его можно использовать с другими Булями. Вот тебе пример с NOT:

 SELECT cnum, cname, city
 FROM User1
 WHERE EXISTS
    ( SELECT *
    FROM User2
    WHERE OC = “Unix” );

В этом случае внешний запрос выполниться только если внутренний не выведет ни одной строки.

Теперь нам предстоит познакомится с операторами ANY, SOME, и ALL. Первые два оператора абсолютно одинаковы. Оба они дают один и тот же результат, поэтому ты можешь использовать тот, который больше подходить под твои пальцы. Мне больше нравиться ANY, потому что это слово короче аж на одну букву :).

 SELECT cnum, cname, city
 FROM User1
 WHERE ОC=ANY
    ( SELECT OC
    FROM User2
    );

Здесь сначала выполняется внутренний запрос, выбирая все OC из базы User2. Затем выполняется внешний запрос, который выберет все строки где встретилась любая (ANY) из ОС внутреннего запроса. То есть, результатом будут все строки из User1, в которых встречаются ОС такие же как и в User2.

Результат следующего запроса будет абсолютно таким же:

 SELECT cnum, cname, city
 FROM User1
 WHERE ОC= SOME
    ( SELECT OC
    FROM User2
    );

Аналогично будет работать и следующий запрос:

 SELECT cnum, cname, city
 FROM User1
 WHERE ОC=IN
    ( SELECT OC
    FROM User2
    );

Я везде использую знак «=», но ANY и SOME могут работать и с операторами < или >.

Теперь нам предстоит познакомится с ALL

 SELECT cnum, cname, city
 FROM User1
 WHERE NumberLesens>ALL
    ( SELECT NumberLesens
    FROM User2
    );

Результатом этого запроса будут все строки, в которых количество лицензий (NumberLesens) больше чем у всех из таблицы User2.

На этом я закончу сегодняшнее занятие, потому что следующее, что нам предстоит изучить, будет добавление, изменение и удаление полей. Это очень большой материал, поэтому я не хочу начинать его сегодня.


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©