ru ua
 

    Залишити заявку

    Заповніть всі поля та відправте заявку, після вивчення деталей запиту з вами зв'яжеться наш менеджер


    Телефонуйте, пишіть

    і ми з радістю відповімо на всі ваші запитання

    Контакти:

    Графік роботи:

    пн-пт: з 9:00 до 18:00

    Техпідтримка:

    SQL

    SQL (англ. Structured Query Language) — декларативна мова програмування, що застосовується для створення, модифікації та керування даними в реляційній базі даних, що керується відповідною системою керування базами даних (СКБД).

    Доступною мовою SQL — це структурована мова запитів, яка створена для того, щоб отримувати з бази даних необхідну інформацію. Якщо описати схему роботи SQL простими словами, то фахівець формує запит і спрямовує їх у базу. Та своєю чергою обробляє цю інформацію, «розуміє», що саме потрібно фахівцю, і надсилає відповідь.

    Дані зберігаються у вигляді таблиць, вони структуровані та розкладені по рядках та стовпцях, щоб ними легше було оперувати. Такий спосіб зберігання інформації називають реляційними базами даних (від англ. relation – «відносини»). Назва вказує на те, що об’єкти у такій базі пов’язані певними відносинами.

    Навіщо потрібен SQL

    Під час створення веб-застосунків практично завжди використовуються бази даних. Там зберігається інформація, необхідна для роботи сайту – контент, логіни/паролі, налаштування та дані про відвідувачів та клієнтів. За допомогою SQL розробник записує та виводить дані з бази. Таким чином, SQL – зв’язуюча ланка, яка забезпечує взаємодію програми з базою даних та інформацією, яка там зберігається.

    SQL використовують різні види фахівців:

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

    Мова універсальна і має чітко визначену структуру за рахунок усталених стандартів. Взаємодія з базами даних відбувається швидко навіть у ситуаціях, коли обсяги даних великі (Big Data). Крім того, ефективне управління можливе навіть без особливих знань коду.

    Оператори в SQL

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

    1. Оператори визначення даних (Data Definition Language, DDL)
      • CREATE створює об’єкт БД (базу даних, таблицю, уявлення, користувача тощо)
      • ALTER змінює об’єкт
      • DROP видаляє об’єкт
    1. Оператори маніпуляції даними (Data Manipulation Language, DML)
      • SELECT вибирає дані, що задовольняють заданим умовам
      • INSERT додає нові дані
      • UPDATE змінює наявні дані
      • DELETE видаляє дані
    1. Оператори визначення доступу до даних (Data Control Language, DCL)
      • GRANT надає користувачеві або групі дозволи на певні операції з об’єктом
      • REVOKE відкликає раніше видані дозволи
      • DENY задає заборону, яка має пріоритет над дозволом
    1. Оператори керування транзакціями (Transaction Control Language, TCL)
      • COMMIT застосовує транзакцію
      • ROLLBACK відкочує всі зміни, зроблені у контексті поточної транзакції
      • SAVEPOINT ділить транзакцію на дрібніші ділянки

    Поняття СКБД

    Самі собою таблиці чи база даних неспроможні виконувати операції, а у СКБД можна створювати нові таблиці, видаляти непотрібні дані, налаштовувати ключі та обробляти запити. Основні завдання СКБД:

    • підтримка мов баз даних;
    • безпосереднє керування даними;
    • керування буферами оперативної пам’яті;
    • керування транзакціями;
    • резервне копіювання та відновлення після збоїв.

    Одні з найпопулярніших реляційних СКБД – MySQL, Oracle Database, PostgreSQL та MS SQL Server. SQL стандартизований, але в кожній з них є свої різновиди мови, які називаються діалектами.

    Основні команди SQL

    SHOW DATABASES

    SQL команда, яка відповідає за перегляд доступних баз даних.

    CREATE DATABASE

    Команда для створення нової бази даних.

    USE

    За допомогою цієї SQL-команди USE вибирається база даних, необхідна для подальшої роботи з нею.

    SOURCE

    А SOURCE дозволить виконати одразу кілька SQL-команд, що містяться у файлі з розширенням .sql.

    DROP DATABASE

    Стандартна SQL-команда видаляє цілу базу даних.

    SHOW TABLES

    За допомогою цієї нескладної команди можна побачити всі таблиці, доступні в базі даних.

    CREATE TABLE

    SQL-команда для створення нової таблиці:

    CREATE TABLE <table_name1> (
      <col_name1><col_type1>,
      <col_name2><col_type2>,
      <col_name3><col_type3>
      PRIMARY KEY(<col_name1>),
      FOREIGN KEY(<col_name2>) REFERENCES <table_name2>(<col_name2>)
    );

    Обмеження цілісності під час використання CREATE TABLE

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

    • осередок таблиці не може мати значення NULL;
    • первинний ключ — PRIMARY KEY(col_name1, col_name2, …);
    • зовнішній ключ — FOREIGN KEY(col_namex1, …, col_namexn) REFERENCES table_name(col_namex1, …, col_namexn).

    Можна встановити більше одного первинного ключа. В цьому випадку вийде складовий первинний ключ.

    Приклад

    Створіть таблицю «instructor»:

    CREATE TABLE instructor (
      ID CHAR(5),
      name VARCHAR(20) NOT NULL,
      dept_name VARCHAR(20),
      salary NUMERIC(8,2),
      PRIMARY KEY (ID),
      FOREIGN KEY (dept_name) REFERENCES department(dept_name)
    );

    DESCRIBE

    За допомогою DESCRIBE можна переглянути різні відомості (тип значень, є ключем чи ні) про стовпці таблиці.

    INSERT

    Команда INSERT INTO в SQL відповідає за додавання даних до таблиці:

    INSERT INTO <table_name> (<col_name1>, <col_name2>, <col_name3>, …)
      VALUES (<value1>, <value2>, <value3>, …);

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

    INSERT INTO <table_name>
      VALUES (<value1>, <value2>, <value3>, …);

    UPDATE

    SQL-команда для оновлення даних таблиці:

    UPDATE <table_name>
      SET <col_name1> = <value1>, <col_name2> = <value2>, ...
      WHERE <condition>;

    DELETE

    SQL команда DELETE FROM використовується для видалення даних з таблиці.

    DROP TABLE

    А так можна видалити всю таблицю повністю.

    SELECT

    Далі ми розглянемо основні команди SQL, які дозволяють працювати з даними. До однієї з таких SQL-команд відноситься SELECT для отримання даних із вибраної таблиці:

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>;

    Наступною командою можна вивести всі дані з таблиці:

    SELECT * FROM <table_name>;

    SELECT DISTINCT

    У стовпцях таблиці можуть міститися дані, що повторюються. Використовуйте SELECT DISTINCT, щоб отримати тільки ті дані, які не повторюються.

    SELECT DISTINCT <col_name1>, <col_name2>, …
      FROM <table_name>;

    WHERE

    Можна використовувати ключове слово WHERE у SELECT для вказівки умов у запиті:

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      WHERE <condition>;

    У запиті можна задавати такі умови:

    • порівняння тексту;
    • порівняння чисельних значень;
    • логічні операції AND (і), OR (або) та NOT (заперечення)

    Приклад

    Спробуйте виконати такі команди. Зверніть увагу на умови, задані у WHERE:

    SELECT * FROM course WHERE dept_name='Comp. Sci.';
    SELECT * FROM course WHERE credits>3;
    SELECT * FROM course WHERE dept_name='Comp. Sci.' AND credits>3;

    GROUP BY

    Оператор GROUP BY часто використовується з агрегатними функціями, такими як COUNT, MAX, MIN, SUM та AVG для групування вихідних значень.

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      GROUP BY <col_namex>;

    Приклад

    Виведемо кількість курсів для кожного факультету:

    SELECT COUNT(course_id), dept_name
      FROM course
      GROUP BY dept_name;

    HAVING

    Ключове слово HAVING було додано в SQL тому, що WHERE не може використовуватися для роботи з агрегатними функціями.

    SELECT <col_name1>, <col_name2>, ...
      FROM <table_name>
      GROUP BY <column_namex>
      HAVING <condition>

    Приклад

    Виведемо список факультетів, які мають більше одного курсу:

    SELECT COUNT(course_id), dept_name
      FROM course
      GROUP BY dept_name
      HAVING COUNT(course_id)>1;

    ORDER BY

    ORDER BY використовується для сортування результатів запиту зі спадання або зростання. ORDER BY відсортує за зростанням, якщо не буде вказано спосіб сортування ASC або DESC.

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      ORDER BY <col_name1>, <col_name2>, … ASC|DESC;

    Приклад

    Виведемо список курсів щодо зростання та зменшення кількості кредитів:

    SELECT * FROM course ORDER BY credits;
    SELECT * FROM course ORDER BY credits DESC;

    BETWEEN

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

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      WHERE <col_namex> BETWEEN <value1> AND <value2>;

    Приклад

    Виведемо список інструкторів, чия зарплата більша за 50 000, але менша за 100 000:

    SELECT * FROM instructor
      WHERE salary BETWEEN 50000 AND 100000;

    LIKE

    Оператор LIKE використовується в WHERE, щоб встановити шаблон пошуку схожого значення.

    Є два вільні оператори, які використовуються в LIKE:

    • % (жодного, один або кілька символів);
    • _ (один символ).
    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      WHERE <col_namex> LIKE <pattern>;

    Приклад

    Виведемо список курсів, в імені яких міститься «to», та список курсів, назва яких починається з «CS-»:

    SELECT * FROM course WHERE title LIKE '%to%';
    SELECT * FROM course WHERE course_id LIKE 'CS-___';

    IN

    За допомогою IN можна вказати кілька значень для оператора WHERE:

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      WHERE <col_namen> IN (<value1>, <value2>, …);

    Приклад

    Виведемо список студентів із напрямків Comp. Sci., Physics та Elec. Eng.:

    SELECT * FROM student
      WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

    JOIN

    JOIN використовується для зв’язку двох або більше таблиць за допомогою загальних атрибутів усередині них.

    SELECT <col_name1>, <col_name2>, …
      FROM <table_name1>
      JOIN <table_name2>
      ON <table_name1.col_namex> = <table2.col_namex>;

    Приклад

    Виведемо список усіх обов’язкових курсів та деталі про них:

    SELECT prereq.course_id, title, dept_name, credits, prereq_id
      FROM prereq
      LEFT OUTER JOIN course
      ON prereq.course_id=course.course_id;

    VIEW

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

    Створення

    CREATE VIEW <view_name> AS
      SELECT <col_name1>, <col_name2>, …
      FROM <table_name>
      WHERE <condition>;

    Видалення

    DROP VIEW <view_name>;

    Агрегатні функції

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

    • COUNT(col_name) — повертає кількість рядків;
    • SUM(col_name) — повертає суму значень у цьому стовпці;
    • AVG(col_name) — повертає середнє значення даного стовпця;
    • MIN(col_name) — повертає найменше значення даного стовпця;
    • MAX(col_name) — повертає найбільше значення даного стовпця.

    Вкладені підзапити

    Вкладені підзапити – це SQL-запити, які включають вирази SELECT, FROM та WHERE, вкладені в інший запит.

    Приклад

    Знайдемо курси, які викладалися восени 2009 та навесні 2010 років:

    SELECT DISTINCT course_id
      FROM section
      WHERE semester = 'Fall' AND year= 2009 AND course_id IN (
        SELECT course_id
        FROM section
        WHERE semester = 'Spring' AND year= 2010
      );

    Див. також

    PHP

    Apache