From c5039ec7e7260664de0aeec9fb0e825bf1cefca2 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Mon, 27 Nov 2023 14:02:17 +0300 Subject: [PATCH] added insert for 6 --- Lab/Lab#6/insert.sql | 163 ++++++++++++++++++++++++++++++++++++++++ Lab/Lab#6/lab6_done.sql | 10 +-- 2 files changed, 168 insertions(+), 5 deletions(-) create mode 100644 Lab/Lab#6/insert.sql diff --git a/Lab/Lab#6/insert.sql b/Lab/Lab#6/insert.sql new file mode 100644 index 0000000..a1cc812 --- /dev/null +++ b/Lab/Lab#6/insert.sql @@ -0,0 +1,163 @@ +DROP TABLE bd6_employees IF EXISTS; + +-- CREATE TABLE bd6_departments( +-- id integer PRIMARY KEY, +-- name varchar(64), +-- postal_code varchar(6), +-- street varchar(64), +-- building varchar(16), +-- city varchar(32) +-- ); +CREATE TABLE + bd6_employees ( + id integer PRIMARY KEY, + last_name varchar(64) NOT NULL, + first_name varchar(64) NOT NULL, + phone_number varchar(18), + email varchar(32), + department_id integer REFERENCES bd6_departments (id) NOT NULL, + manager_id integer REFERENCES bd6_employees (id), + salary_in_euro numeric(8, 2) DEFAULT 0 NOT NULL, + UNIQUE (last_name, first_name, department_id) + ); + +-- INSERT INTO bd6_departments +-- VALUES(10, 'Administration', '109658', 'Leningradskoe shosse', '1', 'Moscow'), +-- (20, 'Marketing', '107701', 'Lenina', '22a', 'Volgograd'), +-- (30, 'Purchasing', '109901', 'Mikluho-Maklaya', '8', 'Bryansk'), +-- (40, 'Human Resources', '10967', '5-ya parkovaya', '16', 'Moscow'), +-- (50, 'Shipping', '109659', '38 Bakinskih komissarov', '77', 'Moscow'), +-- (60, 'IT', '109902', 'Pervomajskaya', '33', 'Kirov'); +INSERT INTO + bd6_employees +VALUES + ( + 1, + 'Radygin', + 'Victor', + '8-(495)-567-7788', + 'vr@e.mail.mephi.ru', + 10, + NULL, + 8000 + ), + ( + 2, + 'Kuprijanov', + 'Dmitrij', + '8-(495)-567-7794', + 'kd@e.mail.mephi.ru', + 60, + 1, + 6534.33 + ), + ( + 3, + 'Ivanov-Skladovskij', + 'Ivan', + '8-(495)-567-7799', + 'ii1@mail.mephi.ru', + 20, + 1, + 4404.14 + ), + ( + 4, + 'Petrov', + 'Petr', + '8-(495)-567-7794', + 'petrovpetr@m.gmail.ru', + 60, + 2, + 3456.43 + ), + ( + 5, + 'kozlov', + 'Konstantin', + '8-(495)-567-7794', + 'kkozlov@mephi.ru', + 60, + 2, + 2300 + ), + ( + 6, + 'Abramov', + 'Abram', + '8-(495)-567-7794', + 'abramova@k75.mephi.ru', + 60, + 2, + 2200.11 + ), + ( + 7, + 'IvanovпїЅ-SkladovskпїЅya-Petrova', + 'Ivanka', + '8-(495)-567-7794', + 'ii2@mail.mephi.ru', + 60, + 4, + 3756.33 + ), + ( + 8, + 'Petrov', + 'Ivan', + '8-(495)-567-7799', + 'petrovivan@m.gmail.ru', + 20, + 3, + 4850 + ), + ( + 9, + 'kozlov', + 'Ivan', + '8-(495)-567-7799', + 'ikozlov@mephi.ru', + 20, + 3, + 3460 + ), + ( + 10, + 'Abramov', + 'Moisej', + '8-(495)-567-7794', + 'abramovm@k75.mephi.ru', + 60, + 4, + 2345 + ), + ( + 11, + 'Petrov', + 'Alex', + '8-(495)-567-7799', + 'petroval@m.gmail.ru', + 20, + 3, + 2465 + ), + ( + 12, + 'kozlov', + 'Maxim', + '8-(495)-567-7799', + 'mkozlov@mephi.ru', + 20, + 3, + 2788 + ), + ( + 13, + 'Abramov', + 'Isyaslav', + '8-(495)-567-7738', + 'abramovi@k75.mephi.ru', + 30, + 1, + 6500 + ); \ No newline at end of file diff --git a/Lab/Lab#6/lab6_done.sql b/Lab/Lab#6/lab6_done.sql index bbce025..af2a394 100644 --- a/Lab/Lab#6/lab6_done.sql +++ b/Lab/Lab#6/lab6_done.sql @@ -9,7 +9,7 @@ b) Напишите программу на языке PL/SQL, печатающ и имя сотрудника с идентификатором 1 и всех его подчинённых, как прямых, так и подчинённых более низкого ранга. */ -CREATE OR REPLACE PROCEDURE department_names() AS +CREATE OR REPLACE PROCEDURE department_names() AS $$ DECLARE d_attrs RECORD; BEGIN @@ -25,7 +25,7 @@ SELECT * FROM tmp LOOP RAISE INFO ' % % ', d_attrs.first_name, d_attrs.last_name; END LOOP; -END LANGUAGE plpgsql; +END $$ LANGUAGE plpgsql; CALL department_names(); @@ -39,7 +39,7 @@ employees в порядке возрастания заработной плат увеличивается на остаток от округления, полученный от предыдущего сотрудника, а затем округляется до сотен в меньшую сторону. */ -CREATE OR REPLACE PROCEDURE print_employees() RETURNS VOID AS $$ +CREATE OR REPLACE PROCEDURE print_employees() AS $$ DECLARE current_salary INTEGER; m_salary INTEGER; @@ -64,7 +64,7 @@ mod_salary := current_salary - m_salary; END LOOP; END $$ LANGUAGE plpgsql; -SELECT print_employees(); +CALL print_employees(); -- Task 3 -- /* Напишите программу на языке PL/SQL, удаляющую 10 сотрудников с @@ -116,7 +116,7 @@ DECLARE d_attrs RECORD; BEGIN FOR d_attrs IN WITH RECURSIVE tmp AS ( - SELECT 1+i5 AS f1, 2+i5 AS f2, 3+i5 AS f3, 4+i5 AS f4,5+i*5 AS f5 + SELECT 1+i*5 AS f1, 2+i*5 AS f2, 3+i*5 AS f3, 4+i*5 AS f4,5+i*5 AS f5 FROM generate_series(0,199) i) SELECT * FROM tmp