Огляд SQL

Завершено

SQL позначає мову структурованих запитів і використовується для зв'язку з реляційною базою даних. Це стандартна мова для реляційних систем керування базами даних. Інструкції SQL використовуються для виконання таких завдань, як оновлення даних у базі даних або отримання даних із бази даних. Деякі поширені системи управління реляційними базами даних, що використовують SQL, включають Microsoft SQL Server, Azure SQL Database, Azure SQL Managed Instance, SQL Server on Azure Virtual Machines, MySQL, PostgreSQL, і Oracle.

Примітка

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

За допомогою операторів SQL, як-от SELECT, INSERT, UPDATE, DELETE, CREATE і DROP , можна виконати майже все необхідне для бази даних. Хоча ці інструкції SQL входять до стандарту SQL, багато систем керування базами даних також мають власні додаткові власні розширення для обробки особливостів цієї системи керування базами даних. Ці розширення забезпечують функціональні можливості, не передбачені стандартом SQL, і включають такі області, як керування безпекою та програмування. Наприклад, microsoft SQL Server і служби баз даних Azure, які базуються на обробнику баз даних SQL Server, використовують Transact-SQL. Це впровадження включає власні розширення для написання збережених процедур і тригерів (код програми, який може зберігатися в базі даних) і керування обліковими записами користувачів. PostgreSQL і MySQL також мають свої версії цих функцій.

До таких популярних діалектів SQL належать:

  • Transact-SQL (T-SQL). Ця версія SQL використовується у Microsoft SQL Server, Azure SQL Database, Azure SQL Managed Instance та SQL Server on Azure Virtual Machines.

  • pgSQL. Це діалект, з розширеннями, реалізованими в PostgreSQL.

  • PL/SQL. Це діалект, який використовується Oracle. Pl/SQL – це процедурна мова/SQL.

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

Примітка

Azure SQL Database містить функції штучного інтелекту, які можна використовувати для написання та розуміння SQL-запитів за допомогою природної мови.

Примітка

Приклади коду SQL у цьому модулі базуються на діалекті Transact-SQL, якщо не вказано інше. Синтаксис інших діалектів зазвичай схожий, але може відрізнятися в деяких відомостях.

Типи інструкції SQL

Інструкції SQL групуються в три основні логічні групи:

  • Мова визначення даних (DDL)
  • Мова керування даними (DCL)
  • Мова керування даними (DML)

Оператори DDL

Оператори DDL використовуються для створення, змінення та видалення таблиць та інших об'єктів у базі даних (таблиця, збережені процедури, подання тощо).

Найпоширеніші оператори DDL:

Заява Опис
CREATE Створіть новий об'єкт у базі даних, наприклад таблицю або подання.
ALTER Змінення структури об'єкта. Наприклад, змінюючи таблицю, щоб додати новий стовпець.
DROP Видалення об'єкта з бази даних.
RENAME Перейменувати наявний об'єкт.

Попередження

Інструкція DROP дуже потужна. Якщо видалити таблицю, усі рядки в цій таблиці буде втрачено. Якщо у вас немає резервної копії, ви не зможете отримати ці дані.

У наведеному нижче прикладі створюється нова таблиця бази даних. Елементи між дужками визначають відомості кожного стовпця, зокрема ім'я, тип даних, чи має стовпець завжди містити значення (NOT NULL) і чи дані в стовпці використовуються для унікальної ідентифікації рядка (ПЕРВИННИЙ КЛЮЧ). Кожна таблиця має мати первинний ключ, хоча sql не застосовує це правило.

Примітка

Стовпці, позначені як NOT NULL , називаються обов'язковими стовпцями. Якщо пропустити речення NOT NULL , можна створити рядки, які не містять значення в стовпці. Пустий стовпець у рядку має null-значення .

CREATE TABLE Product
(
    ID INT PRIMARY KEY,
    Name VARCHAR(20) NOT NULL,
    Price DECIMAL NULL
);

Типи даних, доступні для стовпців у таблиці, залежать від систем керування базами даних. Однак більшість систем керування базами даних підтримують такі числові типи, як INT (ціле число або ціле число), DECIMAL (десяткове число) і типи рядків, такі як VARCHAR (VARCHAR позначає дані символів змінної довжини). Докладні відомості див. в документації до вибраної системи керування базами даних.

Оператори DCL

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

Три основні оператори DCL:

Заява Опис
GRANT Надання дозволу на виконання певних дій
DENY Заборонити дозвіл на виконання певних дій
REVOKE Видалення раніше наданого дозволу

Наприклад, наведена нижче інструкція GRANT дозволяє користувачу з ім'ям user1 читати, вставляти та змінювати дані в таблиці "Продукт ".

GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;

Оператори DML

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

Чотири основні оператори DML:

Заява Опис
SELECT Читання рядків із таблиці
INSERT Вставлення нових рядків у таблицю
UPDATE Змінення даних у наявних рядках
DELETE Видалення наявних рядків

Базова форма інструкції INSERT вставить по одному рядку. За замовчуванням інструкції SELECT, UPDATE і DELETE застосовуються до кожного рядка таблиці. Зазвичай ви застосовуєте речення WHERE із цими операторами, щоб указати умови; Буде вибрано, оновлено або видалено лише рядки, які відповідають цим умовам.

Попередження

Sql не надає справді? будьте уважні під час використання функції DELETE або UPDATE без речення WHERE, оскільки ви можете втратити або змінити багато даних.

Наведений нижче код є прикладом інструкції SQL, яка вибирає всі стовпці (позначені *) з таблиці Customer , де значення стовпця "Місто " – "Сіетл":

SELECT *
FROM Customer
WHERE City = 'Seattle';

Щоб отримати лише певну підмножину стовпців із таблиці, їх перелічено в реченні SELECT , наприклад:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle';

Якщо запит повертає багато рядків, вони не обов'язково відображаються в певній послідовності. Якщо потрібно відсортувати дані, можна додати речення ORDER BY . Дані буде відсортовано за вказаним стовпцем:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;

Ви також можете запускати інструкції SELECT, які отримують дані з кількох таблиць за допомогою речення JOIN . Об'єднання позначає, як рядки в одній таблиці з'єднуються з рядками в іншій, щоб визначити, які дані потрібно повернути. Типова умова об'єднання відповідає зовнішньому ключу з однієї таблиці та пов'язаному з нею первинному ключу в іншій таблиці.

У наведеному нижче запиті наведено приклад об'єднання таблиць "Клієнт " і "Замовлення ". Запит дає змогу використовувати псевдоніми таблиць, щоб скорочено імена таблиць під час визначення стовпців, які слід отримати в реченні SELECT і які стовпці мають збігатися з реченням JOIN .

SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM Order AS o
JOIN Customer AS c
ON o.Customer = c.ID

У наступному прикладі показано, як змінити наявний рядок за допомогою SQL. Змінює значення стовпця "Адреса " в таблиці "Клієнт " для рядків зі значенням 1 у стовпці "Ідентифікатор ". Усі інші рядки залишаться без змін:

UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;

Попередження

Якщо пропустити речення WHERE , інструкція UPDATE змінюватиме кожен рядок таблиці.

Щоб видалити рядки, скористайтеся інструкцією DELETE . Укажіть таблицю для видалення, а також речення WHERE , яке визначає рядки, які потрібно видалити:

DELETE FROM Product
WHERE ID = 162;

Попередження

Якщо пропустити речення WHERE , інструкція DELETE видалить кожен рядок із таблиці.

Інструкція INSERT має дещо іншу форму. Укажіть таблицю та стовпці в реченні INTO , а також список значень, які зберігатимуться в цих стовпцях. Стандартний SQL підтримує вставлення лише одного рядка за раз, як показано в наведеному нижче прикладі. Деякі діалекти дають змогу вказати кілька речень VALUES для додавання кількох рядків одночасно:

INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);

Примітка

У цій статті описано основні інструкції SQL і синтаксис, щоб зрозуміти, як SQL використовується для роботи з об'єктами в базі даних. Щоб дізнатися більше про запит даних за допомогою SQL, перегляньте навчальний шлях Get Started Querying with Transact-SQL у Microsoft Learn.