М
іністерство освіти і науки України

Державний вищий навчальний заклад

«Дніпропетровський транспортно-економічний коледж»



ЗАТВЕРДЖУЮ

Заст. директора з НР

_____________ Н.В.Уласевич

____”________­­­____ 2016 р.


Методична розробка

проведення відкритого практичного заняття

з дисципліни

Обчислювальна техніка”

за темою: «Побудова SQL-запитів»


















Розроблена викладачем Кривим Р.А.

Розглянуто на засіданні ПК “КТ

Протокол №____від

_____”_______________2016р.

Голова_________Н.І.Крива









м.Дніпропетровськ

2016р.


Анотація


Практична робота студентів регламентується Положенням про організацію навчального процесу у ВНЗ, затвердженого МОН від 29.03.2012 р.№ 384.

Основна мета виконання практичних робіт студентом:

  • Розвиток творчих здібностей та активізація розумової і практичної діяльності студентів;

  • Формування у студентів практичних навичок;

  • Здобуття студентом глибокої системи знань і навичок;

  • Навчання працювати з різними прикладними програмами;

  • Творчо сприймати та осмислювати практичний матеріал;

  • Прищеплювати навички щоденної практичної роботи в одержанні та узагальненні знань, умінь і навичок.


В даній методичній розробці описано проведення практичної роботи за темою «Побудова SQL-запитів» у групах спеціальності «Обслуговування та ремонт автомобілів і двигунів». Студенти виконують завдання інструкції, повторення матеріалу самостійної теми, тестування і роботу з професійною програмою «Lazarus», використовуючи компілятор початкового коду fpc. Розглянуті питання використання систем управління базами даних на світовому ринку. Практична робота розрахована на студентів з різними розумовими можливостями і різними рівнями зацікавленості дисципліною і обраною спеціальністю.



Рецензія


Методична розробка передбачає основний уклін на оволодіння студентами практичними навичками роботи мовою програмування FPC та середою розробки Lazarus, системами взаємодії побудованої програми із базами даних, спеціальним професійним програмним забезпеченням, довідковою та спеціальною літературою. Викладач врахував всі особливості і можливості студентів, надав приклади виконання практичних робіт і середу розробки Lazarus.

Методична розробка може використовуватись як студентами, так і молодими викладачами для ефективності підготовки до практичних занять.


Рецензент І.М.Дмитренко (викладач вищої категорії)


































Вступ


База даних (англ. database) – сукупність даних, організованих відповідно до концепції, яка описує характеристику цих даних і взаємозв'язки між їх елементами; ця сукупність підтримує щонайменше одну з областей застосування (за стандартом ISO/IEC 2382:2015[1]). В загальному випадку база даних містить схеми, таблиці, подання, збережені процедури та інші об'єкти. Дані у базі організовують відповідно до моделі організації даних. Таким чином, сучасна база даних, крім саме даних, містить їх опис та може містити засоби для їх обробки.


В загальному випадку базою даних можна вважати будь-який впорядкований набір даних. Наприклад, паперову картотеку з формулярами про працівників підприємства у відділі кадрів. Але дана стаття зосереджена на використанні баз даних в інформаційних системах. На даний час застосунки для роботи з базами даних є одними з найпоширеніших прикладних програм.


Історія розвитку

1960-ті рр. розроблення перших БД. CODASYL — мережева модель даних та одночасно незалежне розроблення ієрархічної БД фірмою North American Rockwell, яка пізніше взята за основу IMS — власної розробки IBM.

1970-ті рр. наукове обґрунтування Едгаром Ф. Коддом основ реляційної моделі, котра на початку зацікавила лише наукові кола. Уперше цю модель було використано у БД Ingres (Берклі) та System R (IBM), що були лише дослідними прототипами, анонсованими протягом 1976 року.

1980-ті рр. поява перших комерційних версій реляційних БД Oracle та DB2. Реляційні БД починають успішно витісняти мережеві та ієрархічні. Дослідження децентралізованих (розподілених) систем БД, проте вони не відіграють особливої ролі на ринку БД.

1990-ті рр. увага науковців спрямовується на об'єктно-орієнтовані БД, які знайшли застосування в першу чергу в тих галузях, де використовуються комплексні дані: інженерні, мультимедійні БД.

2000-ні рр. головним нововведенням є підтримка та застосування XML у БД. Розробники комерційних БД, які панували на ринку у 1990-их рр., отримують все більшу конкуренцію з боку руху відкритого програмного забезпечення. Реакцією на це стає поява безкоштовних версій комерційних БД.





Системи керування базами даних (СКБД)

У сучасних інформаційних системах для забезпечення роботи з базами даних використовують системи керування базами даних (СКБД). Система керування базами даних — це система, основана на програмних та технічних засобах, яка забезпечує визначення, створення, маніпулювання, контроль, керування та використання баз даних (за стандартом ISO/IEC 2382:2015[2]). Застосунки для роботи з базою даних можуть бути частиною СКБД або автономними. Найпопулярнішими СКБД є MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Sybase, Interbase, Firebird та IBM DB2. СКБД дозволяють ефективно працювати з базами даних, обсяг яких робить неможливим їх ручне опрацювання.


Через тісний зв'язок баз даних з СКБД під терміном «база даних» інколи необґрунтовано та неточно мають на увазі систему керування базами даних. Але варто розрізняти базу даних — сховище даних, та СКБД — засоби для роботи з базою даних. СКБД з інформаційної системи може бути видалена, але база даних продовжить існувати. І навпаки: СКБД може функціонувати без жодної бази даних.


В загальному базу даних неможливо просто перемістити з однієї СКБД до іншої. Але СКБД використовують стандарти (SQL, ODBC, JDBC), які уніфікують ряд операцій по роботі з даними і дозволяють різним застосункам працювати з базами даних різних СКБД. СКБД часто класифікують за моделлю організації даних. Найвживаніші СКБД використовують реляційну модель, у якій дані подають у виді таблиць. Для кінцевого користувача (та прикладних програм) робота з базою даних напряму неможлива. Всі маніпуляції над даними здійснюють через спеціальні запити, які надсилають до СКБД. СКБД опрацьовує їх і повертає результат. Безпосередньо з базою даних працює виключно СКБД.


Сучасні СКБД забезпечують функції щодо керування даними, які можна поділити на такі групи:


Оголошення даних — створення, зміна та видалення визначень, які описують організацію даних.

Модифікація даних — додавання даних, їх редагування та видалення.

Отримання даних — надання даних за запитом застосунку у формі, яка дозволяє їх безпосереднє використання. Дані можуть надаватись або у формі, в якій вони зберігаються у базі даних, або в іншій формі (наприклад, через поєднання різних даних).

Адміністрування даних — реєстрування та відслідковування дій користувачів, дотримання безпеки роботи з даними, забезпечення надійності та цілісності даних, моніторинг продуктивності, резервне копіювання та відновлення даних тощо.


Архітектура СКБД

Ця архітектура передбачає виділення однієї з машин мережі як головної (сервер). На такій машині зберігається спільна централізована БД. Усі інші машини мережі виконують функції робочих станцій, за допомогою яких підтримується доступ користувацької системи до бази даних. Файли бази даних відповідно до призначених для користувача запитів передаються на робочі станції, де в основному і проводиться обробка даних. При великій інтенсивності доступу до одних і тих же даних продуктивність інформаційної системи різко падає. Користувачі також можуть створювати на робочих станціях локальні БД, які використовуються ними монопольно.


Архітектура «клієнт-сервер»

У сучасних мережевих інформаційних системах для роботи із загальною базою даних використовують архітектуру «клієнт-сервер». При цьому в мережі розміщують сервер баз даних. Ним виступає комп'ютер (або комп'ютери), який містить бази даних, СКБД та пов'язане з ними програмне забезпечення, і налаштований для надання користувачам інформаційної системи доступу до бази даних. Клієнти, які працюють із даними (вони можуть бути розташовані на різних комп'ютерах мережі), надсилають відповідні запити серверу. Сервер їх отримує, опрацьовує, та надсилає відповідь клієнту. Сучасні СКБД (MySQL, PostgreSQL, Microsoft SQL Server та інші) працюють відповідно до цієї архітектури. Сервер баз даних, як правило, є достатньо потужною багатопроцесорною системою, яка використовує масиви дисків RAID для підвищення надійності зберігання даних. Використання дискових масивів RAID дозволяє відновити дані, навіть якщо один з дисків вийшов з ладу.


Реалізації СКБД

Комерційні СКБД

Microsoft SQL Server

Oracle

DB2

Interbase

Informix

Sybase

Дінай

СКБД з відкритим кодом

MySQL

PostgreSQL

Firebird

SQLite


Сфери використання баз даних

Первинним призначенням бази даних є зберігання масивів даних. Але їх широко використовують і для збереження адміністративної інформації та спеціалізованих даних, наприклад, для інженерних даних чи для економічних моделей. Прикладами використання баз даних можуть бути:


автоматизовані системи обліку ;

реєстри та каталоги;

геоінформаційні системи;

лінгвістичні бази даних, тобто машинні словники різного типу і призначення;

бази даних транспортних систем;

системи керування вмістом Інтернет-сайтів, які зберігають у базах даних інформацію про web-сторінки сайту (прикладом можуть бути широко вживані системи керування вмістом Joomla! та WordPress).


Види баз даних

Бази даних класифікують за різними критеріями. За моделлю організації даних розрізняють такі бази даних:


Ієрархічна. Ієрархічна база даних може бути представлена як дерево, що складається з об'єктів різних рівнів. Між об'єктами існують зв'язки типу «предок-нащадок». При цьому можлива ситуація, коли об'єкт не має нащадків або має їх декілька, тоді як у об'єкта-нащадка обов'язково тільки один предок.

Мережна. Така база даних подібна до ієрархічної, за винятком того, що кожен об'єкт може мати більше одного предка.

Реляційна. Реляційна база даних зберігає дані у вигляді таблиць. Найвживаніші СКБД використовують реляційну модель даних.

Об'єктно-орієнтована. У базі даних цього виду дані оформляють у вигляді моделей об'єктів.

За розміщенням даних виділяють такі види баз:


Локальна, або централізована. Така база даних підтримується на одному комп'ютері.

Розподілена. Частини такої бази даних розміщують на різних комп'ютерах мережі.

Структуровані та неструктуровані БД

Структуровані БД використовують структури даних, тобто структурований опис типу фактів за допомогою схеми даних, більш відомої як модель даних. Модель даних описує об'єкти та взаємовідношення між ними. Існує декілька моделей (чи типів) баз даних, основні: ієрархічна, мережна та реляційна.


До неструктурованих БД належать повнотекстові бази даних, які містять неструктуровані тексти статей чи книг у формі, що дозволяє здійснювати швидкий пошук (наприклад, як Вікіпедія).


Мови для роботи з базами даних

При роботі з базами даних використовують мови спеціального призначення:


Мова визначення даних (Data definition language, DDL) — це мова, яка описує дані та структури даних, а також визначає взаємозв'язки між ними (за стандартом ISO/IEC 2382:2015[3]).

Мова маніпулювання даними (Data manipulation language, DML) — це мова, яку підтримує СКБД і яка забезпечує виконання операцій отримання, додавання, зміни та видалення даних (за стандартом ISO/IEC 2382:2015[4]).

Мова запитів (Query language) — це мова для користувачів, яка забезпечує отримання та оброблення даних у базі даних (за стандартом ISO/IEC 2382:2015[5])..

При роботі з реляційними базами даних використовують мову структурних запитів SQL (Structured Query Language), яка поєднує всі три функції (визначення даних, модифікація даних та формування вибірок). Мова SQL стандартизована ANSI та ISO: починаючи з 1986 року, регулярно виходять поновлені стандарти. Слід зауважити, що кожна сучасна СКБД (MySQL, PostgreSQL, Microsoft SQL Server та інші) підтримує свою власну видозміну SQL, так що SQL-запит для однієї СКБД може не працювати в середовищі іншої. Але головні принципи формування SQL-запитів та їх структура однакові та відповідають стандартам ANSI/ISO. При необхідності виконання якоїсь операції над даними клієнт формує лінгвістичну конструкцію мовою SQL, яку називають SQL-запитом, і надсилає її до СКБД. СКБД опрацьовує запит, і результат його виконання (наприклад, вибірку даних) повертає клієнту. Мова, якою оперує СКБД, також може містити засоби для


конфігурування СКБД,

модифікації, форматування даних та розрахунків,

формування обмежень даних.






План

практичного заняття за темою

«Побудова SQL-запитів»


  1. Вступ. Доповідь Кривого Р.А.

  2. Постановка задач і умов розробки коллективного проекту.

  3. Доповідь студентів:

Тіщенко Валерій «Бази даних»

Панченко Денис «Мова SQL»

Ставрінов Артем «СКБД MySQL»

  1. Виконання практичної роботи.

  2. Поєднання виконаних робіт в одну виконавчу програму.

  3. Виконання додаткових завдань (в разі виконання основної роботи).

  4. Висновки за темою «За» і «Проти» роботи із певною СКБД

  5. Перспективи розвитку мови SQL

  6. Оформлення звіту

  7. Підведення підсумків





















Практична робота №12

Тема: Побудова SQL-запитів

Мета: Навчитися будувати БД із IDE Lazarus.

Завдання: побудувати таблицю БД за допомогою TDbf, заповнити її даними, та прочитати і модифікувати дані.

Хід роботи:

  1. Включіть ПК, завантажте Lazarus.

  2. Створити папку на диску D: з назвою «DB», створіть новий проект у Lazarus (Создать…-Приложение).

  3. Додайте на проект компоненти TDbf(Data Access), DataSource(Data Access) та DBGrid(Data Controls).

  4. Виділіть компонент DataSource1 і в паспорті об’єктів встановіть властивість DataSet у значення Dbf1.

  5. Виділіть сітку БД DBGrid1 і у паспортіоб’єктів встановіть властивість DataSource1.

  6. Клікніть двійчи на вільному місці форми і у відкритій процедурі створення форми FormCreate впишіть:

Dbf1.FilePath:=PChar(ExtractFileDir(Application.Location));

Dbf1.TableName:=PChar('AD.dbf');

Dbf1.TableLevel:=4;

with Dbf1.FieldDefs do begin

Clear;

Add('FIO', ftString, 150, True);

Add('Group', ftString, 18, False);

Add('Unit', ftString, 255, False);

Add('Birth', ftDate, 0, False);

Add('Visit', ftBoolean, 0, False);

end;

Dbf1.CreateTable;

Dbf1.Open;

Dbf1.Active:=true;

  1. Виділіть об’єкт Form1 та у паспорті об’єктів перейдіть на вкладку «EVENTS».

  2. Знайдіть подію OnClose і клікніть двічі.

  3. У відкритій процедурі впишіть код:

Dbf1.Active:=false;

Dbf1.Close;

  1. Виділіть об’єкт Form1 та у паспорті об’єктів перейдіть на вкладку «EVENTS».

  2. Знайдіть подію OnShow і клікніть двічі.

  3. У відкритій процедурі впишіть код:

DBGrid1.DataSource.DataSet.FieldByName('FIO').DisplayLabel:='ПIБ';

DBGrid1.DataSource.DataSet.FieldByName('Group').DisplayLabel:='Група';

DBGrid1.DataSource.DataSet.FieldByName('Unit').DisplayLabel:='Вiддiлення';

DBGrid1.DataSource.DataSet.FieldByName('Birth').DisplayLabel:='Дата народження';

DBGrid1.DataSource.DataSet.FieldByName('Visit').DisplayLabel:='Вiдвiдував?';

  1. Збережіть все (Файл-Сохранить всё как…) та запустіть программу на виконання..

  2. Внесіть дані декількох ваших співгрупників (Клавіша Insert).

  3. Складітьзвіт, описавши в ньому дії при виконанні п.2-14.






















Додаткові завдання

до практичної роботи за темою:

«Побудова SQL-запитів»


        1. Знайдіть та встановіть програму Double Commander через центр додатків Lubuntu (Головне меню-Системні-Центр додатків Lubuntu-У пошуку напишіть Double Commander).

        2. Завантажте на локальну систему початковий код цієї програми (doublecmd-0.5.11-src.tar.gz) з папки студентів на сервері (Comp0).

        3. Розпакуйте зміст архіву у окрему папку та перейдіть у неї, потім у папку src.

        4. Ознайомтесь із змістом файлів *.pas за допомогою leafpad (ПКМ на файлі-Відкрити за допомогою - Leafpad)

        5. Перегляньте підкаталоги цієї папки. Наяку платформу розрахована ця програма?





























Конспект самостійної теми «Delphi»


SQL (англ. Structured query language — мова структурованих запитів) — декларативна мова програмування для взаємодії користувача з базами даних, що застосовується для формування запитів, оновлення і керування реляційними БД, створення схеми бази даних і її модифікації, системи контролю за доступом до бази даних. Сам по собі SQL не є ні системою керування базами даних, ні окремим програмним продуктом. Не будучи мовою програмування в тому розумінні, як C або Pascal, SQL може формувати інтерактивні запити або, будучи вбудованою в прикладні програми, виступати в якості інструкцій для керування даними. Стандарт SQL, крім того, вміщує функції для визначення зміни, перевірки і захисту даних.


SQL — це діалогова мова програмування для здійснення запиту і внесення змін до бази даних, а також управління базами даних. Багато баз даних підтримує SQL з розширеннями до стандартної мови. Ядро SQL формує командна мова, яка дозволяє здійснювати пошук, вставку, обновлення, і вилучення даних, використовуючи систему управління і адміністративні функції. SQL також включає CLI (Call Level Interface) для доступу і управління базами даних дистанційно.


Перша версія SQL була розроблена на початку 1970-х років у IBM. Ця версія носила назву SEQUEL і була призначена для обробки і пошуку даних, що містилися в реляційній базі даних IBM, System R . Мова SQL пізніше була стандартизована Американськими Держстандартами (ANSI) в 1986. Спочатку SQL розроблялась як мова запитів і управління даними, пізніші модифікації SQL створено продавцями системи управління базами даних, які додали процедурні конструкції, control-of-flow команд і розширення мов. З випуском стандарту SQL:1999 такі розширення були формально запозичені як частина мови SQL через Persistent Stored Modules (SQL/PSM).


Критики SQL включає відсутність крос-платформенності , невідповідною обробкою відсутніх даних (дивіться Null (SQL)), і іноді неоднозначна граматика і семантика мови.Зміст


Історія


На початку 1970-х років в одній з дослідницьких лабораторій компанії IBM була розроблена експериментальна реляційна СУБД System R, для якої потім була створена спеціальна мова SEQUEL, що дозволяла відносно просто управляти даними в цій СУБД. Абревіатура SEQUEL розшифровувалася як англ. Structured English QUEry Language — «структурована англійська мова запитів». Пізніше з юридичних міркувань[2] мова SEQUEL була перейменована в SQL. Коли в 1986 році перший стандарт мови SQL був прийнятий ANSI (American National Standards Institute), офіційною вимовою стало [,es kju:' el] — ес-кью-ел. Попри це, навіть англомовні фахівці по колишньому часто називають SQL сіквел, замість ес-кью-ел.


Метою розробки було створення простої непроцедурної мови, якою зміг би скористатися будь-який користувач, що навіть не має навиків програмування. Власне розробкою мови запитів займалися Дональд Чемберлін (Donald D. Chamberlin) і Рей Бойс (Ray Boyce). Пет Селінджер (Pat Selinger) займалася розробкою вартісного оптимізатора (англ. cost-based optimizer), Реймонд Лорі (Raymond Lorie) займався компілятором запитів.


Варто відзначити, що SEQUEL не був єдиною мовою подібного призначення. У Каліфорнійському університеті в Берклі була розроблена некомерційна СУБД Ingres (що була, між іншим, дальнім прародичем популярної зараз некомерційної СУБД PostgreSQL), яка була реляційною СУБД, але використовувала свою власну мову QUEL, яка, проте, не витримала конкуренції за кількістю СУБД, що підтримували його, з мовою SQL.


Першими СУБД, що підтримують нову мову SQL, стали в 1979 році Oracle V2 для машин VAX від компанії Relational Software Inc. (що згодом стала компанією Oracle) і System/38 від IBM, заснована на System/R.


Перший офіційний стандарт мови SQL був прийнятий ANSI в 1986 і ISO (Міжнародною організацією зі стандартизації) в 1987 (так званий SQL-86) і дещо уточнений в 1989 році. Подальший розвиток мови постачальниками СУБД зажадав ухвалення в 1992 р. нового розширеного стандарту (ANSI SQL-92 або просто SQL2). Наступним стандартом став SQL:1999 (SQL3). В наш час[Коли?] діє стандарт, прийнятий в 2003 році (SQL:2003) з невеликими модифікаціями, внесеними пізніше.

Стандарти


Повністю історія версій стандартів-ревізій SQL:Рік Назва Коментар

1986 SQL-86, SQL-87 Вперше оприлюднено ANSI. Ратифіковано ISO в 1987.

1989 SQL-89 Невеликі зміни.

1992 SQL-92, SQL-2 Вагомі зміни.

1999 SQL:1999, SQL-3 Додано регулярні вирази, рекурсивні запити, тріґери та деякі об'єктно-орієнтовані нововведення.

2003 SQL:2003 XML-залежні нововведення.


Питання сумісності


Як і з багатьма стандартами, що мають місце в IT-індустрії, з мовою SQL виникла проблема, що у минулому багато виробників ПЗ з використанням SQL вирішили, що функціональність в поточній (на той момент часу) версії стандарту недостатня (що, в принципі, для ранніх версій SQL було певною мірою справедливо) і його бажано розширити. Що і призводить в цей час до того, що у різних виробників СУБД в ході різні діалекти SQL, в загальному випадку між собою несумісні.


До 1996 року питаннями відповідності комерційних реалізацій SQL стандарту займався в основному інститут NIST, який і встановлював рівень відповідності стандарту. Але пізній підрозділ, що займався СУБД, був розформований, і в цей час всі зусилля з перевірки СУБД на відповідність стандарту лягають на її виробника.


Вперше поняття «Рівня відповідності» було запропоноване в стандарті SQL-92. А саме, ANSI і NIST визначали чотири рівні відповідності реалізації цьому стандарту:

Entry (базовий)

Transitional (перехідний) — перевірку на відповідність цьому рівню проводив тільки інститут NIST

Intermediate (проміжний)

Full (повний)


Легко можна зрозуміти, що кожен подальший рівень відповідності свідомо мав на увазі відповідність попередньому рівню. Далі, згідно з цими рівнями стандартів будь-яка СУБД, яка відповідала рівню Entry, могла заявляти себе як «SQL-92 відповідна», хоча насправді переносимість і відповідність стандарту обмежувалося набором можливостей, що входять у цей рівень.


''Положення'' змінилося з введенням стандарту SQL:1999. Відтепер стандарт придбав модульну структуру — основна частина стандарту була винесена в розділ «SQL/Foundation», всі інші були виведені в окремі модулі. Відповідно, залишився тільки один рівень сумісності — Core, що означало підтримку цієї основної частини. Підтримка решти можливостей залишена на розсуд виробників СУБД. Аналогічне положення мало місце і з подальшими версіями стандарту.


Незалежність від конкретної СУБД


Незважаючи на наявність діалектів і відмінностей в синтаксисі, в більшості своїй тексти SQL-запитів, що містять, DDL і DML, можуть бути досить легко перенесені з однієї СУБД в іншу. Існують системи, розробники яких спочатку закладалися на застосування щонайменше кількох СУБД (наприклад: система електронного документообігу Documentum може працювати як з Oracle, так і з Microsoft SQL Server та IBM DB2). Природно, що при застосуванні деяких специфічних для реалізації можливостей такої переносимості добитися вже дуже важко.

Наявність стандартів


Наявність стандартів і набору тестів для виявлення сумісності і відповідності конкретній реалізації SQL загальноприйнятому стандарту тільки сприяє «стабілізації» мови. Правда, варто звернути увагу, що сам по собі стандарт місцями занадто формалізований і роздутий в розмірах, наприклад, Core-частину стандарту SQL:2003 включає понад 1300 сторінок тексту.

Декларативність


За допомогою SQL програміст описує тільки те, які дані потрібно витягнути або модифікувати. Те, яким чином це зробити, вирішує СУБД безпосередньо при обробці SQL-запиту. Проте не варто думати, що це повністю універсальний принцип — програміст описує набір даних для вибірки або модифікації, проте йому при цьому корисно уявляти, як СУБД розбиратиме текст його запиту. Особливо критичні такі моменти стають при роботі з великими базами даних і зі складними запитами — чим складніше сконструйований запит, тим більше він допускає варіантів написання, різних за швидкістю виконання, але тих самих за набором даних.

Недоліки

Невідповідність реляційної моделі даних


Творець реляційної моделі даних Едгар Кодд, Крістофер Дейт та їхні прихильники указують на те, що SQL не є істинно реляційною мовою. Зокрема вони указують на такі проблеми SQL[3]:

Рядки, що повторюються

Невизначені значення (null)

Явна вказівка порядку стовпчиків зліва направо

Стовпці без імені та імена стовпчиків, що дублюються

Відсутність підтримки властивості «=»

Використання покажчиків

Висока надлишковість


У опублікованому Крістофером Дейтом і Г'ю Дарвеном Третьому Маніфесті[4] вони висловлюють принципи СУБД наступного покоління і пропонують мову Tutorial D, яка є достовірно реляційною.

Складність


Хоча SQL і замислювався, як засіб роботи кінцевого користувача, врешті-решт він став настільки складним, що перетворився на інструмент програміста.

Відступи від стандартів


Незважаючи на наявність міжнародного стандарту ANSI SQL-92, багато компаній, СУБД (наприклад, Oracle, Sybase, Microsoft, MySQL), що займаються розробкою, вносять зміни до мови SQL, вживаної в розроблених ними СУБД, тим самим відступаючи від стандарту. Таким чином з'являються специфічні для кожної конкретної СУБД діалекти мови SQL.

Складність роботи з ієрархічними структурами


Раніше SQL не пропонував стандартного способу маніпуляції деревовидними структурами. Деякі постачальники СУБД пропонували свої рішення. Наприклад, Oracle використовує вираз CONNECT BY. В наш час[Коли?] як стандарт прийнята рекурсивна конструкція WITH.

Процедурні розширення


Оскільки SQL не є мовою програмування (тобто не надає засобів для автоматизації операцій з даними), введені різними виробниками розширення стосувалися в першу чергу процедурних розширень. Це збережені процедури (англ. stored procedures) і процедурні мови-«надбудови». Практично в кожній СУБД застосовується своя процедурна мова. Подібні мови для найпопулярніших СУБД приведені в такій таблиці:СУБД Коротка назва Розшифровка

Простий приклад


Простий запит для виведення списку із атрибутами Name, Address, Class із таблиці School у певній базі данних має такий вигляд:

SELECT Name, Address, Class

FROM School;












« Использорвание антропоморфной терминологии в отношении вычислительных систем - признак профессиональной незрелости»

Эдсгер Вибе Дейкстра







ї


Кривий Роман Андрійович,

викладач-спеціаліст 2-ї

категорії,

зав. лабораторією

«Комп’ютерних технологій

в бухгалтерському обліку»


Ринок СКБД


MySQL — вільна система керування реляційними базами даних.


MySQL був розроблений компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз MySQL — одна з найпоширеніших систем керування базами даних. Вона використовується, в першу чергу, для створення динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.


Ліцензування

MySQL має подвійне ліцензування. MySQL може розповсюджуватися відповідно до умов ліцензії GPL. Але за умовами GPL, якщо якась програма використовує бібліотеки MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Проте це може розходитися з планами розробників, які не бажають відкривати сирцеві тексти своїх програм. Для таких випадків передбачена комерційна ліцензія компанії Oracle, яка також забезпечує якісну сервісну підтримку. В разі використання та розповсюдження програмного забезпечення з іншими вільними ліцензіями, такими як BSD, Apache, MIT та інші, MySQL дозволяє використання бібліотек MySQL за ліцензією GPL.


Історія

MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблиць, для яких використовувалися ISAM — підпрограми низького рівня для індексного доступу до даних. У результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» — достеменно не відомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи.


Логотип MySQL у вигляді дельфіна носить ім'я «Sakila». Він був обраний з великого списку запропонованих користувачами «імен дельфіна». Ім'я «Sakila» було відправлено Open Source-розробником Ambrose Twebaze.


В січні-лютому 2008 Sun Microsystems придбала розробника системи керування базами данних MySQL за $1 млрд. Після поглинання у 2009 році Sun Microsystems компанією Oracle Corporation MySQL стала власністю Oracle.


За час розвитку під орудою Oracle дедалі більше відокремлює MySQL від спільноти і робить процес розробки все менш прозорим. Наприклад, повернута практика поставки власницьких розширених функцій в Enterprise-версії MySQL, спостерігається приховування інформації про вразливості, зі складу виключений тестовий набір, закритий доступ до більшої частини системи відстеження помилок та припинено публікація згрупованого логу змін, що дозволяє судити про прив'язку патчів до конкретних змін.


MySQL — компактний багатопотоковий сервер баз даних. Характеризується високою швидкістю, стійкістю і простотою використання.


MySQL вважається гарним рішенням для малих і середніх застосувань. Сирцеві коди сервера компілюються на багатьох платформах. Найповніше можливості сервера виявляються в UNIX-системах, де є підтримка багатопоточності, що підвищує продуктивність системи в цілому.


Можливості сервера MySQL:


простота у встановленні та використанні;

підтримується необмежена кількість користувачів, що одночасно працюють із БД;

кількість рядків у таблицях може досягати 50 млн;

висока швидкість виконання команд;

наявність простої і ефективної системи безпеки.


КритикаMySQL версії 5.1 має 20 відомих серйозних помилок в додаток до 35 дефектів версії 5.0. Критичні помилки іноді не виправляються протягом тривалих періодів часу. Одним із прикладів є критична помилка, що відома з 2003 року.


MySQL показує низьку ефективність при використанні її як сховища даних, це частково пов'язано з нездатністю використовувати декілька процесорів для обробки одного запиту. До того ж, MySQL часто критикують за те, що ця СКБД має розходження зі стандартом SQL щодо трактування NULL значень і значення за замовчуванням.


Відгалуження MySQL

Продаж MySQL Sun Microsystems у 2008 і наступне поглинання Sun з боку Oracle було несхвально сприйнято спільнотою вільного програмного забезпечення. Незалежними групами, в тому числі навколо колишніх розробників MySQL, були створені відгалуження (форки) проекту, серед яких


Drizzle

MariaDB

PerconaDB


PostgreSQL (вимовляється «Пост-грес-К'ю-ель», або «постгрес» (приклад вимови)) — об'єктно-реляційна система керування базами даних (СКБД). Є альтернативою як комерційним СКБД (Oracle Database, Microsoft SQL Server, IBM DB2 та інші), так і СКБД з відкритим кодом (MySQL, Firebird, SQLite).


Порівняно з іншими проектами з відкритим кодом, такими як Apache, FreeBSD або MySQL, PostgreSQL не контролюється якоюсь однією компанією, її розробка можлива завдяки співпраці багатьох людей та компаній, які хочуть використовувати цю СКБД та впроваджувати у неї найновіші досягнення.


Сервер PostgreSQL написаний на мові C. Зазвичай розповсюджується у вигляді набору текстових файлів із сирцевим кодом. Для інсталяції необхідно відкомпілювати файли на своєму комп'ютері і скопіювати в деякий каталог. Весь процес детально описаний в документації.


Історія

PostgreSQL — широко розповсюджена система керування базами даних з відкритим сирцевим кодом. Прототип був розроблений в Каліфорнійському університеті Берклі в 1987 році під назвою POSTGRES, після чого активно розвивався і доповнювався. В червні 1990 року з'явилась друга версія із переробленою системою правил маніпулювання та роботи з таблицями, у 1991 році — третя версія, із доданою підтримкою одночасної роботи кількох менеджерів збереження, покращеним механізмом запитів і доповненою системою внутрішніх правил. В цей час POSTGRES використовувався для реалізації великих систем, таких як: система аналізу фінансових даних, пакет моніторингу функціональності потоків, база даних відстеження астероїдів, система медичної інформації, кілька географічних систем. POSTGRES також використовувався як навчальний інструмент в кількох університетах. В 1992 році POSTGRES став головною СКБД наукового комп'ютерного проекту Sequoia 2000. У 1993 кількість користувачів подвоїлась. Стало очевидним, що для підтримки і подальшого розвитку необхідні великі затрати часу на дослідження баз даних, тому офіційно проект Берклі було зупинено на версії 4.2. У 1994 році Andrew Yu і Jolly Chen додали інтерпретатор мови SQL, вдосконалили сирцевий код і виклали в Інтернеті свою реалізацію під назвою Postgres95. В 1996 році програмний продукт було перейменовано на PostgreSQL із початковою версією 6.0. У наш час підтримкою і розробкою займається група спеціалістів у галузі баз даних, які добровільно приєднались до цього проекту.


Основні можливості

Функції

Функції дозволяють виконувати деякий код безпосередньо сервером бази даних. Ці функції можуть бути написані на SQL, який має деякі примітивні програмні оператори, такі як галуження та цикли. Але гнучкішою буде функція написана на одній із багатьох мов програмування, з якими PostgreSQL може працювати. До таких мов належать:


Вбудована мова, яка зветься PL/pgSQL, подібна до процедурної мови PL/SQL компанії Oracle.

Мови розробки сценаріїв: PL/Perl, PL/Python, PL/Tcl, PL/Ruby, PL/sh.

Класичні мови програмування C, C++, Java (за допомогою PL/Java).

Функції можуть бути написані, а потім виконуватись із привілеями користувача, який її викликав, або із привілеями користувача, який її написав.


Індекси

В PostgreSQL є підтримка індексів наступних типів: B-дерево, хеш, R-дерево, GiST, GIN. При необхідності можна створити нові типи індексів.


Багатоверсійність (MVCC)

PostgreSQL підтримує одночасну модифікацію БД декількома користувачами за допомогою механізму Multiversion Concurrency Control (MVCC). Завдяки цьому виконуються вимоги ACID, і практично відпадає потрібність в блокуванні зчитування.


Типи даних

PostgreSQL підтримує великий набір вбудованих типів даних:


Числові типи

Цілі

З фіксованою крапкою

З нефіксованою крапкою

Грошовий тип

Символьні типи довільної довжини

Двійкові типи (включаючи BLOB)

Типи «дата/час»

Булевий тип

Перерахування

Геометричні примітиви

Мережеві типи

IP і IPv6-адреси

CIDR-формат

МАС-адреса

UUID-ідентификатор

XML-дані

JSON-дані

Масиви

OID-типи

Псевдотипи

Крім того, користувач може самостійно створювати нові необхідні йому типи та програмувати для них механізми індексування за допомогою GiST.


Об'єкти користувача

PostgreSQL може бути розширено користувачем для власних потреб практично в будь-якому аспекті. Є можливість додавати власні:


Перетворення типів

Типи даних

Домени (для користувача типи з самого початку з накладеними обмеженнями)

Функції (включаючи агрегатні)

Індекси

Оператори (включаючи перевизначення вже існуючих)

Процедурні мови

Успадкування

Таблиці можуть успадковувати характеристики та набори полів від інших таблиць (батьківських). При цьому дані, які додаються до породженої таблиці, автоматично будуть брати участь (якщо це не вказано окремо) в запитах до батьківської таблиці. Цей функціонал в поточний час не є повністю завершеним. Однак він достатній для практичного використання.


Тригери

Тригери визначаються як функції, що ініціюються DML-операціями. Наприклад, операція INSERT може запускати тригер, перевіряючий доданий запис на відповідності певним умовам. При написанні функцій для тригерів можуть використовуватися різні мови програмування. Тригери асоціюються з таблицями. Множинні тригери виконуються в алфавітному порядку.


Інші можливості

Дотримання принципів ACID

Відповідність стандартам ANSI SQL-92 і SQL-99

Підтримка запитів з OUTER JOIN, UNION, UNION ALL, EXCEPT і підзапитів

Послідовності

Контроль цілісності

Реплікація

Загальні табличні вирази й рекурсивні запити

Аналітичні функції

Підтримка Unicode (UTF-8)

Підтримка регулярних виразів у стилі Perl

Вбудована підтримка SSL і Kerberos

Протокол поділюваних блокувань

Завантажувані розширення, підтримують SHA1, MD5, XML і іншу функціональність (API відкритий)

Засоби для генерації сумісного з іншими системами SQL-коду та імпорту з інших систем

Надійність

Згідно з результатами автоматизованого дослідження різного ПЗ на предмет помилок, у вихідному коді PostgreSQL було знайдено 20 проблемних місць на 775 000 рядків вихідного коду (в середньому, одна помилка на 39 000 рядків коду). Для порівняння:


MySQL — 97 проблем, одна помилка на 4 000 рядків коду;

FreeBSD (цілком) — 306 проблем, одна помилка на 4 000 рядків коду;

Linux (тільки ядро) — 950 проблем, одна помилка на 10 000 рядків коду.


















Література і джерела:


              1. https://uk.wikipedia.org/wiki/Firebird

              2. https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%B8%D1%85

              3. https://uk.wikipedia.org/wiki/PostgreSQL

              4. Душан Петкович. Microsoft SQL Server 2012. Руководство для начинающих

              5. Бейли Л. Head First SQL.

Фото з відкритого заняття




































Відгуки студентів




Зміст:


1. Анотація

2. Рецензія

3. Вступ

4. План практичного заняття за темою «Побудова SQL-запитів»

5. Інструкція до Практичної роботи № 12

6. Опорний конспект за темою «SQL-запити»

7. Стаття «Вибір СКБД на ринку»

8. Фото з відкритого заняття.

9. Відгуки студентів про заняття

10. Література і джерела