From 1bf78a390eb39220c7821f01b6e7cbd885d60608 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2019 00:04:59 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=E2=84=961=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson09/task1.sql | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lesson09/task1.sql diff --git a/lesson09/task1.sql b/lesson09/task1.sql new file mode 100644 index 0000000..129797c --- /dev/null +++ b/lesson09/task1.sql @@ -0,0 +1,54 @@ +#Задание№1 +START TRANSACTION; +INSERT INTO sample.users (name, birthday_at, created_at, updated_at) + select u.name, u.birthday_at, u.created_at, u.updated_at + from shop.users as u + where u.id =1; +COMMIT; + +#Задание№2 +use shop; +drop view if exists prod_view; +CREATE VIEW prod_view AS + select p.name as prod_name, c.name as cat_name + from products as p, catalogs as c + where p.catalog_id = c.id; + +#Задание№3 +use shop; +drop table if exists tb_create_at; +CREATE TABLE tb_create_at ( + id SERIAL PRIMARY KEY, + created_at DATETIME +); +INSERT INTO tb_create_at (created_at) VALUES + ('2018-08-01'), + ('2018-08-04'), + ('2018-08-16'), + ('2018-08-17'), + ('2018-08-19'), + ('2018-08-21'), + ('2018-08-22'); + +SELECT `x`.sequence_date, IF(`x`.sequence_date in (select created_at from tb_create_at),1,0) as `flag` + FROM (SELECT DATE_ADD('2018-08-01', INTERVAL `n`.`id` - 1 day) as sequence_date + FROM (SELECT @N := @N +1 AS id + FROM mysql.help_relation , (SELECT @N:=0) dum LIMIT 31) `n` + WHERE DATE_ADD('2018-01-01', INTERVAL `n`.`id` -1 DAY) <= '2018-12-30' ) x; + +#Задание№4 +use shop; +select created_at +into @search_date +from (select * + from tb_create_at as t1 + order by t1.created_at desc + limit 5) as t2 +order by t2.created_at +limit 1; +delete from tb_create_at as tb + where tb.created_at < @search_date; + + + + \ No newline at end of file From 07f2aa5cf0f7424d4070890d27d8a346630a756f Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2019 20:19:18 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson09/task2.sql | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 lesson09/task2.sql diff --git a/lesson09/task2.sql b/lesson09/task2.sql new file mode 100644 index 0000000..45f8b41 --- /dev/null +++ b/lesson09/task2.sql @@ -0,0 +1,50 @@ +#Çàäàíèå ¹1 +use shop; +drop procedure if exists hello; +delimiter // +CREATE PROCEDURE hello () +begin + set @a = HOUR(NOW()); + SELECT case + when (0 <= @a) && (@a < 6) then 'Äîáðîé íî÷è' + when (6 <= @a) && (@a < 12) then 'Äîáðîå óòðî' + when (12 <= @a) && (@a < 18) then 'Äîáðûé äåíü' + when (18 <= @a) && (@a < 24) then 'Äîáðûé âå÷åð' + end as hello; +end// + +call hello(); + + + + +#Çàäàíèå ¹2 +use shop; +drop trigger if exists check_update_products; +delimiter // +CREATE TRIGGER check_update_products BEFORE UPDATE ON products +FOR EACH ROW BEGIN + IF (NEW.name is null and NEW.description is null or + old.name is null and NEW.description is null or + NEW.name is null and old.description is null) THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Update canceled'; + END IF; +END// +delimiter ; + +UPDATE products as p SET p.description="wd", p.name="wqd" +WHERE p.id=1; + +drop trigger if exists check_insert_products; +delimiter // +CREATE TRIGGER check_insert_products BEFORE insert ON products +FOR EACH ROW BEGIN + IF (NEW.name is null and NEW.description is null) THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Insert canceled'; + END IF; +END// + +INSERT INTO products + (price, catalog_id) +VALUES + (7890.00, 1); From d66d364ea66f70985341f82c4347da5eaa6c777a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2019 20:42:05 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=201,3=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson09/{task2.sql => task3.sql} | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) rename lesson09/{task2.sql => task3.sql} (77%) diff --git a/lesson09/task2.sql b/lesson09/task3.sql similarity index 77% rename from lesson09/task2.sql rename to lesson09/task3.sql index 45f8b41..01653f9 100644 --- a/lesson09/task2.sql +++ b/lesson09/task3.sql @@ -18,6 +18,8 @@ call hello(); + + #Çàäàíèå ¹2 use shop; drop trigger if exists check_update_products; @@ -48,3 +50,32 @@ INSERT INTO products (price, catalog_id) VALUES (7890.00, 1); + + + + +#Çàäàíèå ¹2 +use shop; +drop procedure if exists fib; +delimiter // +CREATE PROCEDURE fib(n INT) +begin + DECLARE m INT default 0; + DECLARE k INT DEFAULT 1; + DECLARE i INT; + DECLARE tmp INT; + + SET m=0; + SET k=1; + SET i=1; + + WHILE (i<=n) DO + SET tmp=m+k; + SET m=k; + SET k=tmp; + SET i=i+1; + END WHILE; + select m; + end// + + call fib(10) From a7e2fcad2ac4650d3a1ddff9473133a63dd7d58f Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2019 21:27:07 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson09/task2.sql | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lesson09/task2.sql diff --git a/lesson09/task2.sql b/lesson09/task2.sql new file mode 100644 index 0000000..8ab45c8 --- /dev/null +++ b/lesson09/task2.sql @@ -0,0 +1,42 @@ +#Задание â„–1 +drop user if exists 'shop'@'localhost'; +drop user if exists 'shop_read'@'localhost'; +CREATE USER 'shop'@'localhost' IDENTIFIED WITH sha256_password BY 'pass'; +CREATE USER 'shop_read'@'localhost' IDENTIFIED WITH sha256_password BY 'pass'; + +GRANT ALL ON shop.* TO 'shop'@'localhost'; +GRANT SELECT ON shop.* TO 'shop_read'@'localhost'; + + + + +#Задание â„–2 +use shop; +drop table if exists accounts; +CREATE TABLE accounts ( + id SERIAL PRIMARY KEY, + name VARCHAR(255), + `password` VARCHAR(255) +) ; + +INSERT INTO accounts + (name, `password`) +VALUES + ('alex', 'pass1'), + ('john', 'pass2'), + ('ivan', 'pass3'); + + +drop view if exists accounts_view; +CREATE VIEW accounts_view AS + select * + from accounts; + +drop user if exists 'user_read'@'localhost'; +CREATE USER 'user_read'@'localhost' IDENTIFIED WITH sha256_password BY 'pass'; + +GRANT select ON shop.accounts_view TO 'user_read'@'localhost'; + + + + \ No newline at end of file From bf36a55b4dd478121b369973b4df97d60fbb13f3 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2019 21:30:21 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A1=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20UTF8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson09/task3.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lesson09/task3.sql b/lesson09/task3.sql index 01653f9..6527983 100644 --- a/lesson09/task3.sql +++ b/lesson09/task3.sql @@ -1,4 +1,4 @@ -#Çàäàíèå ¹1 +#Задание â„–1 use shop; drop procedure if exists hello; delimiter // @@ -6,10 +6,10 @@ CREATE PROCEDURE hello () begin set @a = HOUR(NOW()); SELECT case - when (0 <= @a) && (@a < 6) then 'Äîáðîé íî÷è' - when (6 <= @a) && (@a < 12) then 'Äîáðîå óòðî' - when (12 <= @a) && (@a < 18) then 'Äîáðûé äåíü' - when (18 <= @a) && (@a < 24) then 'Äîáðûé âå÷åð' + when (0 <= @a) && (@a < 6) then 'Доброй ночи' + when (6 <= @a) && (@a < 12) then 'Доброе утро' + when (12 <= @a) && (@a < 18) then 'Добрый день' + when (18 <= @a) && (@a < 24) then 'Добрый вечер' end as hello; end// @@ -20,7 +20,7 @@ call hello(); -#Çàäàíèå ¹2 +#Задание â„–2 use shop; drop trigger if exists check_update_products; delimiter // @@ -54,7 +54,7 @@ VALUES -#Çàäàíèå ¹2 +#Задание â„–2 use shop; drop procedure if exists fib; delimiter //