- •4. Реляционные языки запросов
- •Isbl -язык реляционной алгебры
- •Язык sql
- •Типы данных.
- •Создание, удаление или изменение таблиц или индексов с помощью управляющих запросов sql.
- •Инструкция create table
- •Предложение constraint (sql)
- •Инструкция alter table
- •Инструкция drop
- •Drop {table таблица | index индекс on таблица}
- •Инструкция create index
- •Запросы на выборку. Инструкция select
- •Предикаты all, distinct, distinctrow, top (sql)
- •Select [all | distinct | distinctrow | [top n [percent]]]
- •Предложение from
- •Синтаксис
- •Предложение where
- •Синтаксис
- •Предложение order by
- •Синтаксис
- •Группировка записей. Предложение group by
- •Синтаксис
- •Where условие_отбора
- •Предложение having
- •Синтаксис
- •From таблица
- •Запросы с соединением таблиц. Операция inner join
- •On таблица1.Поле2 оператор_сравнения таблица2.Поле2) or
- •Операции left join, right join
- •From таблица1 [ left | right ] join таблица2
- •Объединение результатов нескольких запросов. Операция union
- •Подчиненный запрос.
- •Запросы на изменение. Инструкция select...Into
- •From источник
- •Предложение in
- •Синтаксис
- •Инструкция insert into
- •Инструкция update
- •Инструкция delete
- •Delete [таблица.*]
- •Перекрестные запросы
- •Синтаксис
- •Запросы с параметрами Описание parameters
- •Синтаксис parameters имя тип_данных [, имя тип_данных [, ...]]
- •Статистические функции sql .
- •Функция Avg
- •Функция Count
- •Функции Min, Max
- •Функции StDev, StDevP
- •Функция Sum
- •Функции Var, VarP
- •Var(выражение)
- •VarP(выражение)
- •Quel:язык реляционного исчисления с переменными-кортежами
- •Query-by-example: язык исчисления с переменными – доменами
- •Формы запросов
- •Зарезервированные слова:
- •Конструирование операторов запроса.
- •Выбор записей
- •Запросы к нескольким таблицам
- •Вычисления
- •Операции
- •Группы записей
- •Работа с наборами записей
- •Развитые операторы запросов.
Язык sql
Язык SQL (Structured Query Language - структурированный язык запросов) в настоящее время является промышленным стандартом, который в большей или меньшей степени поддерживает любая СУБД, претендующая на звание "реляционной".
В начале 70-х годов в компании IBM была разработана экспериментальная СУБД System R на основе языка SEQUEL (Structured English Qeury Language - структурированный английский язык запросов), который можно считать непосредственным предшественником SQL. Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. В 1981 году IBM объявила о своем первом, основанном на SQL, программном продукте - SQL/DS. Чуть позже к ней присоединились Oracle и другие производители. Первый стандарт языка SQL был принят Американским национальным институтом стандартизации (ANSI) в 1987 (так называемый SQL level /уровень/ 1) и несколько уточнен в 1989 году (SQL level 2). Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 нового расширенного стандарта (ANSI SQL-92 или просто SQL-2). В настоящее время ведется работа по подготовке третьего стандарта SQL, который должен включать элементы объекто-ориентрованного доступа к данным.
В SQL определены два подмножества языка:
SQL-DDL (Data Definition Language) - язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д.
SQL-DML (Data Manipulation Language) - язык манипулирования данными: добавление, изменение, удаление и извлечение данных, управления транзакциями.
Мы не будем рассматривать возможности стандартного SQL. Во-первых, ни одна СУБД не поддерживает их в полной мере, а во-вторых, производители СУБД часто предлагают собственные расширения SQL, несовместимые друг с другом. Поэтому мы рассматриваем подмножество языка, которое реализовано в СУБД MS Access. В то же время, этого подмножества достаточно, чтобы начать самостоятельную работу с любой СУБД.
Типы данных.
Типы данных ядра базы данных Jet SQL включают 13 основных типов данных, определенных ядром базы данных Microsoft Jet, и несколько синонимов, которые можно использовать вместо основных типов.
В табл. 2 перечислены основные типы данных и их синонимы.
Таблица 2
|
Тип данных и синонимы |
Размер |
Описание |
|
1 |
2 |
3 |
|
BINARY (VARBINARY) |
1 байт на символ |
Данные любого типа могут храниться в поле этого типа. Данные никак не преобразуются (например, в текстовые). Данные отображаются в том же виде, в каком они вводятся в это поле. |
|
BIT (BOOLEAN, LOGICAL, LOGICAL1, YESNO) |
1 байт |
Значения "Да" (Yes) и "Нет" (No), а также поля, содержащие одно из двух возможных значений. |
|
1 |
2 |
3 |
|
BYTE (INTEGER1) |
1 байт |
Целое число от 0 до 255. |
|
COUNTER (AUTOINCREMENT) |
4 bytes |
Число, автоматически увеличиваемое ядром базы данных Jet при добавлении в таблицу новой записи. В ядре базы данных Jet этому типу данных соответствует тип данных Long. |
|
CURRENCY (MONEY) |
8 байтов |
Масштабируемое целое от 922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
|
DATETIME(DATE, TIME, TIMESTAMP) |
8 байтов |
Дата или время; допустим любой год от 100 до 9999. |
|
GUID |
128 байтов |
Уникальный идентификатор, используемый при вызовах удаленных процедур. |
|
SINGLE (FLOAT4, IEEESINGLE, REAL) |
4 байта |
Число с плавающей точкой и одинарной точностью от 3,402823E38 до 1,401298E-45 (для отрицательных), от 1,401298E-45 до 3,402823E38 (для положительных) или 0. |
|
DOUBLE (FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC) |
8 байтов |
Число с плавающей точкой и двойной точностью от 1,79769313486232E308 до 4,94065645841247E-324 (для отрицательных), от 4,94065645841247E-324 до 1,79769313486232E308 (для положительных) или 0. |
|
SHORT (INTEGER2, SMALLINT) |
2 байта |
Короткое целое от 32 768 до 32 767. |
|
LONG (NT, INTEGER, INTEGER4) |
4 байта |
Длинное целое от 2 147 483 648 до 2 147 483 647. |
|
LONGTEXT (LONGCHAR, MEMO, NOTE) |
1 байт на символ |
От 0 до 1,2 гигабайт. |
|
LONGBINARY (GENERAL, OLEOBJECT) |
Не ограничено |
От 0 до 1,2 гигабайт. Используется для объектов OLE. |
|
TEXT (ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR) |
1 байт на символ |
От 0 до 255 символов. |
