- •Классификация субд по типу модели данных:
- •Реляционная модель данных
- •Проектирование реляционных баз данных
- •Семантическое моделирование данных
- •Язык реляционных баз данных 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)