1 / 27

Языки манипулирования данными

Языки манипулирования данными. Общая характеристика. Язык, в котором можно (по крайней мере) моделировать исчисление с переменными-кортежами, либо, что равносильно, реляционную алгебру или исчисление с переменными на доменах, называется полным. Обзор языков манипулирования данными (1).

kera
Download Presentation

Языки манипулирования данными

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Языки манипулирования данными

  2. Общая характеристика Язык, в котором можно (по крайней мере) моделировать исчисление с переменными-кортежами, либо, что равносильно, реляционную алгебру или исчисление с переменными на доменах, называется полным

  3. Обзор языков манипулирования данными (1) ISBL (Information System Base Language) – «чистый» язык реляционной алгебры. Разработан в исследовательском центре фирмы IBM в Питерли (Англия) для использования в экспериментальной системе PRTV (Peterlee Relational Test Vehicle). Нет агрегатных операций, а также средств для вставки, удаления и модификации кортежей

  4. Обзор языков манипулирования данными (2) SEQUEL (Structured English Query Language) – разработан в 1974 г. в исследовательской лаборатории IBM в Сан-Хосе; использует реляционную алгебру, но имеет синтаксис, напоминающий реляционное исчисление с переменными-кортежами. 1976 г. – СУБД System R; важнейший из результатов – разработка языка SQL (Structured Query Language)

  5. Обзор языков манипулирования данными (3) QUEL – язык реляционного исчисления с переменными-кортежами, разработан в Калифорнийском университете в Беркли в конце 70-х г.г. для реляционной СУБД INGRES. Включает широкий спектр операторов реляционного исчисления с переменными-кортежами, агрегатные функции. Более структурирован, чем SQL

  6. Обзор языков манипулирования данными (4) QBE (Query-By-Example) – язык исчисления с переменными на доменах; разработан в Исследовательском центре IBM в Йорктаун-Хейтсе. Предназначен для работы с терминала. Включены агрегатные функции

  7. Обзор языков манипулирования данными (5) SQL (Structured Query Language) – язык, ориентированный на отображение; описывается отображение известного атрибута или множества атрибутов в искомый атрибут или множество атрибутов. Первая коммерческая СУБД – ORACLE (конец 70-х г.г.)

  8. SQL 1982 г. – ANSI, 1983 г. – Международныйкомитет по стандартизации (ISO) 1987 г. – исходныйвариант стандарта языка SQL(SQL-87, SQL 1-го поколения) 1992 г. – перваяверсия стандарта ISO, SQL-2 или SQL-92 1999 г. – стандарт SQL-1999 (SQL-3); реляционные и объектно-ориентированные свойства

  9. Предложения SQL INSERT INTO имятаблицы (колонка1, … ) VALUES (значение1, … ) DELETE FROM имя таблицы WHERE условие отбора строк UPDATEимя таблицы SETколонка1 = выражение, … WHEREусловие отбора строк

  10. Формирование запросов SELECT DISTINCT список вывода FROMисточники WHERE условие отбора строк GROUP BYсписок для группирования HAVINGусловие отбора групп ORDER BYсписок для упорядочивания

  11. Примеры запросов (1) Схема базы данных: S(Sid, SN, SC) – ПОСТАВЩИК ( Номер поставщика, Имя, Город) P(Pid, PN, PC) – ДЕТАЛЬ ( Номер детали, Название, Цена) SP(Sid(FK1), Pid(FK2), QTY) – ПОСТАВКА ( Номер поставщика, Номер детали, Количество)

  12. Примеры запросов (2) • Получить имена поставщиков, поставляющих деталь с номером P1.

  13. Примеры запросов (3) SELECT SN “Имя поставщика” FROM S JOIN SP ON S.Sid = SP.Sid WHERE Pid = ‘P1’

  14. Примеры запросов (4) 2. Получить номера и имена поставщиков, не поставляющих деталь с номером P1

  15. Примеры запросов (5) SELECT Sid, SN FROM S WHERE Sid NOT IN ( SELECT Sid FROM SP WHERE Pid = ‘P1’ )

  16. Примеры запросов (6) 3. Получить имена поставщиков, поставляющих только деталь с номером P1

  17. Примеры запросов (7) SELECT Sid, SN FROM S JOIN SP ON S.Sid = SP.Sid WHERE Pid = ‘P1’ AND S.Sid NOT IN ( SELECT Sid FROM SP WHERE Pid != ‘P1’ )

  18. Примеры запросов (8) 4. Получить имена поставщиков, поставляющих все детали

  19. Примеры запросов (9) SELECT SN FROM S WHERE NOT EXISTS ( SELECT Pid FROM P WHERE NOT EXISTS ( SELECT Sid FROM SP WHERE S.Sid = SP.Sid AND P.Pid = SP.Pid ) )

  20. Использование агрегатных функций (1) 1. Для всех поставщиков получить отчет в виде:

  21. Использование агрегатных функций (2) SELECT SN, coalesce(sum(Qty),0)as ‘TotalQTY’ FROM S left outer join SP on S.Sid = SP.Sid GROUP BY SN

  22. Использование агрегатных функций (3) 2. Для поставщиков, поставляющих более одной разновидности товара, получить отчет в виде:

  23. Использование агрегатных функций (4) SELECT SN, sum(Qty) as ‘TotalQTY’, count(Pid) as ‘Number of Products’ FROM S join SP on S.Sid = SP.Sid GROUP BY SN HAVING count(Pid) > 1

  24. Использование агрегатных функций (5) 3. Получить имена поставщиков, поставляющих все детали SELECT SN FROM S join SP on S.Sid = SP.Sid GROUP BY SN HAVING count(Pid) = ( SELECT count(Pid) FROM P)

  25. Использование агрегатных функций (6) Для поставщиков, поставляющих максимальное суммарное количество товара, получить отчет в виде:

  26. Использование агрегатных функций (7) CREATE VIEW V1(Sid, Qty) as SELECT Sid, sum(Qty) from SP GROUP BY Sid go SELECT SN, Qty as ‘Total QTY’ FROM S join V1 on S.Sid = V1.Sid WHERE Qty = (SELECT max(Qty) From V1) DROP VIEW V1

  27. Использование агрегатных функций (8) WITH V1(Sid, Qty) as ( SELECT Sid, sum(Qty) from SP GROUP BY Sid ) SELECT SN, Qty as ‘Total QTY’ FROM S join V1 on S.Sid = V1.Sid WHERE Qty = (SELECT max(Qty) From V1)

More Related