SQL: відмінності між версіями
Вилучено вміст Додано вміст
Bunyk (обговорення | внесок) Створена сторінка: '''SQL''' (''Structured query language'' — мова структурованих запитів) — [[w:декларативне програмування|де... |
Bunyk (обговорення | внесок) Немає опису редагування |
||
Рядок 7:
== Підручник ==
SQL краще вчити на практиці, тому треба запустити якусь [[w:СУБД|СУБД]], наприклад [[w:mySQL|mySQL]]. Можна використати [http://www.w3schools.com/sql/sql_tryit.asp веб-інтерфейс w3schools], правда там не можна змінювати базу.
Загалом мову SQL поділяють на дві частини: мову маніпуляції даними ( Data Manipulation Language (DML) ), та мову опису даних ( Data Definition Language (DDL) ). Мова SQL не чутлива до регістру, і оператори пишуть великими буквами тільки для зручності.
Рядок 14:
Дозволяє нам описати структуру даних.
Для інформації про типи даних можна переглянути
Нехай маємо базу даних університету, і користувача, що має повний доступ до цієї бази. Створимо таблицю з людьми:
<source lang="sql">
</source>
Щоб потім змінити структуру таблиці використовують команду <code>ALTER</code>, наприклад:
<source lang="sql">
</source>
Крім цього таблиці можна перейменовувати
<source lang="sql">
</source>
та звісно видаляти поля:
<source lang="sql">
</source>
=== Мова маніпуляції даними ===
==== SELECT ====
Оператор <code>SELECT</code> дозволяє вибирати дані з бази. Загалом оператор <code>SELECT</code> виглядає так:
<source lang="sql">
</source>
Імена полів записуються через кому. Якщо потрібно вибрати всі поля, пишуть зірочку ("*"). При потребі можна уточнити з якої таблиці брати поле, додавши перед його іменем.
<code>SELECT</code> може видати нам рядки що повторюються. Якщо ми хочемо мати тільки унікальні значення, то можемо уникнути повторень командою <code>DISTINCT</code>.
SELECT DISTINCT поля FROM таблиці;▼
<source lang="sql">
<source lang="sql">
Умова дозволяє відкинути непотрібні нам значення. Загалом в умові певні поля порівнюються з певними значеннями, чи між собою. Текстові значення беруться в одинарні лапки (можна і в подвійні). Для порівняння можна користуватись такими операторами:
Рядок 50 ⟶ 65:
| <, >, <=, >= || Менше, більше, менше рівно, більше рівно || age>=18
|-
| BETWEEN || Всі значення що знаходяться між даними двома включно || <source lang="sql">BETWEEN 'Іванов' AND 'Петров'</source>
|-
| LIKE || Порівняння з шаблоном || <source lang="sql">surname LIKE 'І%'</source>
|-
| IN || Приймає одне з перелічених значень || <source lang="sql">faculty IN ('Кубик','Радіофак','Мехмат')</source>
|}
В шаблоні для <code>LIKE</code> можна використовувати '%' як замінник для будь-якого числа будь-яких символів, та '_' як замінник для довільного одного символа.
Також в умові можна використовувати оператори OR, AND та NOT, та дужки.
Також до запиту SELECT можна додати команду ORDER BY, що дозволяє впорядкувати результат за заданими стовпцями. Щоб сортувати в зворотньому порядку після стовпців за якими сортують пишуть DESC:
SELECT name FROM students ORDER BY name DESC;▼
<source lang="sql">
</source>
Варто також зауважити, що ORDER BY не може стояти перед WHERE інакше будуть помилки.
Рядок 68 ⟶ 87:
'''[[MySQL]]'''
<source lang="sql">
</source>
'''SQL Server'''
<source lang="sql">
</source>
'''Oracle'''
<source lang="sql">
</source>
==== JOIN ====
Рядок 82 ⟶ 107:
Пишуть так:
<source lang="sql">
ON перша_таблиця.назва_стовпця=друга_таблиця.назва_стовпця </source>
І це буде те ж саме що і
<source lang="sql">
WHERE перша_таблиця.назва_стовпця=друга_таблиця.назва_стовпця </source>
LEFT JOIN працює та пишеться майже так само, але повертає таблицю, в яку входять всі записи лівої таблиці (недостаючі записи з правої заповнються NULLами).
Рядок 100 ⟶ 129:
==== INSERT ====
Оператор INSERT додає до таблиці рядок. Має такий синтаксис:
<source lang="sql">
</source>
Значення мають йти в такому ж порядку, як і стопці таблиці. При необхідності можна задати конкретні стовпці, та конкретні значення:
<source lang="sql">
</source>
Всі інші поля отримають значення за замовчуванням.
Рядок 112 ⟶ 147:
==== DELETE ====
Найпростіший оператор:
<source lang="sql">
DELETE FROM назва_таблиці WHERE умова;
</source>
Знову ж таки, не варто забувати, що немає команди "Відмінити".
|