- •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: язык исчисления с переменными – доменами
- •Формы запросов
- •Зарезервированные слова:
- •Конструирование операторов запроса.
- •Выбор записей
- •Запросы к нескольким таблицам
- •Вычисления
- •Операции
- •Группы записей
- •Работа с наборами записей
- •Развитые операторы запросов.
Инструкция alter table
Изменяет структуру таблицы, созданной с помощью инструкции CREATE TABLE.
Синтаксис
ALTER TABLE таблица {ADD {COLUMN поле тип[(размер)] [CONSTRAINT индекс] |
CONSTRAINT составной_индекс} |
DROP {COLUMN поле | CONSTRAINT имя_индекса} }
где:
таблица - имя изменяемой таблицы;
поле - имя поля, добавляемого в таблицу или удаляемого из нее;
тип - тип данных поля;
размер - размер поля в символах (только для текстовых и двоичных полей);
индекс - индекс для поля;
составной_индекс - описание составного индекса, добавляемого к таблице;
имя_индекса - имя составного индекса, который следует удалить.
С помощью инструкции ALTER TABLE существующую таблицу можно изменить несколькими способами, например, добавить новое поле в таблицу с помощью ADD COLUMN. В этом случае указывается имя поля, его тип и (для текстовых и двоичных полей) необязательный размер.
Кроме того, можно:
- создать индекс по этому полю ;
- добавить составной индекс с помощью ADD CONSTRAINT;
- удалить поле с помощью DROP COLUMN. В этом случае укажите только имя поля;
- удалить составной индекс с помощью DROP CONSTRAINT. В этом случае укажите только имя составного индекса, следующее за зарезервированным словом CONSTRAINT.
Нельзя добавить или удалить одновременно несколько полей или индексов.
Инструкция drop
Удаляет существующую таблицу из базы данных или удаляет существующий индекс из таблицы.
Синтаксис
Drop {table таблица | index индекс on таблица}
где:
таблица - имя таблицы, которую следует удалить или из которой следует удалить индекс;
индекс - имя индекса, удаляемого из таблицы.
Прежде чем удалить таблицу или удалить из нее индекс, необходимо закрыть ее.
Инструкция create index
Создает новый индекс для существующей таблицы.
Синтаксис
CREATE [ UNIQUE ] INDEX индекс
ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
где:
индекс - имя создаваемого индекса.
таблица - имя существующей таблицы, для которой создается индекс.
поле - имена одного или нескольких полей, включаемых в индекс.
Для создания простого индекса (состоящего из одного поля) вводится имя поля в круглых скобках сразу после имени таблицы. Для создания составного индекса (состоящий из нескольких полей) перечисляются имена всех этих полей. Для расположения элементов индекса в убывающем порядке используется зарезервированное слово DESC; в противном случае будет принят возрастающий порядок.
Чтобы запретить совпадение значений индекса в разных записях, используется зарезервированное слово UNIQUE.
С помощью необязательного предложения WITH задаются условия на значения. Например, можно:
- с помощью параметра DISALLOW NULL запретить наличие значений Null в индексированных полях новых записей.
- с помощью параметра IGNORE NULL запретить включение в индекс записей, имеющих значения Null в индексированных полях.
- с помощью зарезервированного слова PRIMARY назначить индексированные поля ключом. Такой индекс по умолчанию является уникальным, следовательно, зарезервированное слово UNIQUE можно опустить.
В качестве примера создадим таблицы базы данных, содержащей данные о поставках товаров, которые будут использоваться во всех последующих примерах:
CREATE TABLE Товары ([Код товара] INTEGER CONSTRAINT Key1 PRIMARY KEY,
Наименование TEXT, Тип INTEGER CONSTRAINT Key2 REFERENSES Типы, Цена CURRENCY,[Место хранения] TEXT);
CREATE TABLE Поставщики ([Код поставщика] INTEGER CONSTRAINT Key3 PRIMARY KEY,Имя TEXT, Адрес TEXT);
CREATE TABLE Типы (Тип INTEGER CONSTRAINT Key4 PRIMARY KEY,Наименование TEXT );
CREATE TABLE Поставки ([Код товара] INTEGER CONSTRAINT Key5 REFERENSES Товары, [Код поставщика] INTEGER CONSTRAINT Key6 REFERENSES Поставщики, Количество INTEGER, Дата DATE CONSTRAINT Key4 PRIMARY KEY([Код товара],[Код поставщика]);