Пятница
26-04-2024
00:22
Главная
FAQ
Информист Приветствую Вас Гость
Регистрация
Вход
Меню сайта

Наш опрос
Что Вы веберете
Всего ответов: 230

Главная » FAQ » СУБД [ Добавить вопрос ]

Программирование [38]
Java, JavaScript, C/C++, Delphi, Assembler, C#, MVC ASP.NET
Inet [12]
Браузеры (Opera, Firefox, IE, ...), пейджеры (ICQ, QIP, ...), сайты, ...
HTML [10]
Вопросы по верстке
Linux [28]
Или "как же это заюзать?"
Софт [8]
Matlab, Eclipse
Аппаратная часть [5]
Архитектура ПК, VHDL, алгоритмы аппаратной части
Разное полезное [12]
Как запомнить, пояснение пословиц
ГОСТ [1]
Размеры по ГОСТам, законы, правила и прочее необходимое, что трудно найти в документации
СУБД [6]
Postgres
Windows [12]
Или заморочки с виндой. Восстановление после "работы" вирусов

select "Fam"|| ' ' ||"Name"||' '||"Otchestvo" as full_name from student;

CREATE SEQUENCE foo_seq;
CREATE TABLE foo (
    foo_id integer NOT NULL DEFAULT nextval('foo_seq'),
    foo_name text,
PRIMARY KEY (foo_id)
);

DECLARE
    kod_gr varchar(6);
    nom_z varchar(6);
    stud_full_name varchar(72);
BEGIN
    SELECT s."Fam"||' '||s."Name"||' '||s."Otchestvo" 
           INTO stud_full_name 
           FROM student s, EXAMEN e 
           WHERE s.id=e.student_id;
    SELECT s.nom_zach into nom_z 
           FROM student s, examen e 
           WHERE s.id=e.student_id;
    SELECT s.kod_gr into kod_gr 
           FROM student s, examen e 
           WHERE s.id=e.student_id;
    EXECUTE 'INSERT INTO examen_log (prepod, date, old_mark, new_mark, 
           student, nom_z, kod_gr)
           VALUES (USER, CURRENT_DATE,
           ' || OLD.mark || ',
           ' || NEW.mark || ',
           ''' || stud_full_name || ''',
           ''' || nom_z || ''',
           ''' || kod_gr || '''
);';
    RETURN NULL;
END;


age(timestamp, timestamp)

age(timestamp)

чтобы выделить, например, годы:

date_part('year',age(timestamp))


У операции реляционного деления два операнда - бинарное и унарное отношения. Результирующее отношение состоит из одноатрибутных кортежей, включающих значения первого атрибута кортежей первого операнда таких, что множество значений второго атрибута (при фиксированном значении первого атрибута) совпадает со множеством значений второго операнда.

SELECT DISTINCT A.X
  FROM A
  WHERE NOT EXIST
    (SELECT *
        FROM B
        WHERE NOT EXIST
          (SELECT *
              FROM A A1
              WHERE
                  A1.X = A.X AND
                  A1.Y = B.Y));

Замечание. Оператор SQL, реализующий деление отношений трудно запомнить, поэтому дадим пример эквивалентного преобразования выражений, представляющих суть запроса.

Пусть отношение A содержит данные о поставках деталей, отношение B содержит список всех деталей, которые могут поставляться. Атрибут X является номером поставщика, атрибут Y является номером детали.

Разделить отношение A на отношение B означает в данном примере "отобрать номера поставщиков, которые поставляют все детали".

Преобразуем текст выражения:

"Отобрать номера поставщиков, которые поставляют все детали" эквивалентно

"Отобрать те номера поставщиков из таблицы A, для которых не существует непоставляемых деталей в таблице B" эквивалентно

"Отобрать те номера поставщиков из таблицы A, для которых не существует тех номеров деталей из таблицы B, которые не поставляются этим поставщиком" эквивалентно

"Отобрать те номера поставщиков из таблицы A, для которых не существует тех номеров деталей из таблицы B, для которых не существует записей о поставках в таблице A для этого поставщика и этой детали".

Последнее выражение дословно переводится на язык SQL. При переводе выражения на язык SQL нужно учесть, что во внутреннем подзапросе таблица A должна быть переименована, для того чтобы отличать ее от экземпляра этой же таблицы, используемой во внешнем запросе.

A x
/
x
=
A
A y y B
A z z C
B x
B y
B z
C x
C y
C z
D x
E y
E z
F x
F z

Файл postgresql.conf:

listen_addresses = '*'

Файл pg_hba.conf:

host all all 192.168.0.0/24 trust
- первое all - все базы
- второе all - все пользователи
- можно указать ип конкретной машины, тогда необходимо указать маску 32
- trust - подключение без пароля и вообще на полном доверии

ВАЖНО: после сохранения внесенных изменений необходимо перезапустить сервер (остановить и заново запустить сервис postgres).


Форма входа

Поиск
Яндекс


Поиск по Информисту

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Copyright MyCorp © 2024Сайт создан в системе uCoz