SQL SELECT та запити на вибірку даних. Структурована мова запитів – SQL: історія, стандарти, основні оператори мови

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

Назва мови SQL вимовляється зазвичай за буквами "ес-кью-ель". Іноді використовують менімонічне ім'я See-Quel.

Мова SQL надає користувачеві (при мінімальних зусиллях з його боку) такі можливості:

Створювати бази даних та таблиці з повним описомїхні структури

Виконувати основні операції маніпулювання даними: вставка, зміна, видалення даних

Виконувати як прості, і складні запити.

Мова SQL є реляційно повною.

Структура та синтаксис його команд досить прості, а сама мова є універсальною, тобто синтаксис та структура його команд не змінюється при переході від однієї СУБД до іншої.

Мова SQL має два основні компоненти:

Мова DDL (Data Definition Language) для визначення структур бази даних та управління доступом до даних

Мова DML (Data Manipulation Language), призначена для вибірки та оновлення даних.

Мова SQL є непроцедурною, тобто при його використанні необхідно вказувати те, яка інформація має бути отримана, а не те, як її можна отримати. Команди мови SQL є звичайними словами англійської мови(SELECT, INSERT та ін.). Розглянемо спочатку оператори SQL DML:

SELECT - вибірка даних з бази

INSERT - вставка даних у таблицю

UPDATE - оновлення даних у таблиці

DELETE - видалення даних із таблиці

Оператор SELECT

Оператор вибірки SELECT виконує дії, еквівалентні наступним операціям реляційної алгебри: вибірка, проекція та з'єднання.

Найпростіший SQL-запит з його використанням виглядає так:

SELECT col_name FROM tbl

Після ключового слова select слід список стовпців, розділених комами, дані яких буде повернуто в результаті запиту. Ключове слово from, вказує, з якої таблиці (або уявлення) вилучаються дані.

Результатом запиту select завжди є таблиця, яка називається результуючою таблицею. Більш того, результати запиту, виконаного за допомогою оператора select можуть бути використані для створення нової таблиці. Якщо результати двох запитів до різних таблиць мають однаковий формат, можна об'єднати їх у одну таблицю. Також таблиця, отримана результаті запиту, може бути предметом подальших запитів.

Для вибірки всіх стовпців та всіх рядків таблиці достатньо зробити запит SELECT * FROM tbl;

Розглянемо таблицю Product, що містить відомості про ціну різні видипродукції:

Результатом запиту

SELECT * FROM Product;

буде вся таблиця Product.

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

SELECT col1, col2, …, coln FROM tbl;

Так, результатом запиту

SELECT Type, Price FROM Product;

буде таблиця

До списку стовпців в операторі select вдаються і в тому випадку, якщо необхідно змінити порядок проходження стовпів у результуючій таблиці:

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

Наприклад, вибір тих товарів із таблиці Product, ціна яких задовольняє умові Price<3200, можно осуществить, используя запрос

SELECT * FROM Product where Price<3200;

Його результат:

Умова може бути складною та об'єднуватися за допомогою логічних операторів NOT , AND, OR, XOR, наприклад: where id_Price>500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1+1) та рядкових констант: where name="автоваги".

Застосування конструкції BETWEEN var1 AND var2 дозволяє перевірити, чи попадають значення будь-якого виразу в інтервал від var1 до var2 (включаючи ці значення):

SELECT * FROM Product where Price BETWEEN 3000 AND 3500;

За аналогією до оператора NOT BETWEEN існує оператор NOT IN.

Можна перейменувати імена стовпців, зазначені у реченні SELECT. Для цього використовується ключове слово AS, яке, втім, можна опустити, тому що неявно мається на увазі. Наприклад, запит

SELECT Type AS model, Type_id AS num FROM Product where Type_id =3

поверне (імена псевдонімів слід записувати без лапок):

Оператор LIKE призначений для порівняння рядка із зразком:

SELECT * FROM tbl where col_name LIKE "abc"

Цей запит повертає лише записи, які містять у стовпці col_name рядкове значення abc.

У зразку дозволяється використовувати два трафаретні символи: "_" і "%". Перший замінює у шаблоні один довільний символ, а другий - послідовність довільних символів. Так, "abc%" відповідає будь-якому рядку, що починається на abc, "abc_" - рядку з 4-х символів, що починається на abc, "%z" - довільному рядку, що закінчується на z, і, нарешті, "%z%" - Послідовності символів, що містять z.

Знайти всі записи таблиці Product, у яких значення Type починається з літери "a", можна так:

SELECT * FROM Product where Type LIKE "а%";

автоваги

Якщо рядок містить трафаретний символ, то слід задати керуючий символ у пропозиції ESCAPE. Цей символ керування повинен використовуватися в зразку перед трафаретним символом, повідомляючи про те, що останній слід трактувати як звичайний символ. Наприклад, якщо в певному полі слід знайти всі значення, що містять символ "_", то шаблон "%_%" призведе до того, що будуть повернуті всі записи з таблиці. У цьому випадку шаблон слід записати так:

"%|_%" ESCAPE "|"

Для перевірки значення на відповідність рядку "20%" можна скористатися таким оператором:

LIKE "20#%" ESCAPE "#"

Оператор IS NULL дозволяє перевірити відсутність (наявність) значення NULL в полях таблиці. Використання в цих випадках звичайних операторів порівняння може призвести до неправильних результатів, оскільки порівняння зі значенням NULL дає результат UNKNOWN (невідомо). Таким чином, умова відбору має виглядати так:

where col_name IS NULL, замість where col_name=NULL.

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

SELECT * FROM tbl ORDER BY col_name;

В результаті цього запиту записи буде повернуто в порядку зростання значення атрибута col_name.

Сортування записів можна проводити і по кількох шпальтах. Для цього їх назви треба вказати після ORDER BY через кому:

SELECT * FROM tbl ORDER BY col_name1, col_name2.

Записи будуть відсортовані полем col_name1; якщо зустрічається кілька записів з відповідним значенням у колонці col_name1, то вони будуть відсортовані по полю col_name2.

Якщо потрібно відсортувати записи у зворотному порядку (наприклад, за спаданням дати), потрібно вказати ORDER BY col_name DESC.

Для прямого сортування існує ключове слово ASC, яке прийняте як значення за промовчанням.

Якщо результат вибірки містить сотні та тисячі записів, їх виведення та обробка займають значний час.

Тому інформацію часто розбивають на сторінки та надають її користувачеві порціями. Посторінкова навігація використовується за допомогою ключового слова limit, за яким слідує кількість записів, що виводяться. У наступному запиті витягуються перші 10 записів, одночасно здійснюється зворотне сортування по полю col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Для того щоб отримати наступні 10 записів, використовується ключове слово limit з двома значеннями: перше вказує позицію, починаючи з якої необхідно вивести результат, а друга - кількість записів, що витягуються:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

Для отримання наступних 10 записів необхідно використовувати конструкцію LIMIT 20, 10.

Запитання №1. SQL та його історія. 1

Запитання №2. Опис основних операторів SQL.

Арифметичні функції. 4

Функції обробки рядків. 5

Спеціальні функції. 6

Функції для обробки дати. 7

Використання агрегатних функцій у запитах. 7

Запитання №1. SQL та його історія

Єдиним засобом спілкування і адміністраторів баз даних, і проектувальників, і розробників, і користувачів з реляційною базою даних є структурована мова запиту SQL (Structured Query Language). SQL є повнофункціональною мовою маніпулювання даними в реляційних базах даних. В даний час він є загальновизнаним стандартним інтерфейсом для реляційних баз даних, таких як Oracle, Informix, Sybase, DB/2, MS SQL Server та ряду інших (стандарти ANSI та ISO). SQL - непроцедурна мова, призначена для обробки множин, що складаються з рядків і колонок таблиць реляційної бази даних. Хоча існують його розширення, що допускають процедурну обробку. Проектувальники баз даних використовують SQL створення всіх фізичних об'єктів реляційної бази даних.

Теоретичні основи SQL були закладені у відомій статті Кодда, що започаткувала розвиток теорії реляційних БД. Перша практична продаж була виконана в дослідницьких лабораторіях фірми IBM Chamberlin D.D. та Royce R.F. Промислове застосування SQL було вперше реалізовано в СУБД Ingres. Однією з перших промислових реляційних СУБД є Oracle. По суті, реляційна СУБД - це програмне забезпечення, яке керує роботою реляційної бази даних.

Перший міжнародний стандарт мови SQL було прийнято 1989 р. (SQL-89). Наприкінці 1992 р. було прийнято новий міжнародний стандарт SQL-92. В даний час більшість виробників реляційних СУБД використовують його як базовий. Однак роботи зі стандартизації мови SQL далекі від завершення і вже розроблений проект стандарту SQL-99, який вводить у побут мови поняття об'єкта і дозволяє на нього посилатися в операторах SQL: У вихідному варіанті SQL не було команд управління потоком даних, вони з'явилися в нещодавно прийнятому стандарт ISO/IEC 9075-5: 1996 додаткової частини SQL.

Кожній СУБД відповідає своя реалізація SQL, загалом підтримує певний стандарт, але має свої особливості. Ці реалізації називаються діалектами. Так, стандарт 1SO/IEC 9075-5 передбачає об'єкти, які називаються постійно збереженими модулями або PSM-модулями (Persistent Stored Modules). У СУБД Oracle розширення PL/SQL є аналогом вказаного вище розширення стандарту.

Запитання №2. Опис основних операторів SQL

SQL складається з набору команд маніпулювання даними в реляційній базі даних, які дозволяють створювати об'єкти реляційної бази даних, модифікувати дані в таблицях (вставляти, видаляти, виправляти), змінювати схеми відносин бази даних, виконувати обчислення над даними, робити вибірки з бази даних, підтримувати безпека та цілісність даних.

Весь набір команд SQL можна розбити на такі групи:

· команди визначення даних (DDL – Data Defininion Language);

· команди маніпулювання даними (DML – Data Manipulation Language);

· команди вибірки даних (DQL – Data Query Language);

· команди управління транзакціями;

· Команда управління даними.

Під час виконання кожна команда SQL проходить чотири фази обробки:

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

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

· Фаза генерації виконуваного коду, яка включає побудову виконуваного коду команди;

· Фаза виконання команди, яка включає виконання коду команди.

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

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

Таблиця 8.1. Типовий список команд SQL

Команда Опис
Команди визначення даних об'єктів
ALTER TABLE Змінює опис таблиці (схему відношення)
CREATE EVENT Створює подію таймера у базі даних
CREATE INDEX Створить індекс для таблиці
CREATE SEQUENCE Створює послідовність
CREATE TABLE Визначає таблицю
CREATE TABLESPACE Створить табличний простір
CREATE TRIGGER Створює тригер у базі даних
CREATE VIEW Визначає уявлення на таблицях
DROP INDEX Фізично видаляє індекс із бази даних
DROP SEQUENCE Видаляє послідовність
DROP TABLE Фізично видаляє таблицю з бази даних
DROP TABLESPACE Видаляє табличний простір
DROP VIEW Видаляє виставу
Команди маніпулювання даними
DELETE Видаляє один або більше рядків із таблиці бази даних
INSERT Вставляє один або більше рядків у таблицю бази даних
UPDATE Оновлює значення колонок у таблиці бази даних
Команди вибірки даних
SELECT Виконує запит на вибірку даних із таблиць та уявлень
UNION Об'єднує в одній вибірці результати виконання двох або більше команд SELECT
Команди управління транзакціями
COMMIT Завершує транзакцію та фізично актуалізує поточний стан бази даних
ROLLBACK Завершує транзакцію та повертає поточний стан бази даних на момент останньої завершеної транзакції та контрольної точки
SAVEPOINT Призначає контрольну точку всередині транзакції
Команди управління даними
ALTER DATABASE Змінює групи зберігання або журнали транзакцій
ALTER DBAREA Змінює розмір областей зберігання бази даних
ALTER PASSWORD Змінює пароль для доступу до бази даних
ALTER STOGROUP Змінює склад областей зберігання групи зберігання
CHECK DATABASE Перевіряє цілісність бази даних
CHECK INDEX Перевіряє цілісність індексу
CHECK TABLE Перевіряє цілісність таблиці та індексу
CREATE DATABASE Фізично створює базу даних
CREATE DBAREA Створює область зберігання бази даних
CREATE STOGROUP Створює групу зберігання
CREATE SYSNONYM Створює синонім для таблиці або подання
DEINSTALL DATABASE Робить базу даних недоступною користувачам обчислювальної мережі
DROP DATABASE Фізично видаляє бази даних
DROP DBAREA Фізично видаляє область зберігання бази даних
DROP STOGROUP Видаляє групу зберігання
GRANT Визначає привілеї користувачів та розмежування доступу до бази даних
INSTALL DATABASE Робить базу даних доступною користувачам обчислювальної мережі
LOCK DATABASE Блокує поточну активну базу даних
REVOKE Скасує привілеї користувачів та розмежування доступу до бази даних
SET DEFAULT STOGROUP Визначає групу зберігання за промовчанням
UNLOCK DATABASE Деблокує поточну активну базу даних
UPDATE STATISTIC Оновлює статистику для бази даних
Інші команди
COMMENT ON Розміщує у системному каталозі коментарі до опису об'єктів БД
CREATE SYNONYM Визначає у системному каталозі альтернативні імена для таблиць та уявлень БД
DROP SYNONYM Видаляє з системного каталогу альтернативні імена для таблиць та уявлень БД
LABEL Змінює мітки системних описів
ROWCOUNT Обчислює число рядків у таблиці БД

Набір команд SQL, наведений у таблиці, не є повним. Цей список наведено, щоб ви склали враження про можливості SQL загалом. Для отримання повного списку команд слід звернутися до відповідного посібника для конкретної СУБД. Слід пам'ятати, що SQL єдиний засіб спілкування всіх категорій користувачів з реляційними базами даних.

Арифметичні функції

SQL підтримує повний набір арифметичних операцій та математичних функцій для побудови арифметичних виразів над колонками бази даних (+, -, *, /, ABS, LN, SQRT тощо).

Список основних вбудованих математичних функцій наведено нижче в таблиці 8.2.

Математична функція Опис
ABS(X) Повертає абсолютне значення числа X
ACOS(X) Повертає арккосинус числа X
ASIN(X) Повертає арксинус числа X
ATAN(X) Повертає арктангенс числа X
COS(X) Повертає косинус числа X
EXP(X) Повертає експоненту числа X
SIGN(X) Повертає -], якщо X< 0, 0, если X = 0, + 1, если X > 0
LN(X) Повертає натуральний логарифм числа X
MOD(X,Y) Повертає залишок від поділу X на Y
CEIL(X) Повертає найменше ціле, більше або рівне X
ROUND(X,n) Округлює число X до числа із п знаками після десяткової точки
SIN(X) Повертає синус числа X
SQRT(X) Повертає квадратний корінь числа X
TAN(X) Повертає тангенс числа X
FLOOR(X) Повертає найбільше ціле, менше або рівне X
LOG(a,X) Повертає логарифм числа X на підставі А
SINH(X) Повертає гіперболічний синус числа X
COSH(X) Повертає гіперболічний косинус числа X
TANH(X) Повертає гіперболічний тангенс числа X
TRANC(X.n) Усікає число X до числа з знаками після десяткової точки
POWER(A,X) Повертає значення А, зведене до ступеня X

Набір вбудованих функцій може змінюватись в залежності від версії СУБД одного виробника та також у СУБД різних виробників . Так, наприклад, у СУБД SQLBase, Centure Inc. є функція @ATAN2(X,Y), яка повертає арктангенс Y/X, але відсутня функція SIGN(X).

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

SELECT ENAME, SAL, COMM. FINE, SAL + COMM - FINE

Арифметичне вираз SAL + COMM - FINE виводиться як нова колонка в результуючій таблиці, яка обчислюється в результаті виконання запиту. Такі колонки називають ще похідними (обчислюваними) атрибутамичи полями.

Функції обробки рядків

SQL надає широкий вибір функцій для маніпулювання з рядковими даними (конкатенація рядків, CHR, LENGTH, INSTR та інші). Список основних функцій обробки рядкових даних наведено у таблиці 8.3.

Таблиця 8.3. Функції SQL для обробки рядків

Функція Опис
CHR(N) Повертає символ коду ASCII для десяткового коду N
ASCII(S) Повертає десятковий ASCII код першого символу рядка
INSTR(S2,SI,pos|,N|) Повертає позицію рядка SI у рядку S2 більшу або рівну pos. N - кількість входжень
LENGTH(S) Повертає довжину рядка
LOWER(S) Замінює всі символи рядка на великі символи
INITCAP(S) Встановлює перший символ кожного слова в рядку на великий, а решта символів кожного слова - на великі
SUBSTR(S,pos,[,len|) Виділяє в рядку S підрядок довжиною ten, починаючи з позиції pos
UPPER(S) Перетворює великі літери в рядку на великі літери
LPAD(S,N |,A|) Повертає рядок S, доповнений ліворуч символами А до числа символів N. Символ-наповнювач за замовчуванням - пробіл
RPAD(S,N |,А]) Повертає рядок S, доповнений праворуч символами А до числа символів N. Символ-наповнювач за замовчуванням - пробіл
LTRIM(S,|,Sll) Повертає зрізаний зліва рядок S. Символи видаляються до тих пір, поки символ, що видаляється, входить у рядок - шаблон SI (за замовчуванням - пробіл)
RTRIM(S,|,SI |) Повертає усічену справа рядок S. Символи видаляються до тих пір, поки символ, що видаляється, входить у рядок - шаблон S1 (за замовчуванням - пробіл)
TRANSLATES,(SI,S2) Повертає рядок S, у якому всі входження рядка SI заміщені рядком S2. Якщо SI<>S2, то символи, яким немає відповідності, виключаються з результуючого рядка
REPLACED(SI,|,S2|) Повертає рядок S, для якого всі входження підрядка SI заміщені на підрядок S2. Якщо S2 не вказано, всі входження підрядки SI видаляються з результуючого рядка S
NVL(X,Y) Якщо X є NULL, то повертає Y чи рядок, чи число, чи дату залежно від вихідного типу Y

Назви одних і тих самих функцій можуть відрізнятися в різних СУБД. Так, наприклад, функція СУБД Oracle SUBSTR(S, pos, |, len|) у СУБД SQLBase називається @SUBSTRING(S, pos, Ien). У СУБД SQLBase є функції, яких немає в СУБД Oracle (див. нижче таблицю, де наведено список таких функцій).

Таблиця 8.4. Рядкові функції СУБД SQLBase, що відрізняються від рядкових функцій СУБД Oracle

Функція Опис
@EXACT(SI,S2) Повертає результат порівняння двох рядків
@LEFT(S,lcn) Повертає ліве підрядження довжиною len
@LENGTH(S) Повертає довжину ну рядки
@MID(S, pos, len) Повертає підрядок вказаної довжини, починаючи з позиції pos
@REPEAT(S,n) Повторює рядок S n разів
@REPLACE(SI,pos,len,S2) Заміщаєте позиції pos len символів у рядку S2 символами рядка SI
@RIGHT(S,len) Повертає праве підрядження S довжиною len
@SCAN(S,pat) Повертає позицію підрядка pat у рядку S
@STRING(X, scale) Повертає символьне представлення числа із зазначеним масштабом scale
@TRIM(S) Видаляє пробіли у рядку праворуч та ліворуч
@VALUE(S) Перетворює символьне подання числа на числове значення

Можна використовувати функцію INITCAP, щоб при отриманні списку імен службовців прізвища завжди починалися з великої літери, а всі інші були великими.

SELECT INITCAP(ENAME)

Спеціальні функції

SQL забезпечує набір спеціальних функцій для перетворення значень колонок. Список таких функцій наведено у таблиці 8.5.

Таблиця 8.5. Спеціальні функції

У таблиці EMPLOYEE кожного службовця можна запровадити ознака статі - додати колонку SEX типу CHAR(l) (0 - чоловічий, 1 - жіночий). Припустимо, що вам потрібен список службовців, у якому потрібно поділ їх за ознакою статі із зазначенням їх у числовому форматі; тоді можна задати таку команду:

SELECT ENAME, LNAME, AGE, " Підлога:", TO_NUMBER(SEX)

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

SELECT ENAME, DEC0DE(DEPN0, 10, " Дрягін", 20,"Жиляєва". 30,"

Коротків", "не має")

Припустимо, що керівник організації має невизначене значення колонки DEPNO і, отже, для нього буде працювати умовчання, передбачене в DECODE .


©2015-2019 сайт
Усі права належати їх авторам. Цей сайт не претендує на авторства, а надає безкоштовне використання.
Дата створення сторінки: 2016-08-07

Структурована мова запитів SQL заснована на реляційному обчисленні зі змінними кортежами. Мова SQL призначений для виконання операцій над таблицями створення видалення зміна структури і над даними таблиць вибірка зміна додавання та видалення а також деяких супутніх операцій. SQL є непроцедурним мовою і містить операторів управління організації підпрограм введення висновку тощо.


Поділіться роботою у соціальних мережах

Якщо ця робота Вам не підійшла внизу сторінки, є список схожих робіт. Також Ви можете скористатися кнопкою пошук


Структурована мова запитів SQL: історія, стандарти,

Основні оператори мови.

Структурована мова запитів SQL заснована на реляційному обчисленні зі змінними кортежами. Мова має кілька стандартів. Мова SQL призначена для виконання операцій над таблицями (створення, видалення, зміна структури) і над даними таблиць (вибірка, зміна, додавання та видалення), а також деяких супутніх операцій. SQL є непроцедурною мовою і не містить операторів управління, організації підпрограм, введення-виведення тощо. У зв'язку з цим SQL автономно не використовується, зазвичай він занурений у середовище вбудованої мови програмування СУБД (наприклад, Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД Access).

У сучасних СУБД з інтерактивним інтерфейсом можна створювати запити, використовуючи інші засоби, наприклад, QBE. Однак застосування SQL часто дозволяє підвищити ефективність обробки даних у базі. Наприклад, під час підготовки запиту в середовищі Access можна перейти з вікна Конструктора запитів (формулювання запиту за зразком на мові QBE) у вікно з еквівалентним оператором SQL. Підготовку нового запиту шляхом редагування вже наявного в ряді випадків простіше зробити шляхом зміни оператора SQL. У різних СУБД склад операторів SQL може дещо відрізнятися. Мова SQL не має функцій повноцінної мови розробки, а орієнтована на доступ до даних, тому її включають до складу засобів розробки програм. У цьому випадку його називають вбудованим SQL. Стандарт мови SQL підтримують сучасні реалізації наступних мов програмування: PL/1, Ada, C, COBOL, Fortran, MUMPS та Pascal.

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

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

Для зручності роботи з поданнями до мови SQL введено поняття курсора. Курсор є своєрідним покажчиком, що використовується для переміщення по наборах записів при їх обробці. Опис та використання курсору в мові SQL виконується в такий спосіб. В описовій частині програми виконують зв'язування змінної типу курсор (CURSOR) з оператором SQL (зазвичай оператором SELECT). У частині програми, що виконується, проводиться відкриття курсору (OPEN<имя курсора>), переміщення курсору за записами (FETCH<имя курсора>...), що супроводжується відповідною обробкою, і, нарешті, закриття курсору (CLOSE<имя курсора>).

Основні оператори мови

Опишемо мінімальне підмножина мови SQL, спираючись на її реалізацію в стандартному інтерфейсі ODBC (Open Database Connectivity - сумісність відкритих баз даних) фірми Microsoft. Оператори мови SQL можна умовно розділити на дві підмови: мову визначення даних (Data Definition Language DDL) і мову маніпулювання даними (Data Manipulation Language-DML). Основні оператори мови SQL представлені в таблиці.

Розглянемо формат і основні можливості найважливіших операторів, крім специфічних операторів, зазначених у таблиці символом «*». Несуттєві операнди та елементи синтаксису (наприклад, прийняте у багатьох системах програмування правило ставити «;» наприкінці оператора) будемо опускати.

1. Оператор створення таблицімає формат вигляду:

CREATE TABLE<имя таблицы>

(<имя столбца> <тип данных>

[,<имя столбца> <тип данных> ]...)

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

При створенні таблиці для окремих полів можуть вказуватися деякі додаткові правила контролю значень, що вводяться в них. Конструкція NOT NULL (не порожня) служить саме таким цілям і стовпця таблиці означає, що у цьому стовпці має бути визначено значення.

Оператори мови SQL

Вид

Назва

Призначення

CREATE TABLE

DROP TABLE

ALTER TABLE

CREATE INDEX

DROP INDEX

CREATE VIEW

DROP VIEW

GRAND*

REVOKE*

створення таблиці

видалення таблиці

зміна структури таблиці

створення індексу

видалення індексу

створення уявлення

видалення уявлення

призначення привілеїв

видалення привілеїв

SELECT

UPDAT

INSERT

DELETE

вибірка записів

зміна записів

вставка нових записів

видалення записів

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

Приклад 1 . Створення таблиці.

Нехай потрібно створити таблицю goods опису товарів, що має поля: type вид товару, comp_id ідентифікатор компанії-виробника, name назва товару і price ціна товару. Оператор визначення таблиці може мати такий вигляд:

CREATE TABLE goods (type SQL_CHAR(8) NOT NULL,

comp_id SQL_CHAR(10) NOT NULL, name SQL_VARCHAR(20),

price SQL_DECIMAL(8,2)).

2. Оператор зміни структури таблицімає формат вигляду:

ALTER TABLE<имя таблицы>

((ADD, MODIFY, DROP)<имя столбца> [<тип данных>]

[,(ADD, MODIFY, DROP)<имя столбца> [<тип данных>]]...)

Зміна структури таблиці може полягати в додаванні (ADD), зміні (MODIFY) або видаленні (DROP) одного або кількох стовпців таблиці. Правила запису оператора ALTER TABLE такі самі, як і оператора CREATE TABLE. При видаленні стовпця вказувати<тип данных>не потрібно.

3. Оператор видалення таблицімає формат вигляду:

DROP TABLE<имя таблицы>

Оператор дозволяє видалити наявну таблицю. Наприклад, видалення таблиці з ім'ям items досить записати оператор виду: DROP TABLE items.

4. Оператор створення індексумає формат вигляду:

CREATE INDEX< имя индекса >

ON< имя таблицы >

(<имя столбца>[ASC | DESC]

[,<имя столбца>[ASC | DESC ]...)

Оператор дозволяє створити індекс для одного або кількох стовпців заданої таблиці з метою прискорення виконання запитних та пошукових операцій із таблицею. Для однієї таблиці можна створити кілька індексів. Задавши необов'язкову опцію UNIQUE, можна забезпечити унікальність значень у всіх зазначених в операторі стовпчиках. Фактично, створення індексу із зазначенням ознаки UNIQUE означає визначення ключа у створеної раніше таблиці. При створенні індексу можна встановити порядок автоматичного сортування значень у стовпцях в порядку зростання ASC (за замовчуванням), або в порядку зменшення DESC. Для різних шпальт можна задавати різний порядок сортування.

5. Оператор видалення індексумає формат вигляду:

DROP INDEX<имя индекса>

Цей оператор дозволяє видаляти створений раніше індекс із відповідним ім'ям. Приміром, для знищення індексу main_indx до таблиці emp досить записати оператор DROP INDEX main_indx.

6. Оператор створення уявленнямає формат вигляду:

CREATE VIEW<имя представления>

[(<имя столбца> [,<имя столбца> ]...)]

AS<оператор SELECT>

Цей оператор дозволяє створити уявлення. Якщо імена стовпців у поданні не вказуються, будуть використовуватися імена стовпців із запиту, який описує відповідний оператор SELECT.

7. Оператор видалення уявлення має формат вигляду:

DROP VIEW<имя представления>

Оператор дозволяє видалити створене раніше уявлення. Зауважимо, що при видаленні подання таблиці, що беруть участь у запиті, не підлягають видаленню. Видалення подання герг здійснюється оператором виду: DROP VIEW repr.

8. Оператор вибірки записів має формат вигляду:

SELECT

< список данных >

FROM<список таблиц>

... ]

...]

Це найбільш важливий оператор із усіх операторів SQL. Функціональні можливості його величезні. Розглянемо основні їх. Оператор SELECT дозволяє проводити вибірку та обчислення над даними з однієї або декількох таблиць. Результатом виконання оператора є таблиця, яка може мати (ALL), або не мати (DISTINCT) повторювані рядки. За замовчуванням у таблицю у відповідь включаються всі рядки, у тому числі і повторювані. У відборі даних беруть участь записи однієї чи кількох таблиць, перелічених у списку операнда FROM. Список даних може містити імена шпальт, що беруть участь у запиті, а також вирази над стовпцями. У найпростішому випадку у виразах можна записувати імена стовпців, знаки арифметичних операцій (+, ¦, *, /), константи та круглі дужки. Якщо у списку даних записано вираз, то поряд з вибіркою даних виконуються обчислення, результати якого потрапляють у новий (створюваний) стовпець таблиці у відповідь. При використанні в списках даних імен стовпців кількох таблиць для вказівки приналежності стовпця деякі таблиці застосовують конструкцію виду:<имя таблицы>.<имя столбца>.

Операнд WHERE визначає умови, яким повинні задовольняти записи в результуючій таблиці. Вираз<условие выборки>є логічним. Його елементами можуть бути імена стовпців, операції порівняння, арифметичні операції, логічні зв'язки (І, АБО, НІ), дужки, спеціальні функції LIKE, NULL, IN і т.д. Операнд GROUP BY дозволяє виділяти в результуючому множині записів групи.

9. Оператор зміни записівмає формат вигляду:

UPDATE<имя таблицы>

SET<имя столбца> = {<выражение>, NULL )

[, SET<имя столбца> = {<выражение>, NULL)... ]

Виконання оператора UPDATE полягає у зміні значень у визначених операндом SET стовпцях таблиці для записів, які задовольняють умові, заданій операндом WHERE. Нові значення полів у записах можуть бути порожніми (NULL), або обчислюватися відповідно до арифметичного виразу. Правила запису арифметичних та логічних виразів аналогічні відповідним правилам оператора SELECT.

10. Оператор вставки нових записівмає формати двох видів:

INSERT INTO<имя таблицы>

[(<список столбцов>)]

VALUES (<список значений>)

INSERT INTO<имя таблицы>

[(<список столбцов>)]

<предложение SELECT>

У першому форматі оператор INSERT призначений для введення нових записів із заданими значеннями в стовпцях. Порядок перерахування імен стовпців має відповідати порядку значень, перелічених у списку операнда VALUES. Якщо<список столбцов>опущений, то в<списке значений>повинні бути перераховані всі значення порядку стовпців структури таблиці.У другому форматі оператор INSERT призначений для введення взадану таблицю нових рядків, відібраних з іншої таблиці зза допомогою пропозиції SELECT.

PAGE 1

Інші схожі роботи, які можуть вас зацікавити.

16. Вивчення основ мови структурованих запитів T-SQL 34.15 KB
Для досягнення поставленої мети необхідно вирішити такі завдання: створити запити на вибірку з кількох таблиць мовою SQL заданими критеріями відбору; створити запит на вибірку на мові SQL, що містить статичні агрегатні функції; створити запит, що здійснює об'єднання результатів двох і більше запитів в один набір результатів, використовуючи команду UNION. Внаслідок виконання роботи студенти повинні знати: категорії команд SQL; основні команди SQL, що застосовуються для побудови запиту; принципи створення запитів SQL...
6030. МОВА ЯК ЯВО, що РОЗВИВАЄТЬСЯ. ЗОВНІШНІ ТА ВНУТРІШНІ ФАКТОРИ РОЗВИТКУ МОВИ 17.38 KB
Проблема походження мови включає два питання. Перше питання пов'язане з проблемою походження мови взагалі як склалася людська мова, яким чином людина навчилася говорити другою з походженням кожної окремої мови. Свідчень про цей період не збереглося тому щодо походження мови взагалі лінгвістам доводиться оперувати як мовними фактами а й даними суміжних наук. Інтерес до проблеми походження мови виник давно.
10870. Міжпредметні зв'язки курсу "Професійна російська мова". Трансформація та диференціація професійної російської мови 10.57 KB
Трансформація та диференціація професійної російської мови 1. Трансформація та диференціація професійної російської мови. Синтаксичні норми визначаються структурою мови і як і інші норми орфоэпические лексичні морфологічні зазнають зміни у розвитку мови. При засвоєнні синтаксису нерідної мови спостерігається ряд труднощів що виникають під час виборів форм управління та узгодження побудові пропозиції використання дієприслівникового обороту виборі необхідного прийменника тощо.
6929. Історія мови Delphi 13.01 KB
Delphi це грецьке місто де жило дельфійський оракул. Delphi це комбінація кількох найважливіших технологій: Високопродуктивний компілятор в машинний код Об'єктно-орієнтована модель компонент Візуальна а отже і швидкісна побудова додатків з програмних прототипів Масштабовані засоби для побудови баз даних Компілятор в машинний код Компілятор вбудований в Delphi забезпечує високу продуктивність необхідну для побудови ...
10869. Поняття «професійна мова», «мова спеціальності», їхня диференціація. Професійна російська мова: її зародження, функції, сфера функціонування (з урахуванням специфіки спеціальності) 9.5 KB
Диференціація мови. Кожна економічна спеціальність, крім загальної мови єдиної для всіх економістів, має і свою спеціальну та спеціалізовану мову. Цими професійними мовами спілкуються в усній та письмовій формі фахівці цих професійних мов навчають студентів такі професійні мови описують системи знань умінь у науковій навчальній довідковій та іншій літературі. У системі економічної мови існують загальні всім професійних мов проблеми.
1335. Основні словотвірні моделі у сучасному варіанті американської англійської мови 117.01 KB
Основні відмінності американського та британського варіантів англійської мови. Проблема визначення світового статусу американського варіанта англійської. Американський варіант англійської мови у світі. Лексичні особливості американського варіанта англійської.
1936. ІСТОРІЯ, СТРУКТУРА ТА ОСНОВНІ ПОНЯТТЯ ЕКОЛОГІЇ 495.77 KB
Термін "екологія" утворений грецьким корінням "ойкос" - будинок, безпосереднє оточення людини і "логос" - наука. Тому в буквальному сенсі екологія – це наука про організми, у тому числі про людину, що спостерігаються в межах свого будинку, причому особлива увага приділяється характеру зв'язків між організмами та навколишнім середовищем.
17746. Педагогіка образотворчої творчості: історія та основні тенденції розвитку 25.96 KB
Завдання контрольної роботи розглянути поняття дитячої художньої творчості виявити дослідження видатних педагогів та психологів та історії становлення дитячої художньої творчості. Проявом художньої творчості можуть бути окремі роботи - виконані самостійно або під керівництвом дорослого малюнки ліплення усне та письмове художнє слово мелодії драматизації танці а також хоровий спів театральні постановки різьблення ляльковий театр мальовані та ігрові фільми та...
6285. Керуючі оператори 103.51 KB
Оператори циклу Оператори циклу використовують для організації багаторазово повторюваних обчислень. Для організації циклу необхідна звана змінна параметр циклу або керуюча змінна циклу. Будь-який цикл складається з початкових установок або блоку ініціалізації параметра циклу; тіла циклу тобто тих операторів, які виконуються кілька разів; блок модифікації параметра циклу; перевірки умови виходу з циклу, яка може розміщуватися або до тіла циклу, тоді говорять про цикл з передумовою або після тіла.
2784. Оператори умови та вибору 16 KB
Оператор умови If. Тому Ви можете записати наступні оператори присвоювання: Koren:=Sqrtxy; Modul:=bsxy. Для таких умовних переходів у мові Паскаль використовують оператори If і Else і оператор безумовного переходу Goto. Розглянемо оператор If.

Оператор мови SQL SELECT призначений для запитів на вибір даних з бази даних. Він може бути використаний без умов (вибір всіх рядків у всіх стовпцях або всіх рядків у певних стовпцях), так і з численними умовами (вибір певних рядків), які задані в секції WHERE. Ознайомимося із засобами SQL, якими можна задавати ці умови на вибірку даних, а також дізнаємося, як використовувати оператор SELECT у підзапитах.

SELECT для вибору стовпців таблиці

Запит із оператором SELECT для вибору всіх стовпців таблиці має наступний синтаксис:

SELECT * FROM ІМ'Я_ТАБЛИЦІ

Тобто, для вибору всіх стовпців таблиці після слова SELECT потрібно ставити зірочку.

приклад 1.Є база даних фірми – Company. У ній є таблиця Org (Структура фірми) та Staff (Співробітники). Потрібно вибрати з таблиць усі стовпці. Відповідний запит для вибору всіх стовпців з таблиці Org має такий вигляд:

SELECT * FROM ORG

Цей запит поверне наступне (для збільшення картинки клацнути по ній лівою кнопкою миші):

Запит для вибору всіх стовпців з таблиці Staff виглядає так:

SELECT * FROM STAFF

Цей запит поверне таке:


Для вибору певних стовпців таблиці нам потрібно замість зірочки перерахувати через кому назви всіх стовпців, які потрібно вибрати:

SELECT ВИБИРАНІ_СТОЛБЦІ FROM ІМ'Я_ТАБЛИЦІ

приклад 2.Нехай потрібно з таблиці Org вибрати стовпці Depnumb і Deptname, в яких містяться дані відповідно про номери відділів фірми та їх назви. Запит для отримання такої вибірки буде таким:

SELECT DEPNUMB, DEPTNAME FROM ORG

А з таблиці Staff потрібно вибрати стовпці DEPT, NAME, JOB, в яких містяться відповідно дані про номер відділу, в якому працює співробітник, його ім'я та посада:

SELECT та ORDER BY - сортування (упорядкування) рядків

Розібрані досі запити SQL SELECT повертали рядки, які були розташовані у будь-якій послідовності. Однак часто потрібно відсортувати рядки по порядку номерів, алфавіту та інших ознак. Для цього є ключове словосполучення ORDER BY. Такі запити мають наступний синтаксис:

приклад 15.Нехай вибираючи з таблиці Staff співробітників, які працюють у відділі з номером 84 і відсортувати (упорядкувати) записи за кількістю відпрацьованих років у зростаючому порядку:

Слово ASC показує, що порядок сортування – зростаючий. Це слово не обов'язково, тому що зростаючий порядок сортування застосовується за умовчанням. Результат виконання запиту:


Приклад 16Нехай вибираючи ті ж дані, що й у попередньому прикладі, але відсортувати (упорядкувати) записи за кількістю відпрацьованих років у спадному порядку.

Синтаксис оператора SELECT має такий вигляд:

SELECT<список атрибутов>/* FROM<список таблиц>

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

Видати список усіх студентів.

SELECT * FROM student

SELECT id_st, surname FROM student

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

Видати список оцінок, які отримав студент із кодом "1".

Видати список кодів студентів, які отримали на іспитах хоча б одну двійку чи трійку.

У пропозиції WHERE можна записувати вираз із використанням арифметичних операторівпорівняння (<, >, і т.д.) та логічних операторів (AND, OR, NOT ) як і у звичайних мовах програмування.

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

  • IN – входження у деяке безліч значень;
  • BETWEEN – входження до певного діапазону значень;
  • LIKE – перевірка на збіг зі зразком;
  • IS NULL – перевірка невизначене значення.

Оператор IN використовується для перевірки входження в деяку кількість значень. Так, запит

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

Того ж результату можна досягти, використовуючи оператор BETWEEN:

Видати список усіх студентів, прізвища яких починаються з літери А.

У цьому випадку зручно використовувати оператор LIKE.

Оператор LIKE застосовується виключно до символьних полів і дозволяє встановлювати, чи відповідає значення поля зразка. Зразок може містити спеціальні символи:

_ (символ підкреслення) – замінює будь-який одиночний символ;

% (знак відсотка) – замінює послідовність будь-якого числа символів.

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

  • MIN – мінімальне значення у стовпці;
  • MAX - максимальне значення в стовпці;
  • SUM - сума значень у стовпці;
  • AVG - середнє значення в стовпці;
  • COUNT – кількість значень у стовпці, відмінних від NULL.

Наступний запит вважає середню серед усіх балів, отриманих студентами на іспитах.

SELECT AVG(mark) FROM mark_st

Звичайно, можна використовувати агрегатні функціїспільно з пропозицією WHERE:

Цей запит обчислить середній бал студента з кодом 100 за результатами всіх іспитів, які він здав.

Даний запит обчислить середній бал студентів за результатами складання іспиту з кодом 10. На додаток до розглянутих механізмів