Skip to content

Instantly share code, notes, and snippets.

@Captain1965
Created March 19, 2022 05:12
Show Gist options
  • Save Captain1965/1dd3103d13ce0d6b9ef0ae99655e559a to your computer and use it in GitHub Desktop.
Save Captain1965/1dd3103d13ce0d6b9ef0ae99655e559a to your computer and use it in GitHub Desktop.
task_from_sql
#Создайте базу данных test_guru
CREATE DATA BASE test_guru;
#Создайте таблицу categories с атрибутом title
test_guru=# CREATE TABLE categories(
test_guru=(# id serial PRIMARY KEY,
test_guru=(# title varchar(50)
test_guru=(# );
CREATE TABLE
#Создайте таблицу tests в которой должны быть атрибуты title, level,
#внешний ключ к таблице categories
test_guru=# CREATE TABLE tests(
test_guru(# id serial PRIMARY KEY,
test_guru(# title varchar(50),
test_guru(# level integer,
test_guru(# id_categories integer
test_guru(# );
CREATE TABLE
#Создайте аблицу questions в которой должен быть атрибут body
#и внешний ключ к таблице tests
test_guru=# CREATE TABLE questions(
test_guru(# id serial PRIMARY KEY,
test_guru(# body text,
test_guru(# id_tests integer
test_guru(# );
CREATE TABLE
#Создайте 3 строки в таблице categories
test_guru=# INSERT INTO categories (title) values
test_guru-# ('Frontend'),
test_guru-# ('Backend'),
test_guru-# ('Development')
test_guru-# ;
INSERT 0 3
#Создайте 5 строк в таблице tests (хотя бы 3 из них должны иметь отличное
#от NULL значение в атрибуте внешнего ключа к таблице categories)
test_guru=# INSERT INTO tests (title, level, id_categories) values
test_guru-# ('HTML', 3, 1),
test_guru-# ('Ruby', 5, 2),
test_guru-# ('SQL', 3, 3),
test_guru-# ('C++', 5, 1),
test_guru-# ('C#', 4, 2);
INSERT 0 5
#Создайте 5 строк в таблице questions
test_guru=# INSERT INTO questions (body, id_tests) values
test_guru-# ('Hot key Sublime Text', 4),
test_guru-# ('Object model in Ruby', 2),
test_guru-# ('HTML language', 1),
test_guru-# ('What meen methods to_s ?', 3),
test_guru-# ('What types of variables do you know?', 5);
INSERT 0 5
#Выберите все тесты с уровнем 2
test_guru=# SELECT * FROM tests
test_guru-# WHERE level = 2 ;
id | title | level | id_categories
----+-------+-------+---------------
(0 rows)
##Выберите все тесты с уровнем 3
test_guru=# SELECT * FROM tests
test_guru-# WHERE level = 3
test_guru-# ;
id | title | level | id_categories
----+-------+-------+---------------
1 | HTML | 3 | 1
3 | SQL | 3 | 3
(2 rows)
#Выберите все тесты с уровнем 3 и 5
test_guru=# SELECT * FROM tests
test_guru-# WHERE level = 3 or level = 5;
id | title | level | id_categories
----+-------+-------+---------------
1 | HTML | 3 | 1
2 | Ruby | 5 | 2
3 | SQL | 3 | 3
4 | C++ | 5 | 1
(4 rows)
#Выберите все вопросы для определённого теста
test_guru=# SELECT * FROM questions WHERE id_tests = 5 ;
id | body | id_tests
----+--------------------------------------+----------
5 | What types of variables do you know? | 5
#Обновите атрибуты title и level для строки из таблицы tests с помощью одного запроса
test_guru=# UPDATE tests SET title = 'CSS' , level = 2 WHERE id = 2;
UPDATE 1
test_guru=# SELECT * FROM tests ;
id | title | level | id_categories
----+-------+-------+---------------
1 | HTML | 3 | 1
3 | SQL | 3 | 3
4 | C++ | 5 | 1
5 | C# | 4 | 2
2 | CSS | 2 | 2
(5 rows)
#Удалите все вопросы для конкретного теста с помощью одного запроса
test_guru=# DELETE FROM questions WHERE id_tests = 4;
DELETE 1
test_guru=#
#С помощью JOIN выберите названия всех тестов и названия их категорий
test_guru=# SELECT * FROM tests JOIN categories ON tests.id_categories = categories.id;
id | title | level | id_categories | id | title
----+-------+-------+---------------+----+-------------
1 | HTML | 3 | 1 | 1 | Frontend
3 | SQL | 3 | 3 | 3 | Development
4 | C++ | 5 | 1 | 1 | Frontend
5 | C# | 4 | 2 | 2 | Backend
2 | CSS | 2 | 2 | 2 | Backend
(5 rows)
#С помощью JOIN выберите содержание всех вопросов (атрибут body) и названия связанных с #ними тестов
test_guru=# SELECT * FROM questions JOIN tests ON questions.id_tests = tests.id;
id | body | id_tests | id | title | level | id_categories
----+--------------------------------------+----------+----+-------+-------+---------------
2 | Object model in Ruby | 2 | 2 | CSS | 2 | 2
3 | HTML language | 1 | 1 | HTML | 3 | 1
4 | What meen methods to_s ? | 3 | 3 | SQL | 3 | 3
5 | What types of variables do you know? | 5 | 5 | C# | 4 | 2
(4 rows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment