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

  • СИМВОЛ ЗНАЧЕНИЕ

  • Примеры.

  • Select фамилия from S where name like __ а %

  • II. Использование функций 1. Агрегатные функции.

  • Select count (distinct номер _ поставщика ) from SP

  • Select count (*) from SP where номер _ детали =P2

  • Select sum (количество) from SP where номер_детали=P2

  • Select avg ( количество ) as average, min( количество ) as minimum, max( количество ) as maximum

  • Пример

  • Select * from S , P

  • , рейтинг from S Cross Join P where S. город = P. город

  • sql запросы. Язык структурных запросов sql введение


    Скачать 63.05 Kb.
    НазваниеЯзык структурных запросов sql введение
    Дата20.04.2018
    Размер63.05 Kb.
    Формат файлаdocx
    Имя файлаsql запросы.docx
    ТипМетодические указания
    #41691
    страница2 из 5
    1   2   3   4   5

    Selectномер_детали, название, вес

    from P

    where вес in (12, 16, 17)

     

    Результат:

    номер_детали

    Название

    вес

     

    P1

    Гайка

    12

     

    P2

    Болт

    17

     

    P3

    Винт

    17

     

    P5

    Кулачок

    12

    Подготовьте запрос и проверьте полученный результат.

    11. Выбор по шаблону.

    Для запросов с поиском по шаблону, основанных на поиске подстрок в полях типа CHARACTER, по стандарту ANSI используется ключевое слово LIKE.

    Включение в выражение ключевого слова NOT порождает условие c обратным смыслом.

    СИМВОЛ

    ЗНАЧЕНИЕ

    LIKE

     

    %

    заменяет последовательность символов

    _ (подчерк)

    заменяет любой одиночный символ

    \

    отменяет специальное назначение следующего за ним символа

    Примеры.

    а) Выбрать список деталей, начинающихся с буквы "Б"

    Selectномер_детали, название, вес

    from P

    where название like 'Б%'

     

    Результат:

    номер_детали

    название

    вес

     

    P5

    Болт

    12

     

    P6

    Блюм

    19

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

    Select_count__(*)_from__SP_where_номер___детали_=P2'>Select_фамилия__from_S_where_name_like_____а_%'>Select фамилия from S

    where name like '__а%'

     

    Результат:

    фамилия

     

    Адамс

     

    Кларк

    Подготовьте запросы и проверьте полученный результат.

    II. Использование функций

    1. Агрегатные функции.

    Среди наиболее часто используемых функций отметим:

    Sum - сумма значений по столбцу;

    Avg - среднее значение в столбце;

    Max - максимальное значение в столбце;

    Min - минимальное значение в столбце.

    Примеры.

    а) Выдать общее количество поставщиков.

    Select count (*)

    from S

    Результат: 5

    Подготовьте запрос и проверьте полученный результат.

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

    Select count (distinct номер_поставщика )

    from SP

    Результат: 4

    Подготовьте запрос и проверьте полученный результат.

    в) Выдать количество поставок для детали 'P2'.

    Selectcount (*)

    from SP

    whereномер_детали='P2'

    Результат: 4

    Подготовьте запрос и проверьте полученный результат.

    г) Выдать общее количество поставляемых деталей 'P2'.

    Selectsum (количество)

    from SP

    where номер_детали='P2'

    Результат: 1000

    Подготовьте запрос и проверьте полученный результат.

    д) Выдать средний, минимальный и максимальный объем поставок для поставщика S1 с соответствующим заголовком.

    Select avg(количество) as average,

    min(количество) as minimum,

    max(количество) as maximum

    from SP

    where номер_поставщика='S1'

     

    Результат:

    average

    minimum

    maximum

     

    216.6

    100

    400

    Подготовьте запрос и проверьте полученный результат.

    2. Строковые функции.

    Ниже перечислено несколько функций, относящихся к указанной группе. Общий их перечень достаточно широк.

    Substr(s,n,[l]) - функция возвращает подстроку s, начинающуюся с n длиной l;

    Lower(s) - функция возвращает строку s, преобразованную к нижнему регистру;

    Length(s) - функция возвращает длину строки s.

    Пример.

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

    Select Substr(lower(фамилия), 1, 2)

    from s

     

    Результат:

    Первые две буквы фамилии

     

    см

     

    бл

     

    кл

     

    ад

     

    дж

    Подготовьте запрос и проверьте полученный результат.

    III. Группирование

    1. Оператор group by группирует таблицу, представленную фразой from в группы т.о., чтобы в каждой группе все строки имели одно и тоже значение поля, указанного во фразе group by. Далее, к каждой группе перекомпанованной таблицы (а не к каждой строке исходной таблицы) применяется фраза select, в результате чего, каждое выражение во фразе select принимает единственное значение для группы.

    Пример.

    Выдать для каждой поставляемой детали ее номер и общий объем поставок, за исключением поставок поставщика 'S1'.

    Select номер_детали,sum(количество)

    from SP

    where номер_поставщика <>'S1'

    group by номер_детали

     

    Результат:

    Hомеp_поставщика

    (Sum)

     

    P1

    300

     

    P2

    800

     

    P4

    300

     

    P5

    400

    Подготовьте запрос и проверьте полученный результат.

    2. Фраза having.

    Фраза having играет ту же роль для групп, что и фраза where для строк и используется для того, чтобы исключать группы, точно так же, как where используется для исключения строк. Выражение во фразе having должно принимать единственное значение для группы.

    Пример.

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

    Select номер_детали

    from SP

    group by номер_детали

    having count(*) > 1

     

    Результат:

    Номер_детали

     

    P1

     

    P2

     

    P4

     

    P5

    Подготовьте запрос и проверьте полученный результат.

    IV. Соединения  таблиц.

    Классическая реляционная алгебра Кодда включает девять реляционных операций, последовательное применение которых позволяет реализовать выборку любых данных. Три из этих операции так или иначе связаны с соединением таблиц:

            операция взятия декартова произведения;

            операция соединение (соответствующая ей в стандарте ANSI операция носит название операции внутреннего соединение);

            операция эквисоединения.

    Операция взятия декартово произведение содержит все возможные комбинации конкатенаций кортежей (строк) из соединяемых таблиц.

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

    Операция эквисоединения является частным случаем операции соединение по условию равенства атрибутов.

    Кроме этого существует практически важное расширение операции эквисоединения – естественное (внешнее) соединение.

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

    Существуют три разновидности внешних соединений.

            Левое внешнее соединение. Всегда содержит как минимум один экземпляр каждой строки из таблицы, указанной слева от ключевого слова JOIN. Отсутствующие поля из правой таблицы заполняются значениями NULL.

            Правое внешнее соединение. Всегда содержит как минимум один экземпляр каждой строки из таблицы, указанной справа от ключевого слова JOIN. Отсутствующие поля из левой таблицы заполняются значениями NULL.

            Полное внешнее содинение. Всегда содержит как минимум один экземпляр каждой строки каждой из соединяемых таблиц. Отсутствующие поля в записях результирующего набора заполняются значениями NULL.

    Для построения соединений стандарт ANSI предусматривает следующую конструкцию cпецификаторов  from  и join:

    FROM источник1

    [Nutural] тип соединения  JOIN источник2 [on условие [,...] | Using (поле1 [,...])]

    • Источник1. Первый из соединяемых наборов данных (имя таблицы или подзапрос).

    • [Nutural] Два набора данных соединяются по равным значениям одноименных полей. Конструкции Оn и Using в этом случае недопустимы.

    • Тип соединения Возможные виды соединений:

            [Inner]  - внутреннее соединение;

            Left [Outer]  - левое внешнее соединение;

            Right [Outer] - правое внешнее соединение;

            Full [Outer]  - полное внешнее соединение;

            Cross  – декартово произведение ;

    • Источник2. Второй из соединяемых наборов данных (имя таблицы или подзапрос).

    • On условие [,...]   Отношение между источниками - критерий, аналогичный тому, который задается в конструкции Where.

    • Using (поле1 [,...]) Одноименные поля источников, по совпадающим значениям которых производится соединение. В отличии от Nutural позволяет ограничиться некоторыми одноименными полями, тогда как Nutural производит соединение по всем одноименным полям.

    1. Простое декартово произведение.

    Пример.

    Выдать информацию обо всех возможных парах  поставщик - деталь.

    Select S.*, P.*

    from S

    Cross Join  P 

    Результат:

    н_пост

    фам-я

    рейтинг

    s.город

    н_дет

    назв-е

    цвет

    вес

    p.город

    S1

    Смит

    20

    Лондон

    P1

    Гайка

    красный

    12

    Лондон

    S1

    Смит

    20

    Лондон

    P4

    Винт

    красный

    14

    Лондон

    S1

    Смит

    20

    Лондон

    P6

    Блюм

    красный

    19

    Лондон

    S2

    Джонс

    10

    Париж

    P2

    Болт

    зеленый

    17

    Париж

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    Всего 30 строк.

    Подготовьте запрос и проверьте полученный результат.

    Замечание: тот же результат может быть получен запросом

    Select from SP

    В отличие от предыдущего запроса этот запрос написан с отклонением от стандарта ANSI, но он более точно отражает смысл операции взятия декартова произведения.

    При написании запросов следует придерживаться стандарта ANSI, позволяющего формировать более читабельные запросы.

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

    Пример.

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

    SelectS.номер_поставщикаp.номер_детали, рейтинг

    from S

    Cross Join  P

    where  S.город=P.город

    Результат:

    н_пост

    фам-я

    рейтинг

    s.город

    н_дет

    назв-е

    цвет

    вес

    p.город

    S1

    Смит

    20

    Лондон

    P1

    Гайка

    красный

    12

    Лондон

    S1

    Смит

    20

    Лондон

    P4

    Винт

    красный

    14

    Лондон

    S1

    Смит

    20

    Лондон

    P6

    Блюм

    красный

    19

    Лондон

    S2

    Джонс

    10

    Париж

    P2

    Болт

    зеленый

    17

    Париж

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    . . .

    Всего 10 строк.

    Подготовьте запрос и проверьте полученный результат.

    Замечание: тот же результат может быть получен запросом с использованием конструкции операции внутреннего соединения в стандарте ANSI
    1   2   3   4   5


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