Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- 1. Создание базы данных CREATE DATABASE school_db; \c school_db -- Подключение к созданной базе (для psql) SET ROLE r_ФАМИЛИЯ; -- 2. Создание роли r_ФАМИЛИЯ с паролем и доступом до конца года CREATE ROLE r_ФАМИЛИЯ LOGIN PASSWORD 'securepassword' VALID UNTIL '2024-12-31'; GRANT CONNECT ON DATABASE school_db TO r_ФАМИЛИЯ; GRANT USAGE ON SCHEMA public TO r_ФАМИЛИЯ; -- 3. Создание таблицы "students" CREATE TABLE students ( id SERIAL PRIMARY KEY, фамилия VARCHAR(50) NOT NULL, предмет VARCHAR(50) NOT NULL, школа VARCHAR(50) NOT NULL, баллы INT CHECK (баллы >= 0 AND баллы <= 100) ); -- Назначение прав для r_ФАМИЛИЯ GRANT SELECT, INSERT, UPDATE ON students TO r_ФАМИЛИЯ; -- 4. Создание вложенной роли r1_ФАМИЛИЯ CREATE ROLE r1_ФАМИЛИЯ; GRANT r1_ФАМИЛИЯ TO r_ФАМИЛИЯ; -- 5. Добавление колонки "год рождения" ALTER TABLE students ADD COLUMN год_рождения INT CHECK (год_рождения > 1900); -- 6. Функция на PL/pgSQL для обновления баллов студента CREATE OR REPLACE FUNCTION update_score(student_id INT, new_score INT) RETURNS VOID AS $$ BEGIN UPDATE students SET баллы = new_score WHERE id = student_id; END; $$ LANGUAGE plpgsql; -- 7. Создание триггера для логирования изменений при добавлении/обновлении данных CREATE OR REPLACE FUNCTION log_changes() RETURNS TRIGGER AS $$ BEGIN RAISE NOTICE 'Данные изменены: %', NEW; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER students_changes BEFORE INSERT OR UPDATE ON students FOR EACH ROW EXECUTE FUNCTION log_changes(); -- 8. Создание материализованного представления с сортировкой по фамилии в обратном порядке CREATE MATERIALIZED VIEW sorted_students AS SELECT *, ROW_NUMBER() OVER (ORDER BY фамилия DESC) AS номер_строки FROM students; -- Готово! Теперь можно обновлять представление при необходимости: REFRESH MATERIALIZED VIEW sorted_students;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear