Главная Контакты В избранное
  • Лекции SQL

    АвторАвтор: student  Опубликовано: 4-12-2020, 20:00  Комментариев: (0)

    ЗМІСТ

     

    Вступ. 3

    МОДУЛЬ 1. 5

    Тема 1. Вступ до SQL. Синтаксис SQL. Типи даних. 5

    Тема 2. Створення баз даних. 19

    Тема 3. Створення таблиць. 21

    Тема 4. Вставка стрічок з допомогою оператора INSERT. Вилучення стрічок з допомогою оператора DELETE, редагування стрічки з допомогою команди UPDATE. 24

    Тема 5. Оператор SELECT. 35

    Тема 6. Комбінування умов з допомогою операторів AND, OR, NOT. Порівняння по шаблону. Порівняння з діапазоном. Сортування стрічок з допомогою речення ORDER BY. 39

    Тема 7. Створення псевдонімів. З’єднання таблиці із собою. Вибір даних з кількох таблиць 45

    Тема 8. Введення обмежень в базах даних. 59

    Тема 9. Використання збережуваних процедур в базах даних. Використання генераторів ключів у базах даних в InterBase. Використання тригерів у базах даних. 65

    Тема 10. Безпека в базах даних. 78

    МОДУЛЬ 2. 82

    Тема 11. Оператор EXISTS. Сумування і групування даних. 82

    Тема 12. З’єднання з базою даних. Використання збережуваних процедур в Delphi 99

    Тема 13. Використання механізму транзакцій компонента Database. 104

    Тема 14. Сервер баз даних InterBase і компоненти InterBase Express. 107

    Тема 15. Виконання запитів за допомогою компонента TIBDataSet 110

    Тема 16. Підпорядковані запити в таблицях. 114

    Література. 116

     


    Вступ

    Багато хто вважає, що поєднання трьох букв S-Q-L є абревіатура, яка розшифровується як Structured Query Language (Структурована мова запитів). Так от, SQL означає SQL, і більш нічого. Чому? Так тому, що так прийнято в ANSI. Офіційна назва SQL – Database Language SQL (Мова баз даних SQL). Особливу увагу на дану помилку звертають лише тому, що вона створює помилки. Якщо програмісти, початківці, будуть вважати, що SQL і справді означає "мова структурованих запитів”, це стане їм у поганій пригоді, оскільки саме ця мова є найгіршою зі всіх можливих описів канонічного SQL, хоча живучість даного опису здається академікам і професіоналам забавною із наступних причин:

    · SQL не структурована мова, оскільки його не можна розбити на блоки або процедури;

    · SQL не обмежується тільки запитами, оскільки в ньому є багато інших команд крім SELECT;

    · SQL не є повною мовою за визначенням Тюрінга.

    SQL нікому не належить. Це означає, що на права власності ніхто не претендує. SQL – це відкритий стандарт, що розроблявся одним із комітетів в Американському національному інституті стандартизації (ANSI). У свою чергу, ANSI – це не приватна фірма, а орган уряду США, покликаний сприяти розвитку національних стандартів. Більше того, SQL є не тільки американським, але і міжнародним стандартом ISO/IEC 9075:1992, оскільки в 1992 році був включений в число стандартів Міжнародної організації по стандартизації (ISO). В цьому зв'язку хотілося б зазначити, що справжнє видання засновано на стандарті ANSI SQL 1992. Таким чином, коли ви зустрінете позначення ANSI SQL, SQL-92 або просто SQL, їх слід розглядати як синоніми, якщо додатково не вказано нічого іншого. Положення дещо ускладнюється тим, що з'явився стандарт ANSI SQL-99. Проте на нього поки можна не звертати уваги, оскільки до його впровадження пройде ще декілька років і він буде сумісний із стандартом SQL-92. Тобто, програма, що відповідає стандарту SQL-92, буде працювати під будь-якою СУБД, що відповідає стандарту SQL-99.

    Слід зазначити, що всі постачальники СУБД по-різному вносять свої доповнення в канонічний ANSI SQL, щоб зробити його більш могутнім. Частіше всього такими розширеннями є додаткові команди, ключові слова, функції, типи даних і конструкції управляючої логіки. Іноді, правда, цих розширень виявляється дуже багато. Зокрема, Oracle і Microsoft вже внесли так багато доповнень, що з'явилися PL/ SQL і Transact-SQL – самостійні повноправні мови, а не підмножини SQL. Проте звичайно розширення одного постачальника несумісні з розширеннями іншого.

    Хронологія розвитку SQL:

    1970 р. – Кодд опублікував статтю про реляційну модель.

    1974 р. – мова SEQUEL.

    1979 р. – реляційна СУБД Oracle.

    1986 р. – організація ANSI прийняла SQL1.

    1987 р. – організація ISO прийняла SQL1.

    1989 р. – SQL1 (SQL-89).

    1992 р. – ANSI впровадила SQL2 (SQL-92).

    1992 р. – SQL3.

    2002 р. – IBM створила СУБД DB2.

     

     


    МОДУЛЬ 1

    Тема 1. Вступ до SQL. Синтаксис SQL. Типи даних.

    1. Вступ до SQL.

    2. Синтаксис SQL.

    3. Типи даних.

    1. Вступ до SQL.

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

    Мова SQL дуже могутня, тому її підтримують найбільш популярні СУБД, зокрема Microsoft Access, Oracle і MySQL, хоча рівень цієї підтримки істотно залежить від того, про яку саме СУБД йдеться.

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

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

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

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

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

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

    Якщо ви включаєте команди SQL як елементи в які-небудь програми, написані на процедурних мовах, вважається, що ви застосовуєте так званий вбудований SQL, а ті процедурні мови, на яких написані ці більш великі або, точніше, несучі програми, називають базовими. Такою мовою на практиці частіше всього виявляється будь-яка мова програмування загального призначення, зокрема С, Java або COBOL, або яка-небудь мова сценаріїв, наприклад Perl, PHP або Python.

    Якщо в режимі реального часу адресувати команди на мові SQL безпосередньо вашій СУБД, а вона відобразить відповідні результати відразу ж, як тільки отримає, значить, ви застосовуєте інтерактивний або динамічний SQL. Зазначимо, що всі сучасні сервери СУБД поставляються в комплекті з такими графічними додатками або утилітами командного рядка, які сприймають інтерактивні команди SQL або/і текстові файли, що містять SQL-пpoграми,тобто сценарії. Майте на увазі, що між інтерактивними і вбудованими командами можуть існувати невеликі синтаксичні відмінності.

    Всі команди SQL прийнято ділити на дві основні групи - мова маніпулювання даними (DML) і мова визначення даних (DDL).

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

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

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

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

    Функції SQL:

    1) організація даних – SQL дає користувачу можливість визначити структуру представлення даних, а також встановлювати відношення між елементами бази даних;

    2) вибірка даних – SQL дає можливість користувачу чи прикладній програмі отримати із бази даних інформацію, яка в ній міститься;

    3) опрацювання даних – SQL дає можливість користувачу чи прикладній програмі змінювати базу даних, тобто додавати нові дані, оновлювати чи вилучати існуючі;

    4) управління доступом – за допомогою SQL можна обмежувати можливості користувача щодо вибірки і зміни даних та захистити дані від несанкціонованого доступу;

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

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

    Роль SQL

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

    Ядро бази даних – це серцевина СУБД. Воно відповідає за фізичне структурування даних, а також запис їх на диск та зчитування з диску. Ядро сприймає SQL-запити від інших компонентів СУБД. SQL використовує самі різні функції, зокрема: 1) SQL-мова інтерактивних запитів; 2) SQL-мова програмування бази даних; 3) SQL-мова адміністрування бази даних. Адміністратор бази даних використовує SQL для визначення структури бази даних та управління доступом до даних; 4) SQL – це мова створення клієнт-серверних програм; 5) SQL – це мова доступу до даних в Internet; 6) SQL – це мова розосереджених баз даних, тобто SQL дозволяє розподілити дані між різними обчислювальними системами і зв’язати відповідне програмне забезпечення; 7) SQL – мова шлюзів баз даних.


    Переваги SQL:

    1) незалежність від конкретних СУБД;

    2) міжплатформна переносимість;

    3) наявність стандартів;

    4) підтримка компаніями IBM та Microsoft;

    5) реляційна основа;

    6) високорівнева структура;

    7) можливість виконання інтерактивних запитів;

    8) забезпечення програмного доступу до бази даних;

    9) можливість різноманітного представлення даних;

    10) повноцінність, як мови опрацьовування баз даних;

    11) можливість динамічного визначення даних;

    12) підтримка архітектури клієнт-сервер;

    13) підтримка корпоративних прикладних програм;

    14) розширюваність та підтримка об’єктно-орієнтованого програмування;

    15) можливість доступу до даних в Internet;

    16) інтеграція з мовою Java (протокол JDBC);

    17) промислова інфраструктура.

     

     

    2.Синтаксис SQL.

    Коментар. Всякий коментар – це необов'язковий текст, який друкується в окремому рядку програми, щоб пояснити цю програму. Коментар повинен починатися з двох дефісів. Коли СУБД знаходить їх, вона ігнорує те, що стоїть за ними, тобто сам коментар. Коментарі займають цілий рядок.

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

    Речення. Будь-яка команда SQL включає не менш одну пропозицію. В найзагальнішому випадку всяка пропозиція SQL – це фрагмент команди SQL, який починається з якого-небудь ключового слова, є обов’язковим або необов’язковим і повинен бути записаний в певному порядку. В даному прикладі ми маємо чотири пропозиції, а саме: SELECT, FROM, WHERE, ОRDER.

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

    Ідентифікатори. Довільний ідентифікатор – це таке слово, яке розробник бази даних застосовує для того, щоб іменувати об’єкти довільної бази даних, у тому числі таблиці, стовпці, псевдо імена (псевдоніми) і представлення. Ідентифікатор не може бути ключовим словом, і його довжина не може перевищувати 128 знаків. Знаком в SQL може бути будь-який символ алфавіту, включаючи символи латинського алфавіту і латинські ідеограми. В нашому прикладі іменами, зокрема, є au_fname, au_lname, authors і state.

    Завершальна крапка з комою. Запис кожної команди SQL повинен закінчуватися крапкою з комою.

     

    Приклад команди SQL:

    --Retrieve authors from New York

    SELECT au_fname, au_lname

    FROM authors

    WHEREstate = 'Lviv'

    ORDER BY au_lname;

     

    Таблиця 1.1. Ключові слова SQL

    ABSOLUTE

    COMMIT

    ELSE

    INSERT

    Null

    ACTION

    CONNECT

    END

    INT

    ONLY

    ADD

    CONNECTION

    END-EXEC

    INTEGER

    OPEN

    ALL

    CONSTRAINT

    ESCAPE

    INTERSECT

    OPTION

    ALLOCATE

    CONSTRAINTS

    EXCEPT

    INTERVAL

    OR

    ALTER

    CONTINUE

    EXCEPTION

    INTO

    ORDER

    AND

    CONVERT

    EXEC

    IS

    OUTER

    ANY

    CORRESPONDING

    EXECUTE

    ISOLATION

    OUTPUT

    ARE

    COUNT

    EXISTS

    JOIN

    OVERLAPS

    AS

    CREATE

    EXTERNAL

    KEY

    PAD

    ASC

    CROSS

    EXTRACT

    LANGUAGE

    PARTIAL

    ASSERTION

    CURRENT

    FALSE

    LAST

    POSITION

    AT

    CURRENT DATE

    FETCH

    LEADING

    PRECISION

    AUTHORIZATION

    CURRENT TIME

    FIRST

    LEFT

    PREPARE

    AVG

    CURRENTJTIMESTAMP

    FLOAT

    LEVEL

    PRESERVE

    BEGIN

    CURRENTJJSER

    FOR

    LIKE

    PRIMARY

    BETWEEN

    CURSOR

    FOREIGN

    LOCAL

    PRIOR

    BIT

    DATE

    FOUND

    LOWER

    PRIVILEGES

    BIT LENGTH

    DAY

    FROM

    MATCH

    PROCEDURE

    BOTH

    DEALLOCATE

    FULL

    MAX

    PUBLIC

     

    DEC

    GET

    MIN

    READ

    CASCADE

    DECIMAL

    GLOBAL

    MINUTE

    REAL

    CASCADED

    DECLARE

    GO

    MODULE

    REFERENCES

    CASE

    DEFAULT

    GOTO

    MONTH

    RELATIVE

    CAST

    DEFERRABLE

    GRANT

    NAMES

    RESTRICT

    CATALOG

    DEFERRED

    GROUP

    NATIONAL

    REVOKE

    CHAR

    DELETE

    HAVING

    NATURAL

    RIGHT

    CHARACTER

    DESC

    HOUR

    NCHAR

    ROLLBACK

    CHARJ.ENGTH

    DESCRIBE

    IDENTITY

    NEXT

    ROWS

    CHARACTER LENGTH

    DESCRIPTOR

    IMMEDIATE

    NO

    SCHEMA

    CHECK

    DIAGNOSTICS

    IN

    NOT

    SCROLL

    CLOSE

    DISCONNECT

    INDICATOR

    NULL

    SECOND

    COALESCE

    DISTINCT

    INITIALLY

    NULLIF

    SECTION

    COLLATE

    DOMAIN

    INNER

    NUMERIC

    SELECT

    COLLATION

    DOUBLE

    INPUT

    OCTET LENGTH

    SESSION

    COLUMN

    DROP

    INSENSITIVE

     

    SESSIONJJSER

    SET

    SUM

    TRAILING

    UPPER

    WHENEVER

    SIZE

    SYSTEM USER

    TRANSACTION

    USAGE

    WHERE

    SMALLINT

    TABLE

    TRANSLATE

    USER

    WITH

    SOME

    TEMPORARY

    TRANSLATION

    USING

    WORK

    SPACE

    THEN

    TRIM

    VALUE

    WRITE

    SQL

    TIME

    TRUE

    VALUES

    YEAR

    SQLCODE

    TIMESTAMP

    UNION

    VARCHAR

    ZONE

    SQLERROR

    TIMEZONEJHOUR

    UNIQUE

    VARYING

     

    SQLSTATE

    TIMEZONE MINUTE

    UNKNOWN

    VIEW

     

    SUBSTRING

    TO

    UPDATE

    WHEN

     

     

    Таблиця 1.2. Потенційні ключові слова SQL

    AFTER

    EQUALS

    OLD

    RETURN

    TEST

    ALIAS

    GENERAL

    OPERATION

    RETURNS

    THERE

    ASYNC

    IF

    OPERATORS

    ROLE

    TRIGGER

    BEFORE

    IGNORE

    OTHERS

    ROUTINE

    TYPE

    BOOLEAN

    LEAVE

    PARAMETERS

    ROW

    UNDER

    BREADTH

    LESS

    PENDANT

    SAVEPOINT

    VARIABLE

    COMPLETION

    LIMIT

    PREORDER

    SEARCH

    VIRTUAL

    CALL

    LOOP

    PRIVATE

    SENSITIVE

    VISIBLE

    CYCLE

    MODIFY

    PROTECTED

    SEQUENCE

    WAIT

    DATA

    NEW

    RECURSIVE

    SIGNAL

    WHILE

    DEPTH

    NONE

    REF

    SIMILAR

    WITHOUT

    DICTIONARY

    OBJECT

    REFERENCING

    SQLEXCEPTION

     

    EACH

    OFF

    REPLACE

    SQLWARNING

     

    ELSEIF

    OID

    RESIGNAL

    STRUCTURE

     

     

    SQL - це мова з вільним форматом речень. Будь-яка його команда може:

    • бути надрукована як у верхньому, так і в нижньому регістрі (наприклад, ключові слова SELECT і select вважаються ідентичними);

    • продовжуватися на наступному рядку скільки завгодно довго за умови, що ви не будете розбивати на дві частини слова, лексеми і рядки в лапках (тобто рядкові константи);

    • бути надрукована на одному рядку з будь-якими іншими командами;

    • починатися на будь-якій позиції горизонтальної розмітки екрану/листа.

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

    • неправильна орфографія при написанні якого-небудь ідентифікатора або команди;
    • відсутність завершальної крапки з комою;
    • невірний порядок розміщення речень в тілі команди;
    • відсутність лапок у стрічкових констант (літералів) і констант дати і часу;
    • наявність лапок у цифровых констант;
    • невірне сумісне застосування імен таблиць і імен;

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

    Оскільки вживати ключові слова як ідентифікатори заборонено, ви цілком можете вбудовувати будь-які ключові слова всередину ідентифікаторів як складову частину слова. Наприклад: group і max не можна використовувати як ідентифікатор, а ідентифікатор groups і max_price цілком допустимі.

    select au fname,

    AU_LNAME

    FROM

    authors WhErE state = 'NY' order

    bY AU_lname;

    Команда, приведена в прикладіеквівалентна попередній команді.

    Застосовувати пропуски в іменах бази даних не рекомендується. Але якщо дуже хочеться, можна вставити пропуски в будь-який ідентифікатор, тоді його треба буде укласти в одинарні лапки, от так:' last name'. Проте підкреслимо ще раз: краще застосовувати не пропуски, а знак підкреслення (last name) або ідентифікатор, набраний заголовними і прописними буквами (LastName).

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

    Комерційні СУБД накладають власні, обмеження на довжину ідентифікатора і на алфавіт. Тому має сенс проаналізувати документацію по вашій СУБД, використовуючи ключі пошуку „ідентифікатори” і „імена”.

    Більше того, різні СУБД мають свої власні додаткові ключові слова, які, очевидно, не можуть бути ідентифікаторами в „рідній” СУБД (але цілком можуть бути ідентифікаторами по канонах SQL і, можливо, в інших СУБД). От чому непогано було б організувати пошук в документації по вашій СУБД з використанням ключів пошуку „ключові слова” і „зарезервовані слова”.

    3.Типи даних.

    1.3.1. Команди


    Всі команди SQL мають однакову структуру:

     

    Всього в SQL існує приблизно 40 команд. Кожна команда просить СУБД виконати певну дію: вибрати дані, створити таблицю чи вставити в таблицю нові дані.

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

    Команда

    Опис

    Опрацювання даних

     

    SELECT

    Вибирає дані із таблиці

    INSERT

    Додає нові рядки до таблиці

    DELETE

    Вилучає рядки із таблиці

    UPDATE

    Оновлює дані, які містяться в таблиці

    Визначення даних

     

    CREATE TABLE

    Створює нову таблицю і додає її до бази даних

    DROP TABLE

    Знищує таблицю, тобто вилучає її із бази даних

    ALTER TABLE

    Змінює структуру існуючої таблиці

    CREATE VIEW

    Створює новий погляд та додає його до бази даних

    DROP VIEW

    Знищує погляд, тобто вилучає його з бази даних

    CREATE INDEX

    Створює індекс для стовпчика

    DROP INDEX

    Знищує індекс для стовпчика

    CREATE SCHEMA

    Створює нову схему

    DROP SCHEMA

    Знищує схему

    CREATE DOMAIN

    Створює та додає до бази даних новий домен

    ALTER DOMAIN

    Змінює визначення домену

    DROP DOMAIN

    Знищує домен, тобто вилучає домен з бази даних

    Управління доступом

     

    GRANT

    Надає користувачу певні привілеї доступу

    REVOKE

    Скасовує вказані привілеї доступу

    Управління транзакціями

     

    COMMIT

    Завершує біжучу транзакцію

    ROLLBACK

    Скасовує біжучу транзакцію

    SET TRANSACTION

    Починає транзакцію і вказує режим доступу до даних

    Кожна команда SQL починається із ключового слова, яке визначає дію, що виконується командою. Команда містить одну або кілька секцій. Секція описує дані, з якими працює команда, або містить уточнюючу інформацію про дії, що виконуються командою. Кожна секція також починається із ключового слова, наприклад: WHERE, FROM, INTO. Деякі секції в команді обов’язкові, а деякі необов’язкові. Конкретна структура та зміст секцій залежить від команди. Багато секцій містять імена таблиць чи стовпчиків, деякі секції містять додаткові ключові слова, константи, вирази.

    1.3.2. Імена

    Кожний об’єкт в базі даних повинен мати ім’я. Повне ім’я кожного об’єкту повинно бути унікальним. Імена вказують, над якими об’єктами SQL-команда виконує свою дію. Основні об’єкти, які повинні мати імена згідно стандарту SQL1 – це таблиці, стовпчики, користувачі. Стандарт SQL2 до цього переліку ще додає схеми (колекції, набори таблиць), обмеження (умови, які накладаються на вміст таблиць та їх відношення) і домени (допустимі набори значень, які можуть бути занесені у стовпчик). За стандартом SQL1 імена повинні складати від 1 до 18 символів, починатися з літери і не містити пробілів, чи знаків пунктуації. Стандарт SQL2 дозволяє утворювати імена довжиною 128 символів.


    Якщо в команді вказане ім’я таблиці, то СУБД вважає, що відбувається звертання до однієї із Ваших власних таблиць, тобто до однієї з тих таблиць БД, яку створили Ви самі. Якщо Ви маєте відповідні привілеї, тобто відповідний дозвіл, то можна звертатися до таблиць, власниками яких є інші користувачі. Для цього використовується повне ім’я таблиці:

     


    Стандарт SQL2 узагальнює поняття повного імені таблиці:

     


    Деякі СУБД організовані таким чином, що дозволяють створювати та опрацьовувати кілька баз даних (Inter Base, MS SQL SERVER). Вони дають можливість звертатися до таблиці із іншої бази даних.

     

    Приклад 1. Звертання до таблиці із іншої БД за допомогою драйверів BDE.

    DELETE FROM Pracivnyky

    WHERE Kod IN

    (SELECTKod

    FROM :ARCHIVE: Pracivnyky)

    Цей запит вилучає із таблиці Pracivnyky біжучої бази даних інформацію про тих працівників, яка міститься в однойменній таблиці із бази даних, зв’язаної з BDE-аліасом ARCHIVE.


    MS SQL Server реалізує звертання до бази даних так (діалект SQL Server: Transact-SQL):

     

    Ця команда вибирає всю інформацію із таблиці Pracivnykyвказаної бази даних.

    Якщо в команді вказане ім’я стовпчика, то СУБД сама визначає, якій саме таблиці із тих, що вказані у цій команді, належить даний стовпчик. Якщо в команді вказуються два однойменних стовпчика із різних таблиць, то необхідно вказувати повне ім’я стовпчика:


    Якщо стовпчик міститься в таблиці, власником якої є інший користувач, то повне ім’я має таку будову:

     

    1.3.3. Типи даних

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

    Типи даних в SQL

    Тип даних

    Опис

    CHAR (довжина)

    Літерні рядки постійної довжини SQL1

    CHARACTER (довжина)

    VARCHAR (довжина)

    Літерні рядки змінної довжини SQL1

    CHAR VARYING (довжина)

    CHARACTER VARYING (довжина)

    NCHAR (довжина)

    Локалізовані літерні рядки постійної довжини SQL2

    NATIONAL CHAR (довжина)

    NATIONAL CHARACTER (довжина)

    NCHAR VARYING (довжина)

    Локалізовані літерні рядки змінної довжини SQL3

    NATIONAL CHAR VARYING (довжина)

    NATIONAL CHARACTER VARYING (довжина)

    INTEGER

    Цілі числа SQL

    INT

    SMALLINT

    Малі цілі числа SQL1

    BIT (довжина)

    Рядки бітів постійної довжини SQL2

    BIT VARYING (довжина)

    Рядки бітів змінної довжини SQL2

    NUMERIC (точність, степінь)

    Числа з плаваючою крапкою SQL1

    DECIMAL (точність, степінь)

    DEC (точність, степінь)

    FLOAT (точність)

    REAL

    Числа з плаваючою крапкою низької точності SQL1

    DOUBLE PRECISION

    Числа з плаваючою крапкою високої точності SQL1

    DATE

    Дата SQL2

    TIME (точність)

    Час SQL2

    TIMESTAMP (точність)

    Дата-час SQL2

    INTERVAL

    Інтервал SQL2

    Різні СУБД по-різному опрацьовують типи даних. Розглянемо це на прикладі опрацювання дати і часу.

    Приклад.

    Для DB2

    DATA << June 30, 1990 >>

    TIME << 12:30 PM >>

    TIMESTAMP – конкретний момент часу з точністю до наносекунди.

    В цій СУБД значення дати і часу можна представити за допомогою літерних рядків. Підтримуються арифметичні дії над датами:

    SELECT Prizv, DatePryjomu

    FROM Pracivnyky

    WHERE DatePryjomu > = ‘05/30/1990’+15 DAYS

    Тут поле DatePryjomu типу DATE.

     

    Для SQL Server

    Є єдиний тип для представлення дати-часу DATATIME:

    SELECT Prizv, DatePryjomu

    FROM Pracivnyky

    WHERE DatePryjomu > = ‘06/14/1990’

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

    WHERE DatePryjomu > = ‘06/14/1990 12:00 AM’

    В SQL Server також підтримуються арифметичні дії над датами:

    WHERE DatePryjomu > = DATEADD (DAY, 15, ‘05/30/1990’)

    Для Oracle

    Тип DATE ~TIMESTAMP (з SQL). Як і для SQL Server, якщо час явно не вказаний, то він вважається рівним опівночі:

    WHERE DatePryjomu > = ‘14-JUN-90’

    В Oracle також підтримуються арифметичні дії над датами:

    WHERE DatePryjomu > = ‘30-MAY-90’ + 15

    1.3.4. Константи

    1.3.4.1. Числові константи

    Це насамперед точні числові константи:

    1)


    цілі

     

    2)


    десяткові

     

    Приклад. 2000.00, + 497.13

    Не можна ставити символи, які відокремлюють розряди між цифрами. Не всі діалекти SQL дозволяють ставити перед числом знак "+”, тому краще його уникати. Якщо дані представляють грошові одиниці, то в більшості СУБД використовуються цілі або десяткові константи. В деяких із них перед константою можна вказати символ грошової одиниці, наприклад: $ 0.75, 200.75. Константи з плаваючою крапкою відносяться до наближених числових констант, вони визначаються за допомогою літери "Е” і мають той самий формат, що і більшість мов програмування.


    1.3.4.2. Літерні рядки

     


    Константи літерних рядків повинні бути обрамлені за допомогою одинарних апострофів:

     

    Приклад. ‘школа’

    Якщо в константу необхідно включити апостроф, то його потрібно подвоїти, наприклад: ‘ім”я’, ‘м”ясо’.

    В деяких СУБД (SQL Server, Informix) дозволяється обробляти літерні константи подвійними лапками. Це може привести до проблем при переході на платформу іншої СУБД, тому подвійні лапки краще не використовувати.

    1.3.4.3. Константи дати і часу

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

    Для SQL Server:

    Дата

    Час

    March 15, 1990

    Mar 15 1990

    3/15/1990

    3-15-90

    1990 MAR 15

    15:30:25

    3:30 pmскачать dle 10.6фильмы бесплатно