SQL – один з найпоширеніших мов програмування для створення та управління базою даних, а також для проведення різноманітних дій з самими даними.
Як показує практика, він досить простий в освоєнні і максимально використовує стандартну лексику англійської мови. Як і будь-яка інша мова програмування, SQL має власну логіку і синтаксис, набір основних команд і правила їх використання.
Класифікація команд мови SQL
Всі стандартні команди SQL можна розглядати виходячи з їх призначення. Як основу внегласной класифікації можна взяти такі набори, як: Команди для побудови запитів. Команди вбудованих процедур і функцій. Команди тригерів і системних таблиць. Набори комбінацій для роботи з датою і рядковими змінними. Команди для роботи з даними і таблицями. Дану класифікацію можна продовжувати до безкінечності, але основні набори команд мови SQL будуть побудовані саме виходячи з цих типів.
Розглядаючи класифікацію мови, не можна не згадати про те, що він є універсальним, про що говорить сфера його використання. Ця мова програмування та його різновиди задіюються не тільки в стандартному середовищі, але і в інших програмах, які, так чи інакше, ви використовували.
Сферу використання SQL можна розглядати з точки зору офісного програмного забезпечення, а саме MicrosoftAccess. Ця мова, а точніше, його різновид — MySQL, дозволяє адмініструвати бази даних у мережі Internet. Навіть середовище розробки Oracle використовує в основі своїх запитів команди SQL.
Використання SQL в MicrosoftAccess
Одним з найпростіших прикладів використання мови для програмування баз даних вважається пакет програмного забезпечення MicrosoftOffice. Вивчення цього програмного продукту передбачено шкільним курсом інформатики, а в одинадцятому класі розглядається система управління базою даних MicrosoftAccess.
Саме при вивченні цього додатка учні знайомляться з мовою розробки баз даних і отримують базове розуміння всього в нього входить. SQL команди Access досить примітивні, звичайно ж, якщо розглядати їх на професійному рівні. Виконання таких команд дуже просте, а створюються вони у пристосованому редакторі коду. Розглянемо конкретний приклад: SELECT Pe_SurName FROM Pherson WHERE Pe_Name = 'Марія'; Виходячи з синтаксису команди можна зрозуміти, що вона поверне користувачеві прізвище людини, в даному випадку жінки на ім'я Мері, яка зберігається в таблиці бази даних Contacts. Хоч і використання SQL Access обмежена, іноді такі прості запити дуже сильно полегшують виконання поставленого завдання.
Використання команд SQL в Oracle
Oracle – це, мабуть, єдиний серйозний конкурент Microsoft SQL Server. Саме це середовище розробки і управління базою даних постійно призводить до вдосконалення функцій програмного продукту компанії Microsoft, так як конкуренція - це двигун прогресу. Незважаючи на постійне суперництво, команди SQL Oracle повторюють SQL. Варто відзначити, що хоч Oracle і вважається практично повною копією SQL, логіка цієї системи і мови в цілому вважається простіше.
Система Oracle при використанні певного набору команд не має такої складної структури. Якщо розглядати можливості даних середовищ розробки баз даних Oracle не має складної структури вкладених запитів. Така різниця дозволяє у багато разів прискорити роботу з даними, але, на противагу, веде до нераціонального використання пам'яті, в деяких окремих випадках. Структура Oracle в основному побудована на тимчасових таблицях і їх використанні. Як приклад: команди SQL в даній системі будуються за аналогією зі стандартами самої мови SQL, хоча незначно відрізняються від нього. SELECTCONCAT(CONCAT(CONCAT('Працівник ', sname), CONCAT(SUBSTR(fname, 0 1), SUBSTR(otch, 0 1))), CONCAT('принятнаработу ', acceptdate)) FROM employees WHERE acceptdate > to_date('010180','dd.mm.yyyy'); Даний запит поверне дані про співробітників, які прийняті на роботу в певний проміжок часу. Хоч структура запиту відрізняється від Microsoft SQL Server, виконання команд SQL в цих системах схоже, за винятком дрібних деталей.
Використання SQL в мережі Internet
З появою всесвітньої павутини, тобто інтернету, сфера використання мови SQL розширюється. Як відомо, в мережі зберігається маса інформації, але вона не хаотично розташована, а розміщена на сайтах і серверах за певними критеріями. За зберігання інформації в Інтернеті, як і в інших місцях, відповідають безпосередньо бази даних, а сайти є системами управління. Як правило, сайти і їх програмний код організовані на різних мовах програмування, але в основі баз даних лежить одна з різновидів SQL, а саме мова створення баз даних, орієнтований під веб-інтерфейси MySQL. Синтаксис і основний набір команд цієї мови повністю копіюють звичний всім SQL, але з деякими своїми доповненнями, які і дають йому відміну від Microsoft tSQL Server. Команди SQL повністю схожі не тільки з синтаксису, але й із стандартного набору службових слів. Різниця полягає тільки у виклику і структуруванні запиту. Для прикладу можна розглянути запит для створення нової таблиці, що саме вона є першим, чого навчають дітей в школах інформатики:
$link = mysqli_connect('localhost', "root", ", 'tester'); if ( !$link ) die("Помилка"); $query = 'create table users( login VARCHAR(20), password VARCHAR(20) )'; if (mysqli_query($link, $query)) echo "Таблиця створена."; elseecho "Таблиця не створена: ".mysqli_error(); mysqli_close($link); В результаті виконання такого запиту можна отримати нову таблицю "Юзери", в якій буде два поля: логін і пароль. Синтаксис змінений під Веб, але в основу покладені команди MicrosoftSQLServer.
Побудова запитів MicrosoftSQLServer
Вибірка з таблиць певного набору даних одна з основних завдань SQL. Для таких операцій передбачена команда select в SQL. Саме про неї піде мова нижче.
Правила побудова команди дуже прості, а сама команда select в SQL будується наступним чином. Наприклад, є таблиця, в якій є дані про працівника, яка, наприклад, має ім'я Person. Поставимо задачу, що з таблиці потрібно вибрати дані про співробітників, дата народження яких - у проміжку від першого січня до першого березня поточного року включно. Для такої вибірки необхідно виконати команду SQL, в якій буде не тільки стандартна конструкція, але й умова вибору: Select * from Person Where P_BerthDay >= '01/01/2016' and P_BerthDay = '01/01/2016' and P_BerthDay <= ‘03/01/2016’
Однак це усього лише вибір чого-небудь. Він, по суті своїй, не впливає ні на що, а лише надає інформацію. Але якщо ви вирішили зайнятися мовою SQL серйозно, вам доведеться навчиться вносити зміни до бази даних, так як їх побудова без цього просто неможливо. Як це робиться, буде розглянуто трохи нижче.
Основні команди SQL для зміни даних
Синтаксис мови побудований не тільки для виконання запитів, але і для маніпуляцій з даними. В основному завданням програміста баз даних є написання скриптів для вибірок і звітів, але іноді необхідно вносити правки в таблиці. Список команд SQL для таких дій невеликий і складається з трьох основних команд: Insert (пер. Вставити). Update (пер. Оновлення). Delete (пер. Видалити). Призначення цих команд легко визначити, для цього досить буде всього лише перевести їх назва. Ці команди прості у використанні і не мають складну схему побудови, але варто згадати, що деякі з них, при неправильному використанні можуть завдати непоправної шкоди базі. Як правило, перед використанням такі MSSQL команди потрібно продумати і врахувати всі можливі наслідки їх виконання. Вивчивши дані команди, ви зможете повноцінно розпочати роботу з таблицями баз даних, тим самим видозмінювати її і вносити якісь нові перменние або видаляти старі.
Команда Insert
Для вставки даних у таблицю використовується найбезпечніша команда — Insert. Неправильно вставлені дані завжди можна видалити і внести в базу даних заново. Команда Insert призначена для вставки в таблицю нових даних та дозволяє додавати як повний набір, так і вибірково. Для прикладу розглянемо команду вставити раніше наведену таблицю Person. Для того щоб внести дані в таблицю необхідно виконати команду SQL, яка дозволить вставити всі дані в таблицю та заповнити її вибірково. Insert into person Select 'Григор'єв','Виталий','Петрович','01/01/1988' Команди MS SQL SERVER такого плану автоматично заповнюють всі клітинки таблиці із зазначеними даними. Бувають ситуації, коли у співробітника немає по батькові, скажімо, він по обміну приїхав працювати з Німеччини. У такому випадку потрібно виконати команду вставлення даних, яка занесе в таблицю тільки те, що необхідно. Синтаксис такої команди буде наступним: Insertintoperson(P_Name, P_SurName ,P_BerthDay) Values ('Девід', 'Гук','02/11/1986') Така команда заповнить тільки вказані клітинки, а всі інші будуть мати значення null.
Команда для зміни даних
Для зміни даних як всієї рядка, так і деяких осередків використовується команда Update SQL. Виконувати таку команду потрібно тільки з певною умовою, а саме точно вказувати в який рядок з номером необхідно внести зміни. Команда Update SQL має нескладний синтаксис. Для правильного використання необхідно вказати, які дані, в якій колонці і в якій записи варто змінити. Далі скласти скрипт і виконати його. Розглянемо приклад. Потрібно змінити дату народження Девіда Гука, який внесено в таблицю співробітників під номером 5. Update Person Set P_BerthDay = '02/10/1986' where P_ID = 5 Умова (в даному скрипті) не дасть змінити дату народження у всіх записах таблиці, а поновить потрібні. Саме цією командою програмісти користуються найчастіше так вона дозволяє змінювати дані в таблиці не завдаючи істотної шкоди всієї інформації.
Команди для використання вбудованих процедур і функцій
З допомогою мови SQL можна не тільки будувати запити, але і створювати вбудовані механізми для роботи з даними. Як правило, бувають моменти, коли потрібно використовувати в тілі одного запиту на вибірку, написану раніше. Якщо судити логічно, то потрібно скопіювати текст вибірки і вставити у потрібне місце, але можна обійтися і більш простим рішенням. Розглянемо приклад, коли на робочому інтерфейсі виведена кнопка для друку звіту, скажімо в Excel. Ця операція буде виконуватися по мірі необхідності. Для таких цілей служать вбудовані процедури. Команди SQL запитів, в даному випадку, полягають у процедуру і викликаються за допомогою команди SQLExec. Припустимо, що була створена процедура для виведення дати народження співробітників з раніше описаною таблиці Person. У такому випадку немає необхідності писати весь запит. Для отримання необхідної інформації достатньо виконати команду Exec[имя процедури]і передати необхідні для вибірки параметри. Як приклад можна розглянути механізм створення процедури такого характеру: CREATEPROCEDUREPrintPerson @DB smalldatetime @DE smalldatetime AS SET NOCOUNT ON; SELECT * from Person FROM HumanResources.vEmployeeDepartmentHistory WHERE P_BerthDay >= @DB and P_BerthDay <= @DE ANDEndDateISNULL; GO Дана процедура поверне всі відомості про співробітників, день народження яких буде перебувати в заданому часовому періоді.
Організація цілісності даних. Тригери
Деякі MS SQL-команди, можна навіть сказати, конструкції, дозволяють не тільки організувати маніпуляції з даними, але і забезпечити їх цілісність. Для таких цілей в мові призначені системні конструкції, які створює сам програміст. Це так звані тригери, які зможуть забезпечити контроль даних. В цьому випадку для організації перевірки умов використовуються стандартні команди SQL-запитів. У тригерах можна створювати масу умов та обмежень для роботи з даними, які допоможуть управляти не тільки доступом до інформації, але й заборонити видалення, редагування або вставку даних. Типи команд SQL, які можна використовувати в тригері, не обмежені. Розглянемо на прикладі. Якщо описувати механізм створення тригера, то типи команд SQL тут такі ж, як при створенні процедури. Сам алгоритм буде описаний нижче. Першим ділом потрібно описати службову команду для створення тригерів: CREATE TRIGGER Person_Insert Далі вказати для якої таблиці: ONPerson Вказуємо, для якої операції з даними (у нашому випадку це операція зміни даних). Наступним кроком буде вказівка таблиць та змінних: declare @ID int. @Date smalldatetime @nID int. @nDatesmalldatetime Далі оголошуємо курсори для вибору даних з таблиць видалення та вставлення даних: DEclare cursor C1 for select P_ID, P_BerthDay from Inserted DEclare cursor C2 for select P_ID, P_BerthDay deleted from Задаємо кроки вибору даних. Після, в тілі курсорів прописуємо умова і реакцію на нього: if @ID = @nID and @nDate = '01/01/2016' begin sMasseges 'Виконати операцію неможливо. Дата не підходить' end Варто згадати про те, що тригер можна не тільки створити, але і вимкнути на час. Таку маніпуляцію може провести тільки програміст, виконавши команди SQL SERVER: altertablePERSONdisabletriggerall – для відключення всіх тригерів, створених для цієї таблиці, і, відповідно, altertablePERSONenabletriggerall – для їх включення. Ці основні команди SQL використовуються найчастіше, але їх комбінації можуть бути найрізноманітнішими. SQL - дуже гнучкий мову програмування і дає розробнику максимум можливостей.
Висновок
З усього вищесказаного можна зробити єдиний висновок: знання мови SQL просто необхідно тим, хто збирається серйозно зайнятися програмуванням. Він лежить в основі всіх виконуваних операцій як в інтернеті, так і в домашніх базах даних. Саме тому майбутній програміст обов'язково повинен знати безліч команд цієї мови, так як лише з їх допомогою можна, так сказати, спілкуватися з комп'ютером. Звичайно, недоліки є, як і у всьому в цьому світі, але вони настільки незначні, що просто меркнуть перед достоїнствами. Серед всіх мов програмування SQL практично єдина у своєму роді, адже вона є універсальною, і знання з написання скриптів та кодів лежать в основі практично всіх сайтів. Головним достоїнством SQL безоговорчно можна вважати його простоту, адже, як-не-як, саме він внесений в шкільну програму. З ним може впоратися навіть починаючий програміст, толком не розбирається в мовах.