Р6                  Шайба    Красный 19     Липецк



Nbsp;

РЕЛЯЦИОННЫЕ ЯЗЫКИ ЗАПРОСОВ

Существуют языки: ISBL - язык системы PRTV, QUEL -язык системы INGRES, SQL - язык системы System R; QBE - язык интерфейса высокого уровня в ряде СУБД, PIQUE - язык экспериментальной системы PITS. ISBL ос-нован на реляционной алгебре. QUEL и SQL - на исчислении кортежей. QBE -язык, основанный на исчислении доменов. PIQUE - похож на исчисление кор-тежей, но обеспечивает интерфейс со схемой помощью W-функций.

Язык SQL (Structured Query Language)

Язык был разработан в компании IBM в начале 70-х годов, его первой реализацией был продукт System R; впоследствии он был реализован в много-численных коммерческих продуктах как фирмы IBM, так и других изготовите-лей. Язык SQL стал Американским национальным стандартом (ANSI), Международным стандартом (ISO), стандартом системы UNIX (X/Open). Он используется для описания реляционных операций. Стандарты: SQL/89, SQL/92.

В реляционных системах выполняются как минимум 2 условия:

1. Данные воспринимаются пользователем как таблицы.

2. В распоряжении пользователя имеются операторы (например, для выборки данных), среди которых есть операторы SELECT, PROJECT и JOIN.

Операция SELECT предназначена для извлечения определенных строк из таблиц

Операция PROJECT предназначена для извлечения определенных столбцов из таблицы.

Операция JOIN предназначена для соединения двух таблиц на основе общих значений в общих столбцах.

Все эти операции могут быть сформулированы на языке SQL.                           

Пример 5.1. Пусть имеются 2 таблицы:

    ОТДЕЛЫ (№ отдела, Наименование, Бюджет)

    СЛУЖАЩИЕ (№ служащего, № отдела, Оклад)

1. SELECT:

SELECT № отдела, Наименование, Бюджет

FROM ОТДЕЛЫ

WHERE Оклад >400р.

2. PROJECT:  

SELECT № отдела, Бюджет

FROM ОТДЕЛЫ                                                                                                                                   

       3. JOIN:

SELECT ОТДЕЛЫ.*, СЛУЖАЩИЕ.*

FROM ОТДЕЛЫ, СЛУЖАЩИЕ         

WHERE ОТДЕЛЫ. № отдела = СЛУЖАЩИЕ. № отдела

Функции определения данных:

CREATE TABLE - оператор создания таблицы ;

CREATE INDEX - оператор создания индексной таблицы;

DROP TABLE - оператор удаления таблицы ;

DROP INDEX - оператор удаления индексной таблицы.

Операторы манипулирования данными

В языке SQL предусмотрено четыре предложения манипулирования данными: SELECT (выдать, выбрать), UPDATE (обновить), DELETE (удалить) и INSERT (включить).

Создадим БД Поставщиков (S), Деталей (Р) и Поставок (SP).

CREATE TABLE S

(НОМЕР_ПОСТАВЩИКА CHAR (5),

ИМЯ      CHAR (20),

СОСТОЯНИЕ     SMALLINT,

ГОРОД          CHAR (15));                                                                            

 

CREATE TABLE Р

(НОМЕР_ДЕТАЛИ CHAR (6),

НАЗВАНИЕ_ДЕТАЛИ     CHAR (20),

ЦВЕТ         CHAR (7),

ВЕС         SMALLINT,

Город         CHAR (15));

CREATE TABLE SP

(НОМЕР_ПОСТАВЩИКА CHAR (5),

НОМЕР_ДЕТАЛИ CHAR (6),

КОЛИЧЕСТВО   INTEGER);                                                   

             

        Содержимое базы данных представлено в табл. 5.1, 5.2, 5.3

       Поставщики(Р)                                                         Таблица 5.1                                                                                                                                                                                                             

 НОМЕР_ПОСТАВЩИКА  ИМЯ СОСТОЯНИЕ ГОРОД
        S1         S2         S3         S4         S5             Саша Дима Боря Коля Алик     20     10     30     20     30 Липецк Пермь Пермь Липецк Арзамас

                                                                                                                        

           Детали (P)                                                                       Таблица 5.2

НОМЕР_ДЕТАЛИ  НАЗВАНИЕ ЦВЕТ ВЕС ГОРОД
    Р1     Р2     Р3     Р4     Р5     Р6 Гайка Болт Винт Винт Кулачок Блюм Красный Зеленый Голубой Красный Голубой Красный 12 17 17 14 12 19    Липецк Пермь Рига Липецк Пермь Липецк 

                                                                                                                                                                                                                                    

                                                                                                                                

       Поставки (SP)                                                        Таблица 5.3

НОМЕР_ПОСТАВЩИКА  НОМЕР_ДЕТАЛИ  КОЛИЧЕСТВО
         S1          S1          S1          S1          S1          S1          S2          S2          S3          S4          S4          S4        Р1        Р2        Р3        P4        P5        P6        P1        P2        P2        P2        P4        P5     300     200     400     200     100     100     300     400     200     200     300     400

 

Выборки

     Основной операцией в языке SQL является отображение, синтаксически представляющее собой блок SELECT – FROM - WHERE (выбрать – из – где).

Структура оператора SELECT:

SELECT [DISTINCT] элементы

FROM таблица

[WHERE <предикат>]

[GROUP BY <поле> [HAVING <предикат>]]

[ORDER BY <поле>]

где: DISTINCT означает, что из таблицы результатов исключается дублирование.

    GROUP BY поле - создаются группы, в которых указанное поле имеет одно и то же значение.                                                       

                                                                                                                       

                                                                                                   

 HAVING <предикат> - из результата будут исключены некоторые группы.  

 ORDER BY <поле> - результат будет отсортирован по указанному полю. 

Пример 5.2. Выдать номера и состояния для поставщиков, находящихся в                  Перми:

SELECT НОМЕР_ПОСТАВЩИКА, СОСТОЯНИЕ

FROM S

WHERE ГОРОД= 'Пермь'

Результат: НОМЕР ПОСТАВЩИКАСОСТОЯНИЕ

                                          S2                             10

                                       S3                             30

    Пример 5.3. Простая выборка. Выдать номера для всех поставляемых деталей:

       SELECT НОМЕР_ДЕТАЛИ

       FROM SP

        Результат: НОМЕР ДЕТАЛИ

Р1

Р2

РЗ

Р4

Р5

Р6

Р1

Р2

Р2

                           P4

                           Р5

 Пример 5.4. Выборка с исключением дубликатов.

SELECT DISTINCT НОМЕР_ДЕТАЛИ

 FROM SP

 

Результат: НОМЕР ДЕТАЛИ

                   Р1

                   Р2

                   РЗ

                   Р4

                   Р5

                   Р6                                             

 SELECT DISTINCT - означает выбрать различные.

    Пример 5.5. Выборка вычисляемых значений. Выдать номер и вес каждой детали:

SELECT НОМЕР_ДЕТАЛИ, ВЕС 

FROM P                                                                                                                                                                                                                             

 Результат: НОМЕР ДЕТАЛИ        ВЕС

                         Р1                          12

Р2                          17 

                         РЗ                         17

Р4                         14

                          Р5                         12

                         Рб                         19           

Пример 5.6. Фраза SELECT (и фраза WHERE) может включать арифметические выражения, а также прочие имена полей. Можно, кроме того, осуществлять выборку просто констант.

SELECT НОМЕР_ДЕТАЛИ, 'Вес в граммах=', ВЕС

FROM P

Результат: НОМЕР ДЕТАЛИ                       ВЕС

                       .Р1                         Вес в граммах=    12

                         Р2                          Вес в граммах=    17

                         РЗ                          Вес в граммах=    17

                         Р4 .                        Вес в граммах=    14

                         Р5                          Вес в граммах=    12

                         Р6                          Вес в граммах=    19

                                                                                                          

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

SELECT *

FROM S

Результатом будет таблица S со всеми полями.

 

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

SELECT НОМЕР_ПОСТАВЩИКА

 FROM S

WHERE ГОРОД=’Пермь’ AND СОСТОЯНИЕ > 20

Результат:    НОМЕР ПОСТАВЩИКА

                                   S3

Условие или предикат, следующий за ключевым словом WHERE, может включать операторы сравнения =, <> (не равно),>,ù >, >=, , ù < и <=, булевские операторы AND (и), OR (или) и NOT (нет), а скобки указывают требуемый порядок вычислений.

 

Пример 5.9. Выборка с упорядочением. Выдать номера и состояния поставщиков, находящихся в Перми, в порядке убывания их состояния:

SELECT НОМЕР_ПОСТАВЩИКА

FROM S

WHERE ГОРОД=’Пермь’

ORDER BY СОСТОЯНИЕ DESC                                                                                                                 

Результат: НОМЕР ПОСТАВЩИКАСОСТОЯНИЕ

                               S3                               30

                               S2                               10

Параметры:

   ASC – возрастание, DECS – убывание, ORDER BY – упорядочить.

При упорядочивании можно указывать номер столбца:

 

  SELECT НОМЕР_ДЕТАЛИ, ВЕС

  FROM P

ORDER BY 2, НОМЕР_ДЕТАЛИ

 В строке ORDER BY … цифра 2 означает ссылку на второй столбец результирующей таблицы.

Результат: НОМЕР_ДЕТАЛИВЕС              

 

                                           Р1              12                

Р5              12

Р4              14

                                 Р2              17

                                  РЗ              17

Р6              19

 

 

                                                                                                                                            

Пример 5.10. Выборка с использованием BETWEEN (между). Выдать сведения о деталях, вес которых находится в диапазоне от 16 до 19 включительно: 

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД         

FROM P

WHERE ВЕС BETWEEN 16 AND 19

 

Результат: НОМЕР ДЕТАЛИНАЗВАНИЕЦВЕТВЕСГОРОД

                          Р2                  Болт        Зеленый 17    Пермь   

                          РЗ                  Винт       Голубой 17     Рига

Р6                  Шайба    Красный 19     Липецк

Может также использоваться NOT BETWEEN.

 

Пример 5.11. Выборка с использованием IN .Выдать детали, вес которых 12,16,17.

SELECT НОМЕР _ДЕТАЛИ, НАЗВАНИЕ, ВЕС, ГОРОД

FROM P

WHERE ВЕС IN (12, 16,17)

Существует также предикат NOT IN (не принадлежит).

 

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

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

 FROM P

 WHERE НАЗВАНИЕ LIKE 'B%'

Обычно предикат LIKE имеет форму:

              Имя столбца LIKE литерная строковая константа,

 где имя столбца имеет тип CHAR.

Литеры:

- Литера " _ " (разрыв или подчеркивание) или " ? " - обозначает любую одиночную литеру.                                                                                                      

- Литера " %" (процент)   или " * " - обозначает любую последовательность из нескольких литер.

- Все другие литеры обозначают просто сами себя.

Примеры:

АДРЕС LIKE '% Брест %' - будет приниматься истина, если АДРЕС

содержит строку "Брест".

НОМЕР_ПОСТАВЩИКА LIKE 'S_ _'    - будет истина, если номер

состоит из трех литер и первая из них литера S.

НАЗВАНИЕ LIKE '% К_ _ _'   - будет истина, если название состоит из

четырех и более литер и трем последним из них предшествует литера К.

ГОРОД NOT LIKE '% Е %'     - будет истина, если значение литера не

содержит литеры Е.           


Дата добавления: 2018-04-04; просмотров: 320; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!