Diferència entre revisions de la pàgina «SQL Tutorial: vistes»
(Es crea la pàgina amb «=Introducció= *https://www.sqltutorial.org/sql-views Les vistes serveixen per donar un nom a una consulta sql que pot ser més o menys complexa. =Tutorial= Per crear...».) |
|||
| Línia 60: | Línia 60: | ||
Té l'estructura de id_mun, municipis, habitants, i només de Saragossa | Té l'estructura de id_mun, municipis, habitants, i només de Saragossa | ||
| − | + | <pre> | |
| + | create view municipis_zaragoza as | ||
| + | select id_mun, municipi, habitants from municipis m inner join provincies p | ||
| + | on m.id_prov=p.id_prov | ||
| + | where provincia='Zaragoza'; | ||
| + | |||
| + | select * from municipis_zaragoza; | ||
| + | |||
| + | select * from municipis_zaragoza where habitants>=20000; | ||
| + | |||
| + | select * from municipis_zaragoza where superficie>=20000; | ||
| + | |||
| + | '7903', 'Calatayud', '20092' | ||
| + | '8128', 'Zaragoza', '681877' | ||
| + | |||
| + | Dóna error perquè en la vista municipis_superficie no està definit el camp superficie. | ||
| + | </pre> | ||
| + | |||
===vista 2: municipis_catalunya=== | ===vista 2: municipis_catalunya=== | ||
Llistat dels municipis de Catalunya, ordenats per número d'habitants (id_mun, cod_ine, municipi, habitants) | Llistat dels municipis de Catalunya, ordenats per número d'habitants (id_mun, cod_ine, municipi, habitants) | ||
Revisió del 16:12, 26 gen 2022
Contingut
Introducció
Les vistes serveixen per donar un nom a una consulta sql que pot ser més o menys complexa.
Tutorial
Per crear una vista:
CREATE VIEW view_name AS SELECT-statement
Creem una vista a partir d'una consulta que és un INNER JOIN sobre employees i departments:
CREATE VIEW employee_contacts AS
SELECT
first_name, last_name, email, phone_number, department_name
FROM
employees e
INNER JOIN
departments d ON d.department_id = e.department_id
ORDER BY first_name;
I un cop tenim la vista, la podem utilitzar com si fos una consulta normal i corrent:
SELECT * FROM employee_contacts;
i sobre aquesta consulta podem aplicar filtres com fem amb una consulta:
SELECT job, MIN(compensation), MAX(compensation), AVG(compensation) FROM payroll WHERE job LIKE 'A%' GROUP BY job;
NOTA: el GROUP BY encara no l'hem vist. El veurem la setmana vinent.
Podem redefinir la vista d'una manera molt senzilla:
CREATE OR REPLACE view_name AS SELECT-statement;
Per exemple:
CREATE OR REPLACE VIEW payroll (first_name , last_name , job , department , salary) AS SELECT first_name, last_name, job_title, department_name, salary FROM employees e INNER JOIN jobs j ON j.job_id = e.job_id INNER JOIN departments d ON d.department_id = e.department_id ORDER BY first_name;
SELECT * FROM payroll;
Ara tenim 5 columnes en comptes de 4.
Per eliminar les vistes és molt fàcil:
DROP VIEW payroll;
Vistes sobre la base de dades de municipis
vista 1: municipis_zaragoza
Té l'estructura de id_mun, municipis, habitants, i només de Saragossa
create view municipis_zaragoza as select id_mun, municipi, habitants from municipis m inner join provincies p on m.id_prov=p.id_prov where provincia='Zaragoza'; select * from municipis_zaragoza; select * from municipis_zaragoza where habitants>=20000; select * from municipis_zaragoza where superficie>=20000; '7903', 'Calatayud', '20092' '8128', 'Zaragoza', '681877' Dóna error perquè en la vista municipis_superficie no està definit el camp superficie.
vista 2: municipis_catalunya
Llistat dels municipis de Catalunya, ordenats per número d'habitants (id_mun, cod_ine, municipi, habitants)
(TBD)
vista 3: comunitats_provincies
Llistat de comunitats i provincies, amb la següent informació: id_com, comunitat, id_prov, provincia
(TBD)
vista 4: municipis_a
Municipis que comencin per A i que la seva província també comenci per A
(TBD)
vista 5: municipis_grans
Municipis que la seva superfície sigui com a mínim el doble que la mitjana de la superfície dels municipis.
(TBD)
vista 6: num_municipis_per_prov
Creem la vista num_municipis_per_prov amb dues columnes: província i número de municipis (necessitem fer GROUP BY)
(TBD)