- •Классификация субд по типу модели данных:
- •Реляционная модель данных
- •Проектирование реляционных баз данных
- •Семантическое моделирование данных
- •Язык реляционных баз данных sql
- •Insert добавляет новые данные
- •If db_id (n'Поставщики и детали') is not null
- •Into создает новую таблицу и вставляет в нее строки результата выполнения запроса.
WITH задает временно именованный результирующий набор, который используется для организации рекурсивного запроса.
SELECT определяет столбцы, возвращаемые запросом.
DISTINCT указывает на то, что только уникальные строки могут появляться в результирующем наборе.
ALL указывает на то, что в результирующем наборе могут появляться дублирующиеся строки. ALL применяется по умолчанию.
TOP указывает на то, что только заданное число или процент строк будет возвращен из результирующего набора.
* указывает на то, что все столбцы из всех таблиц в предложении FROM должны быть возвращены.
Into создает новую таблицу и вставляет в нее строки результата выполнения запроса.
FROM указывает таблицы или табличные выражения, которые используются в операторе SELECT.
WHERE определяет условия поиска строк, возвращаемых запросом.
GROUP BY задает группы, в которые должны быть помещены строки вывода.
HAVING определяет условие поиска для группы.
ORDER BY указывает порядок сортировки для столбцов, возвращаемых оператором SELECT.
Из перечисленных предложений оператора SELECT наиболее часто используются SELECT, FROM и WHERE. Если исключить все опции предложения SELECT, то получается такая простая конструкция:
SELECT { * | список_выбора }
FROM список_табличных_источников
WHERE условие_поиска
Не углубляясь в детали синтаксиса даже такой простой конструкции, рассмотрим несколько примеров, раскрывающих наиболее важные моменты. Примеры в точности соответствуют тем, которые рассматривались в разделе реляционной алгебры.
Получить имена поставщиков, которые поставляют деталь под номером 2.
SELECT DISTINCT S.Sname
FROM S
WHERE EXISTS ( SELECT *
FROM SP
WHERE SP.Sno = S.Sno AND SP.Pno = 2)
Получить имена поставщиков, которые поставляют, по крайней мере, одну красную деталь.
SELECT DISTINCT S.Sname
FROM S
WHERE S.Sno IN ( SELECT SP.Sno
FROM SP
WHERE SP.Pno IN ( SELECT P.Pno
FROM P
WHERE P.Color = 'Красный'))
Получить имена поставщиков, которые поставляют все типы деталей.
SELECT DISTINCT S.Sname
FROM S
WHERE NOT EXISTS (SELECT *
FROM P
WHERE NOT EXISTS (SELECT *
FROM SP
WHERE SP.Sno = S.Sno AND SP.Pno = P.Pno))
Получить номера поставщиков, поставляющих, по крайней мере, все те детали, которые поставляет поставщик под номером 2.
Получить все пары номеров поставщиков, размещенных в одном городе
SELECT A.Sno AS SA, B.Sno AS SB
FROM S AS A, S AS B
WHERE A.City = B.City AND A.Sno < B.Sno
Получить имена поставщиков, которые не поставляют деталь под номером 2.
SELECT DISTINCT S.Sname
FROM S
WHERE NOT EXISTS (SELECT *
FROM SP
WHERE SP.Sno = S.Sno AND SP.Pno = 2)