ОГЛЯД МОВИ SQL

У мові SQL є операції як визначення даних, так і маніпулювання ними Спочатку ми познайомимося з операціями визначення даних На рис 41 показано, як за допомогою засобів мови SQL визначається база даних постачальників і деталей (пор з рис 309 в розділі 3) Як можна бачити, визначення включає по одному оператору CREATE TYPE для кожного з шести визначених користувачем типів (User-Defined Type – UDT) і по одному оператору CREATE TABLE ДЛЯ кожній з трьох базових таблиць (як було зазначено в розділі 3, ключове слово TABLE У операторі CREATE TABLE позначає саме базову таблицю) Кожен оператор CREATE TABLE задає імя створюваної базової таблиці, імена і типи даних стовпців цієї таблиці, а також первинний ключ таблиці і будь-які зовнішні ключі, присутні в ній (крім того, може бути вказана інша додаткова інформація, яка не відображено на рис 41) Наведемо ще пару зауважень по синтаксису

CREATE TYPE     S# .. CREATE TYPE     NAME .. CREATE TYPE     P# .. CREATE TYPE     COLOR .. CREATE TYPE                                        WEIGHT .. CREATE TYPE                                        QTY ..

CREATE TABLE S ( S# S#,

SNAME NAME, STATUS INTEGER, CITY CHAR(15), PRIMARY KEY ( S# ) )

CREATE TABLE P ( P# P#,

PNAME NAME, COLOR COLOR, WEIGHT

WEIGHT, CITY CHAR(15)

, PRIMARY KEY { P# )

)

CREATE TABLE SP ( S# S#,

P# P#, ::

QTY QTY,

PRIMARY KEY ( S#, P# ), FOREIGN KEY ( S# ) REFERENCES S, FOREIGN KEY ( P# ) REFERENCES P )

Рис 41 Визначення бази даних постачальників і деталей засобами мови SQL

■ Зверніть увагу, що символ #, який іноді використовується в книзі, наприклад, в назвах типів і в іменах стовпців, насправді не визначений в стандарті SQL

■ Як ознаки кінця оператора ми тут використовуємо символ ;”, хоча соглас але стандарту SQL, вибір використовуваного для цієї мети символу залежить від реализа ції Детальний розгляд даного питання виходить за рамки цієї книги

■ При використанні вбудованого типу CHAR у визначенні таблиці на мові SQL

необхідно вказувати відповідну довжину (на рис 41 це значення дорівнює 15)

Визначивши базу даних, можна починати виконувати в ній різні операції, що задаються за допомогою операторів маніпулювання даними мови SQL: SELECT, INSERT, UPDATE і DELETE Зокрема, можна виконувати з даними реляційні операції скорочення, проекції і зєднання, причому у всіх цих випадках слід використовувати один і той же оператор маніпулювання даними мови SQL – оператор SELECT Деякі приклади операцій показані на рис 42

Примітка Приклад операції зєднання на цьому малюнку підтверджує, що в мові SQL іноді необхідно використовувати уточнені імена (Наприклад s S #, SP S #), щоб усунути неоднозначність при вказівці стовпців За загальним правилом (хоча є і винятки), уточнені імена допустимі завжди, а неуточнені імена допустимі, тільки якщо при їх використанні не возніьает неоднозначність

Рис 42 Приклади виконання операцій вибірки, проекції і зєднання на мові

SQL

Відзначимо, що в мові SQL підтримується скорочена форма пропозиції

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

SELECT * / * Або SELECT S * (тобто символ * може бути уточнений за допомогою * /

FROM S / * точкового позначення) * /

В результаті виконання цього запиту буде отримано копію всієї таблиці S Символ * _ це скорочене позначення списку імен стовпців, розділеного комами (формальне визначення цього поняття наведено в розділі 46) По-перше, мається на увазі, що в цьому списку містяться задані зліва направо імена всіх стовпців першої таблиці, зазначеної в конструкції FROM, в тому порядку, в якому ці стовпці визначені у зазначеній таблиці По друге, за іменами стовпців першої таблиці в ньому слідують задані зліва направо імена всіх стовпців другої таблиці, зазначеної в конструкції FROM, в тому порядку, в якому ці стовпці визначені у зазначеній таблиці (і тд, стосовно до всіх інших таблицями, наведеними в конструкції FROM)

Примітка Відповідно до стандарту SQL, вираз SELECT * FROM т, де р-це імя таблиці, може бути скорочено до простого вираження TABLE р

Значно докладніше оператор SELECT обговорюється в главі 8 (розділ 86)

Перейдемо до операцій оновлення Приклади операцій INSERT, UPDATE і DELETE мови SQL наведені у розділі 1 Однак у всіх прикладах цієї глави навмисно використовувалися тільки операції обробки окремих рядків Проте, операції INSERT, UPDATE і DELETE, як і операція SELECT, обробляють дані на рівні множин (Деякі вправи і відповіді до них у розділі 1 дійсно демонстрували цю можливість) Ось кілька прикладів поновлення на рівні множин для бази даних постачальників і деталей

INSERT

INTO TEMP (Р #, WEIGTH) SELECT P #, WEIGTH

FROM  P

WHERE COLOR = COLOR(Red)

У цьому прикладі мається на увазі, що попередньо створена інша таблиця TEMP з двома стовпцями, Р # і WEIGTH Оператор INSERT вставляє в неї номери деталей і відповідні ваги всіх деталей з кольором Red (червоний)

DELETE FROM SP WHERE  P#

=

Цей оператор DELETE видаляє з таблиці SP всі рядки з інформацією про постачання деталі з номером Р2.

UPDATE S

SET  STATUS = 2 * STATUS , CITY = Rome

WHERE CITY = Paris

Наведений вище оператор UPDATE збільшує в два рази код статусу всіх постачальників в Парижі і вносить до бази даних інформацію про те, що ці постачальники переїхали до Риму

Примітка У мову SQL не включено прямий аналог операції реляційного присвоювання Але цю операцію можна емулювати, спочатку видаливши всі рядки з цільової таблиці, а потім виконавши для неї операції INSERT .. SELECT .. (як це зроблено вище, у першому прикладі)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*