Көрүнүштөр: сакталган суроо-талаптар виртуалдык таблица катары
Суроо-талапка ат бериңиз жана аны таблица сыяктуу кайра колдонуңуз
Негизги идея: Көрүнүш (view) — бул сакталган
SELECT оператору, ага таблицадай эле кайрылса болот. Ал өз маалыматын сактабайт: ар жолу окуганда MySQL сакталган суроо-талапты чыныгы (базалык) таблицаларга аткарып, жаңы натыйжаны кайтарат. Көрүнүштөр татаал бириктирүүнү же чыпканы бир түшүнүктүү аттын алдына топтоого, колдонуучуга керектүү мамычаларды жана саптарды гана көрсөтүүгө, кайталанган логиканы бир жерде кармоого мүмкүндүк берет.
Теманын аягында сиз:
CREATE VIEW ... AS SELECT ...аркылуу көрүнүш түзө аласыз,- көрүнүш бириктирүүлөрдү жана чыпкаларды жашырып жетүүнү кантип жеңилдетээрин түшүндүрө аласыз,
- көрүнүштү жетүүнү коргоо үчүн, мамычалардын жана саптардын бир бөлүгүн гана көрсөтүп колдоно аласыз,
- жаңыртылуучу көрүнүштү окуу үчүн гана көрүнүштөн айырмалай аласыз,
SELECT *жана базалык таблицалардын өзгөрүшү сыяктуу коштоо тузактарын алдын ала биле аласыз.
1. Биздин үлгү схема
Төмөнкү бардык суроо-талаптар бир кичинекей дүкөн базасына аткарылат: customers таблицасы жана customer_id аркылуу байланышкан orders таблицасы. Аны бир жолу түзүңүз, биз анын үстүнө көрүнүштөрдү курабыз.
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50),
city VARCHAR(50),
vip BOOLEAN
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
amount DECIMAL(8,2),
status VARCHAR(20),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
INSERT INTO customers VALUES
(1, 'Ava', 'London', TRUE),
(2, 'Ben', 'Paris', FALSE),
(3, 'Chen', 'London', TRUE),
(4, 'Dina', 'Berlin', FALSE);
INSERT INTO orders VALUES
(101, 1, '2026-01-05', 120.00, 'shipped'),
(102, 2, '2026-01-06', 45.50, 'shipped'),
(103, 1, '2026-02-11', 300.00, 'pending'),
(104, 3, '2026-02-14', 80.00, 'cancelled'),
(105, 3, '2026-03-02', 210.00, 'shipped'),
(106, 4, '2026-03-08', 15.00, 'shipped');
Төрт кардар, алты буйрутма. Бул маалыматты эсиңизде тутуңуз — төмөнкү натыйжа таблицалары так ушундан алынган.