Информационные системы

Автор работы: Пользователь скрыл имя, 05 Ноября 2009 в 13:11, Не определен

Описание работы

Лекции

Файлы: 1 файл

КИС_лекции (1 семестр).doc

— 645.00 Кб (Скачать файл)
 

    4. Выборка всех столбцов. Выбрать  все сведения обо всех поставщиках. 

    SELECT * FROM S 

    Результат: копия таблицы S.

    Этот  оператор эквивалентен по своему действию оператору:

    SELECT nomer, familia, kapital, gorod FROM S. 

    Звездочка ("*") обозначает список всех столбцов в таблице(ах), указанных в части FROM в том порядке, в котором  эти столбцы заданы в операторе CREATE TABLE. Звездочка может дополняться именем таблицы.

    SELECT S.* FROM S 

    5. Ограниченная выборка. Выбрать  номера поставщиков из Парижа, капитал которых больше 20. 

    SELECT nomer FROM S WHERE  (kapital>20) AND (gorod='Париж') 

    Результат:

    nomer
    S3
 

    Условие части WHERE может включать в себя

  • операции сравнения:  =,  <>,  >,  >=,  <=,  <;
  • двоичной алгебры: AND,  OR,  NOT;
  • операции принадлежности: IN,  NOT IN;
  • операции похожести: LIKE;
  • скобки: (  ).
 

    6. Выборка с упорядочением. Выбрать  номера и капиталы поставщиков  из Парижа в порядке убывания их состояния (размера капитала). 

    SELECT nomer, kapital FROM S WHERE  gorod='Париж' ORDER BY kapital DESC 

    ASC  - упорядочение по возрастанию  значений (по умолчанию).

    DESC - упорядочение по убыванию значений. 

    Каждый  столбец, упомянутый в части ORDER BY должен присутствовать в результирующей таблице, поэтому, например, такой оператор недопустим: 

    SELECT nomer FROM S ORDER BY gorod; 

    Правильно будет: 

    SELECT nomer, gorod FROM S ORDER BY gorod; 

    7. Выборка с применением принадлежности (IN). Выбрать детали, вес которых равен: 12, 16, 17. 

    SELECT * FROM P WHERE ves IN (12, 16, 17); 

    Результат:

    nomer nazvan zvet ves gorod
    P1 Гайка Красный 12 Лондон
    P2 Болт Зеленый 17 Париж
    P3 Винт Голубой 17 Рим
    P5 Кулачок Голубой 12 Париж
 

    8. Выборка с применением похожести (LIKE). Выбрать все детали, название которых начинается с буквы 'в'. 

    SELECT * FROM P WHERE nazvan LIKE 'в%'; 
 
 

    Результат:

    nomer nazvan zvet ves gorod
    P3 Винт Голубой 17 Рим
    P4 Винт Красный 14 Лондон
 

    Общий вид оператора похожести: <имя столбца> LIKE <строковая константа> 

    <имя  столбца> типа CHAR.

    <строковая  константа> - это образец, в котором:

    • "_" - любой одиночный символ,
    • "%" - любое количество любых символов, в том числе нулевое, остальные символы означают сами себя.

    Тема 7. Выборка данных. Соединение

    Операция, в которой выборка данных проводится более чем из одной таблицы  называется "соединение". Результирующая таблица также называется соединением. 

    Простое эквисоединение

    Пример:

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

    SELECT S.*, P.* FROM S, P WHERE S.gorod=P.gorod; 

    Очевидно, что нужные данные получаются из двух таблиц S и P - они указаны в части FROM, а условие соединения записывается в части WHERE. 

Поля  таблицы "S" Поля  таблицы "P"
nomer familia kapital gorod nomer nazvan zvet ves gorod
S1 Смит 20 Лондон P1 Гайка Красный 12 Лондон
S1 Смит 20 Лондон P4 Винт Красный 14 Лондон
S1 Смит 20 Лондон P6 Блюм Красный 19 Лондон
S2 Джонс 10 Париж P2 Болт Зеленый 17 Париж
S2 Джонс 10 Париж P5 Кулачок Голубой 12 Париж
S3 Блейк 30 Париж P2 Болт Зеленый 17 Париж
S3 Блейк 30 Париж P5 Кулачок Голубой 12 Париж
S4 Кларк 20 Лондон P1 Гайка Красный 12 Лондон
S4 Кларк 20 Лондон P4 Винт Красный 14 Лондон
S4 Кларк 20 Лондон P6 Блюм Красный 19 Лондон
 

    Поставщик из Сарова не попал в результирующую таблицу, так как в этом городе не хранятся никакие детали. Аналогично, результат не содержит детали P3, так  как ее город - Рим.

    Некоторые замечания

  • Оба столбца в условии соединения должны быть либо числовыми, либо строковыми.
  • Совсем не обязательно, чтобы столбцы в условии соединения назывались одинаково, хотя это бывает часто.
  • В случае операции равенства ("=") в условии соединения, оно называется эквисоединением; в условии соединения могут быть и другие операции.
  • Часть WHERE может включать и другие дополнительные условия, помимо условия соединения.
  • Можно предусмотреть выборку не всех, а некоторых столбцов; кроме того, первоначальный оператор можно еще более упростить:
 

      SELECT * FROM S, P WHERE S.gorod=P.gorod; 

  • По определению, эквисоединение должно порождать два  полностью одинаковых столбца; если исключить один из этих столбцов, то результат будет называться естественным соединением.
  • Можно образовать соединение любого числа таблиц.
 

    Соединение по условию "больше, чем"

    Пример:

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

    SELECT S.*, P.* FROM S, P WHERE S.gorod > P.gorod; 

    Соединение  с дополнительным условием

    Пример:

    Выбрать все комбинации номеров поставщиков, номеров деталей и состояний  такие, что поставщик и деталь соразмещены. Опустить поставщиков  с капиталом 20. 

    SELECT S.nomer, P.nomer, S.kapital FROM S, P

    WHERE (S.gorod = P.gorod) AND (kapital <> 20); 

    S.gorod = P.gorod  - условие соединения

    kapital <> 20      - дополнительное  условие 

    Результат:

    nomer nomer kapital
    S2 P2 10
    S2 P5 10
    S3 P2 30
    S3 P5 30
 

    Соединение  таблицы с ней  самой

    Пример:

    Выбрать все пары номеров поставщиков  такие, что оба поставщика находятся в одном и том же городе. 

      SELECT PERV.nomer, VTOR.nomer FROM S PERV, S VTOR

      WHERE PERV.gorod = VTOR.gorod; 

    Таблица S дважды упоминается в части FROM, чтобы различать два ее упоминания вводятся произвольные псевдонимы. 

 

     Результат:

    nomer nomer
    S1 S1
    S1 S4
    S2 S2
    S2 S3
    S3 S3
    S3 S2
    S4 S4
    S4 S1
    S5 S5
 

    Можно привести этот результат в порядок, если расширить часть WHERE. 

    SELECT PERV.nomer, VTOR.nomer

    FROM S PERV, S VTOR

    WHERE (PERV.gorod = VTOR.gorod) AND (PERV.nomer < VTOR.nomer); 

    Последнее условие ("<") даст двоякий эффект:

    а) оно исключает пары номеров вида (x,x);

    б) гарантирует, что пары вида (x,y) и (y,x) не будут появляться одновременно. 

    Результат:

    nomer nomer
    S1 S4
    S2 S3

    Тема 8: Выборка. Подзапрос

    Подзапрос - это SELECT, который вложен во внешний оператор SELECT.

    Обычно  подзапросы требуются для выборки  значений, когда во внешнем запросе  применяется операция принадлежности (IN). 

Информация о работе Информационные системы