Esercitazioni con il Bright Star Catalog
--
-- di seguito il prompt "mysql>" viene omesso per semplificare il taglia-e-incolla
--
-- Ci posizioniamo del database "opus2017"
use opus2017;
-- Facciamo pratica con il catalogo "Bright Stars Catalogue"
-- Se non avete il catalogo nel DB "opus2017", i file SQL sono disponibili da (tasto destro per scaricare)
-- http://ross.iasfbo.inaf.it/opusfacere/dati/bsc.sql e
--
-- La descrizione delle colonne e' QUI
-- Quindi lo carichiamo nel database facendo attenzione di dare il nome completo, ad es.
source c:\dati_opus\bsc.sql
-- Vediamo come e' fatta il catalogo (tabella) bsc
describe bsc;
-- Contiamo il numero di righe (quindi di stelle) presenti nel catalogo
select count(*) from bsc;
-- Facciamo pratica con query di tipo SELECT, query "informative" e creazione di indici
-- MIN(), MAX(), AVG(), ROUND(), ...
--
-- Notare che non ha importanza se il carattere e' maiuscolo o minuscolo
-- Magnitudine minima, massima e media di tutte le stelle del catalogo
select MIN(vmag), MAX(vmag), AVG(vmag) from bsc;
-- Nome e magnitudine delle 10 stelle piu' brillanti
select name, vmag from bsc order by vmag asc limit 10;
-- Contiamo le stelle che hanno un nome (il campo nome e' vuoto o NULL - cioe' indefinito)
select count(*) from bsc where name is not null and name != ' ';
-- quindi quelle che NON hanno un nome
select count(*) from bsc where name is null or name = ' ';
-- Creiamo una nuova tabella "prova" con 4 colonne lette da bsc - solo le prime 100 stelle
create table prova select name, ra, de, vmag from bsc limit 100;
-- Vediamo...
describe prova;
select * from prova limit 10;
-- La stella piu' brillante in questa tabella
select * from prova order by vmag asc limit 1;
-- Cancelliamo
drop table prova;
-- Ricreiamo la tabella prova scrivendoci solo le stelle dell'emisfero Nord e che hanno magnitudine massimo 3
-- Notare che la colonna "decd" contiene la declinazione in frazioni di grado (quindi va da -90 a + 90 gradi)
create table prova select * from bsc where decd > 0 and vmag < 3;
-- Sapendo che la stella polare ha declinazione vicino ai 90 gradi, cerchiamola intorno a quel valore (88 - 90 gradi)
select * from prova where decd between 88 and 90;
-- Vediamo quali sono le stelle vicino al piano della Galassia (latitudine + o - 2 gradi)
select * from prova where glat between -2 and 2;
-- Cancelliamo gli oggetti con magnitudine inferiore a 1 - prima vediamo quanti sono
select count(*) from prova where vmag < 1
delete from prova where vmag < 1;
-- mettiamo artificialmente a 0 la magnitudine di tutte le stelle piu' vicine di 10 gradi dal Polo Nord
update prova set vmag=6 where decd > 0;
-- altre query a piacere ...
-- cancelliamo la tabella
drop table prova;
-- Creiamo una tabella selezionando solo le stelle con una parallassi misurata, quindi > 0
-- teniamo solo coordinate in gradi, magnitudine e parallassi
create table parallassi select rad, decd, vmag, parallax from bsc where parallax > 0;
-- Vediamo che abbiamo selezionato 3099 stelle
-- Adesso proviamo a vedere se magnitudine e parallassi sono collegate (in media)
-- Selezioniamo gruppi di stelle in modo crescente
-- (le magnitudini non diminuiscono linearmente con la distanza!)
-- Notare l'uso di "sub-query", tra parentesi, e dell'istruzione "limit" con 1 o 2 parametri (n_skip, n_read)
-- il primo numero indica il numero di righe da saltare, il secondo quelle da leggere.
-- Quindi nel secondo caso qui sotto chiedo di saltare 100 righe e leggere le successive 500.
-- leggiamo le 100 stelle piu' brillanti
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 100) p;
-- risultato: 1.902800 | 0.0571600
-- leggiamo le successive 500 stelle piu' brillanti
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 100, 500) p;
-- risultato: 3.725460 | 0.0327700
-- leggiamo le successive 2500 stelle
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 500, 2500) p;
-- risultato: 5.349928 | 0.0244048
-- Si nota quindi che la parallassi "in media" diminuisce al crescere del valore della magnitudine
-- Cancelliamo tutte le stelle con parallassi < 0.01
delete from parallassi where parallax < 0.01;
-- Continuare a piacere con altre query, anche creando nuove tabelle di prova ...
-- Cancelliamo
drop table parallassi;