-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLesson7_homework
121 lines (97 loc) · 3.16 KB
/
Lesson7_homework
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
USE shop;
/* Составьте список пользователей users, которые осуществили хотя бы один заказ orders в
интернет магазине.*/
DROP TABLE IF EXISTS users;
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) COMMENT 'Имя покупателя',
birthday_at DATE COMMENT 'Дата рождения',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) -- 'Покупатели';
DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INT UNSIGNED,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY index_of_users_id(user_id)
) -- 'Заказы';
INSERT INTO
orders (user_id)
VALUES
(2),
(5);
SELECT * FROM orders;
SELECT * FROM users;
SELECT
id, name
FROM
users
WHERE
id IN (SELECT user_id FROM orders);
/* Выведите список товаров products и разделов catalogs, который соответствует товару.*/
DROP TABLE IF EXISTS catalogs;
CREATE TABLE catalogs (
id SERIAL PRIMARY KEY,
name VARCHAR(255) COMMENT 'Название раздела'
) -- 'Разделы интернет-магазина';
DROP TABLE IF EXISTS products;
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(255) COMMENT 'Название',
description Text COMMENT 'Описание',
price DECIMAL (11,2) COMMENT 'Цена',
catalog_id INT UNSIGNED,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY index_of_catalog_id(catalog_id)
) -- 'Товарные позиции';
SELECT * FROM catalogs;
SELECT * FROM products;
SELECT catalogs.name, products.name, products.description, products.price
FROM
products AS products
JOIN
catalogs AS catalogs
ON
products.catalog_id = catalogs.id;
/* Пусть имеется таблица рейсов flights (id, from, to) и таблица городов cities (label,
name). Поля from, to и label содержат английские названия городов, поле name — русское.
Выведите список рейсов flights с русскими названиями городов.*/
CREATE DATABASE Airport;
USE Airport;
DROP TABLE IF EXISTS flights;
CREATE TABLE flights (
id SERIAL PRIMARY KEY,
c_from VARCHAR(100),
c_to VARCHAR(100)
)
SELECT * FROM flights;
INSERT INTO
flights (c_from, c_to)
VALUES
('moscow', 'omsk'),
('novgorod', 'kazan'),
('irkutsk', 'moscow'),
('omsk', 'irkutsk'),
('moscow', 'kazan');
DROP TABLE IF EXISTS sities;
CREATE TABLE sities (
label VARCHAR(50) PRIMARY KEY,
name VARCHAR(100) COMMENT 'Город'
)
INSERT INTO
sities (label, name)
VALUES
('moscow', 'Москва'),
('novgorod', 'Новгород'),
('irkutsk', 'Иркутск'),
('omsk', 'Омск'),
('kazan', 'Казань');
SELECT
id,
(SELECT name FROM sities WHERE label = flights.c_from),
(SELECT name FROM sities WHERE label = flights.c_to)
FROM
flights;