class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

основы sql

введение
структура БД
инструментарий
комментарий
идентификаторы
обзор типов данных
интервалы времени
литералы
операции и выражения
обзор функций
преобразование типов
создание таблицы
изменение, удаление таблицы
вставка данных
изменение записей
удаление записей
выбор данных
соединения
агрегатные функции, группировка данных
операции над выборками
добавление итогов
нумерация записей
уникальность первич. ключа
индексы
представления

Dynamic SQL

прочее

Справочник по SQL

Представления

Представления позволяют сохранить код выборки в базе данных. После этого имя представления используется в других выборках также как и имя обычной таблицы. Таким образом, упрощается написание новых запросов. Для конкретности примера, пусть существуют следующие таблицы с данными.


-- создаем первую таблицу
create table dicevents(
id integer,
s varchar(45),

constraint pk_dicevents primary key(id)
);

-- вставка данных
insert into dicevents
    values(1,'пожар');
insert into dicevents
    values(2,'авария');
insert into dicevents
    values(3,'взрыв газа');

-- создаем вторую таблицу
create table evt(
id integer,
d date,
summ double precision,
evtname integer,

constraint pk_evt primary key(id),
constraint fk_evt foreign key(evtname)
    references dicevents(id)
);

-- вставка данных
insert into evt
    values(1,date '2008-01-02',102000,1);
insert into evt
    values(2,date '2007-12-31',67000,3);
insert into evt
    values(3,date '2008-01-05',32020.3,2);
insert into evt
    values(4,date '2008-01-06',99000,null);

Для создания представлений используется команда CREATE VIEW. По желанию в команду можно включить OR REPLACE. В этом случае новое представление заменит старое, если оно существует. Ниже приведены примеры создания представления на соединение наших таблиц.


CREATE OR REPLACE VIEW evtlst
AS -- далее следует запрос
select t.d as "дата",
       dt.s as "событие",
       t.summ as "ущерб"
from evt t left join dicevents dt on (t.evtname=dt.id)
order by t.d;

-- названия столбцов можно задать после
-- имени представления
-- в MySQL двойные кавычки возможны
-- только в режиме ANSI SQL
CREATE OR REPLACE VIEW evtlst
("дата","событие","ущерб")
as
select t.d, dt.s, t.summ
from evt t left join dicevents dt on (t.evtname=dt.id)
order by t.d;

Выборка из представления не отличается от выборки из обычной таблицы.


-- выборка из представления
select * from evtlist;

Для уничтожения представления используется команда DROP VIEW. Некоторые СУБД поддерживают расширенный синтаксис с IF EXISTS, позволяющий избежать ошибки, если уничтожаемого представления не существует.


-- уничтожение представления
DROP VIEW eventlist; 

-- уничтожение представления, если оно
-- существует
DROP VIEW IF EXISTS eventlist;

Рейтинг@Mail.ru