
- •Тема 5. Запити на мові sql
- •Діалекти sql
- •Типи даних в sql
- •Прості запити на мові sql
- •Проекція в sql
- •Порівняння рядків
- •Значення дати і часу в sql
- •Значення null і операції з ним
- •Значення unknown і операції з ним
- •Запити до декількох відношень Декартів добуток і з’єднання відношень у sql
- •Розрізнення одноіменних атрибутів кількох відношень
- •Змінні кортежів та псевдоніми відношень
- •Об’єднання запитів
- •Мова sql. Підзапити та вирази з’єднання Підзапити
- •Підзапити для обчислення скалярних значень
- •Умови рівня відношення
- •Умови рівня кортежу
- •Корельовані підзапити
- •Підзапити в реченнях from
- •Вирази з’єднання в sql
- •Перехресне з’єднання
- •Тета-з’єднання
- •Натуральне з’єднання
- •Зовнішнє тета-з’єднання
- •З’єднання у діалектах Jet sql та Transact sql
- •Приклад правого зовнішнього з’єднання для Oracle:
Тема 5. Запити на мові sql
Запити відносно змісту БД частіше за все описуються засобами мови, що має назву Structured Query Language – SQL, мова структурованих запитів, дехто вимовляє як сікуел (правда, я таких не чув). Можливості SQL:
Засоби визначення запитів, близькі до засобів реляційної алгебри.
Засоби зміни БД (як-от додавання записів у таблицю). Разом це можливості DML – Data Manipualtion Language.
Засоби зміни схеми БД. Це можливості DDL - Data Definition Language.
Діалекти sql
Перший стандарт SQL – ANSI SQL. Прийнятий ANSI в 1986 році та ISO в 1987 році.
ANSI - American National Standards Institute) – об’єднання американських ділових та промислових груп, що розробляє торгові та комунікаційні стандарти. (Вікіпедія). Це недержавна організація, і стандарти приймаються (або ні) промисловістю добровільно.
Рис.5.11. Співвідношення діалектів SQL
Типи даних в sql
Набір типів даних у діалекті SQL для комерційної СУБД може значно відрізнятись від стандарту, розширюючи його. Порівняймо стандарт з двома діалектами SQL від Microsoft.
Таблиця 5.11. Співвідношення типів даних у стандарті SQL та діалектах SQL від Microsoft
|
SQL99 |
Jet SQL (русифікований Access) |
Transact SQL |
Рядки символів |
CHAR(n) VARCHAR(n) |
CHARACTER – до 255 знаків TEXT (Текстовый) |
Не-Unicode: CHAR – до 8000 VARCHAR - до 8000 TEXT – до 2ГБ Unicode: NCHAR – до 4000 NVARCHAR - до 4000 NTEXT – до 1ГБ |
Рядки бітів |
BIT(n) BIT VARYING(n) |
BINARY (Поле МЕМО) |
BINARY - до 8000 VARBINARY - до 8000 IMAGE – до 2ГБ |
Логічний тип - 1 байт |
BOOLEAN |
BIT (Логический) |
BIT |
Цілі числа |
SHORTINT INT |
TINYINT – 1 байт SMALLINT – 2 (Целое) INTEGER - 4 (Длинное целое) |
TINYINT – 1 байт (0-255) SMALLINT – 2 байти ( -32,768 – 32767) INT – 4 байти BIGINT – 8 байт |
Унікальне ціле |
--- |
COUNTER=IDENTITY (Счетчик, Последовательные або Случайные) |
IDENTITY |
Дійсні числа з плав.комою |
FLOAT=REAL DOUBLE PRECISION |
REAL – 4 байта (Одинарное с плавающей точкой) FLOAT – 8 байт (Двойное с плавающей точкой) |
REAL – 4 байта FLOAT– 8 байт |
Дійсні числа з фікс.комою |
DECIMAL(n,d) |
DECIMAL – 17 байт (Действительное) MONEY=CURRENCY – 8 байт (Денежный) |
DECIMAL=NUMERIC (+-10**38) SMALLMONEY (+-200тис.) MONEY (+-900трлн) |
Дата |
DATE |
DATETIME – 8 байт |
SMALLDATETIME (1900-2079 рр.) DATETIME |
Час |
TIME |
--- |
--- |
Глобально унікальний ідентифікатор |
|
UNIQUEIDENTIFIER=GUID - 16 байт (Код репликации) |
UNIQUEIDENTIFIER |
Поточні дата-час |
--- |
--- |
TIMESTAMP |